[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    Re: branches/KDE/4.2/kdelibs/plasma
From:       Alexis_Ménard <menard () kde ! org>
Date:       2009-06-01 10:45:03
Message-ID: 81941aea0906010345n15cd0b90g29d3aa7a652c4117 () mail ! gmail ! com
[Download RAW message or body]

PlasmaBoard is in playground...Don't change that behavior in 4.2 in case it
breaks some stuff....

Plasmaboard will be available with 4.3 and has very little chance to run
against 4.2.x kdelibs.

2009/6/1 Björn Ruberg <bjoern@ruberg-wegener.de>

> SVN commit 976223 by ruberg:
>
> Backported this from 4.3.
> This fix makes it possible to have a popup that does not steal window focus
> when opened or used.
> Therefor you need to set Qt::X11BypassWindowManagerHint on the widget shown
> in the popup. This does
> NOT affect widgets that do not set the Flag. This fix is needed vor the
> virtual keyboard plasmoid "plasmaboard",
> which can only work if the focus is untouched when being opened
>
>
>
>  M  +12 -5     popupapplet.cpp
>  M  +3 -0      popupapplet.h
>
>
> --- branches/KDE/4.2/kdelibs/plasma/popupapplet.cpp #976222:976223
> @@ -275,11 +275,7 @@
>                 //stuff out of your Dialog (extenders). Monitor
> WindowDeactivate events so we can
>                 //emulate the same kind of behavior as Qt::Popup (close
> when you click somewhere
>                 //else.
> -                dialog->setWindowFlags(Qt::FramelessWindowHint |
> Qt::WindowStaysOnTopHint);
> -                updateDialogFlags();
> -                KWindowSystem::setState(dialog->winId(), NET::SkipTaskbar
> | NET::SkipPager);
> -                dialog->installEventFilter(q);
> -
> +
>                 q->setMinimumSize(QSize(0, 0));
>                 if (gWidget) {
>                     Corona *corona = qobject_cast<Corona
> *>(gWidget->scene());
> @@ -289,14 +285,25 @@
>                         corona->addOffscreenWidget(gWidget);
>                         dialog->setGraphicsWidget(gWidget);
>                     }
> +
> +                   dialog->setWindowFlags(Qt::FramelessWindowHint |
> Qt::WindowStaysOnTopHint | (gWidget->windowFlags() &
> Qt::X11BypassWindowManagerHint));
>                 } else if (qWidget) {
>                     QVBoxLayout *l_layout = new QVBoxLayout(dialog);
>                     l_layout->setSpacing(0);
>                     l_layout->setMargin(0);
>                     l_layout->addWidget(qWidget);
>                     dialog->adjustSize();
> +
> +                   dialog->setWindowFlags(Qt::FramelessWindowHint |
> Qt::WindowStaysOnTopHint | (qWidget->windowFlags() &
> Qt::X11BypassWindowManagerHint));
>                 }
> +               else {
> +                    dialog->setWindowFlags(Qt::FramelessWindowHint |
> Qt::WindowStaysOnTopHint);
> +               }
> +                updateDialogFlags();
> +                KWindowSystem::setState(dialog->winId(), NET::SkipTaskbar
> | NET::SkipPager);
> +                dialog->installEventFilter(q);
>
> +
>                 QObject::connect(dialog, SIGNAL(dialogResized()), q,
> SLOT(dialogSizeChanged()));
>                 QObject::connect(dialog, SIGNAL(dialogVisible(bool)), q,
> SLOT(dialogStatusChanged(bool)));
>             }
> --- branches/KDE/4.2/kdelibs/plasma/popupapplet.h #976222:976223
> @@ -44,6 +44,9 @@
>  *
>  * If you use this class as a base class for your extender using applet,
> the extender will
>  * automatically be used for the popup; reimplementing graphicsWidget() is
> unnecessary in this case.
> + *
> + * If you need a popup that does not steal window focus when openend or
> used, set window flag
> + * Qt::X11BypassWindowManagerHint the widget returned by widget() or
> graphicsWidget().
>  */
>
>  class PLASMA_EXPORT PopupApplet : public Plasma::Applet
>

[Attachment #3 (text/html)]

PlasmaBoard is in playground...Don&#39;t change that behavior in 4.2 in case it \
breaks some stuff....<br><br>Plasmaboard will be available with 4.3 and has very \
little chance to run against 4.2.x kdelibs.<br><br><div class="gmail_quote"> 2009/6/1 \
Björn Ruberg <span dir="ltr">&lt;<a \
href="mailto:bjoern@ruberg-wegener.de">bjoern@ruberg-wegener.de</a>&gt;</span><br><blockquote \
class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt \
0pt 0.8ex; padding-left: 1ex;"> SVN commit 976223 by ruberg:<br>
<br>
Backported this from 4.3.<br>
This fix makes it possible to have a popup that does not steal window focus when \
opened or used.<br> Therefor you need to set Qt::X11BypassWindowManagerHint on the \
widget shown in the popup. This does<br> NOT affect widgets that do not set the Flag. \
This fix is needed vor the virtual keyboard plasmoid &quot;plasmaboard&quot;,<br> \
which can only work if the focus is untouched when being opened<br> <br>
<br>
<br>
 M  +12 -5     popupapplet.cpp<br>
 M  +3 -0      popupapplet.h<br>
<br>
<br>
--- branches/KDE/4.2/kdelibs/plasma/popupapplet.cpp #976222:976223<br>
@@ -275,11 +275,7 @@<br>
                 //stuff out of your Dialog (extenders). Monitor WindowDeactivate \
                events so we can<br>
                 //emulate the same kind of behavior as Qt::Popup (close when you \
click somewhere<br>  //else.<br>
-                dialog-&gt;setWindowFlags(Qt::FramelessWindowHint | \
                Qt::WindowStaysOnTopHint);<br>
-                updateDialogFlags();<br>
-                KWindowSystem::setState(dialog-&gt;winId(), NET::SkipTaskbar | \
                NET::SkipPager);<br>
-                dialog-&gt;installEventFilter(q);<br>
-<br>
+<br>
                 q-&gt;setMinimumSize(QSize(0, 0));<br>
                 if (gWidget) {<br>
                     Corona *corona = qobject_cast&lt;Corona \
*&gt;(gWidget-&gt;scene());<br> @@ -289,14 +285,25 @@<br>
                         corona-&gt;addOffscreenWidget(gWidget);<br>
                         dialog-&gt;setGraphicsWidget(gWidget);<br>
                     }<br>
+<br>
+                   dialog-&gt;setWindowFlags(Qt::FramelessWindowHint | \
Qt::WindowStaysOnTopHint | (gWidget-&gt;windowFlags() &amp; \
Qt::X11BypassWindowManagerHint));<br>  } else if (qWidget) {<br>
                     QVBoxLayout *l_layout = new QVBoxLayout(dialog);<br>
                     l_layout-&gt;setSpacing(0);<br>
                     l_layout-&gt;setMargin(0);<br>
                     l_layout-&gt;addWidget(qWidget);<br>
                     dialog-&gt;adjustSize();<br>
+<br>
+                   dialog-&gt;setWindowFlags(Qt::FramelessWindowHint | \
Qt::WindowStaysOnTopHint | (qWidget-&gt;windowFlags() &amp; \
Qt::X11BypassWindowManagerHint));<br>  }<br>
+               else {<br>
+                    dialog-&gt;setWindowFlags(Qt::FramelessWindowHint | \
Qt::WindowStaysOnTopHint);<br> +               }<br>
+                updateDialogFlags();<br>
+                KWindowSystem::setState(dialog-&gt;winId(), NET::SkipTaskbar | \
NET::SkipPager);<br> +                dialog-&gt;installEventFilter(q);<br>
<br>
+<br>
                 QObject::connect(dialog, SIGNAL(dialogResized()), q, \
                SLOT(dialogSizeChanged()));<br>
                 QObject::connect(dialog, SIGNAL(dialogVisible(bool)), q, \
SLOT(dialogStatusChanged(bool)));<br>  }<br>
--- branches/KDE/4.2/kdelibs/plasma/popupapplet.h #976222:976223<br>
@@ -44,6 +44,9 @@<br>
  *<br>
  * If you use this class as a base class for your extender using applet, the \
                extender will<br>
  * automatically be used for the popup; reimplementing graphicsWidget() is \
unnecessary in this case.<br> + *<br>
+ * If you need a popup that does not steal window focus when openend or used, set \
window flag<br> + * Qt::X11BypassWindowManagerHint the widget returned by widget() or \
                graphicsWidget().<br>
  */<br>
<br>
 class PLASMA_EXPORT PopupApplet : public Plasma::Applet<br>
</blockquote></div><br>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic