Review Request: Fix KWindowSystem::compositingChanged signal

Xuetian Weng wengxt at gmail.com
Tue Jan 8 23:51:28 GMT 2013



> On Jan. 8, 2013, 11:15 p.m., Xuetian Weng wrote:
> > after I apply the patch, I notice that in some random unknnow case KWindowSystem will emit the signal, while KSelectionOwner is not. (And I think KSelectionOwner is correct since I didn't do anything to kwin), and I notice some strange plasma theme change caused by this.
> > 
> > Trying to find you why..
> 
> Thomas Lübking wrote:
>     The XFixesSelectionNotify event fires one every selection owner event, usually it'll be the cnp system (when you eg. mark text)
>     
>     The problem should ideally be fixed in Qt instead of working around it in KDE.
>     Untested patch:
>     
>     
>     diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
>     index 3631f1d..644f0ad 100644
>     --- a/src/gui/kernel/qapplication_x11.cpp
>     +++ b/src/gui/kernel/qapplication_x11.cpp
>     @@ -536,6 +536,7 @@ struct qt_xfixes_selection_event_data
>      {
>          // which selection to filter out.
>          Atom selection;
>     +    Window window;
>      };
>      
>      #if defined(Q_C_CALLBACKS)
>     @@ -548,7 +549,7 @@ static Bool qt_xfixes_scanner(Display*, XEvent *event, XPointer arg)
>              reinterpret_cast<qt_xfixes_selection_event_data*>(arg);
>          if (event->type == X11->xfixes_eventbase + XFixesSelectionNotify) {
>              XFixesSelectionNotifyEvent *xfixes_event = reinterpret_cast<XFixesSelectionNotifyEvent*>(event);
>     -        if (xfixes_event->selection == data->selection)
>     +        if (xfixes_event->selection == data->selection && xfixes_event->window == data->window)
>                  return true;
>          }
>          return false;
>     @@ -3462,6 +3463,7 @@ int QApplication::x11ProcessEvent(XEvent* event)
>              // we don't want to handle old SelectionNotify events.
>              qt_xfixes_selection_event_data xfixes_event;
>              xfixes_event.selection = req->selection;
>     +        xfixes_event.window = req->window;
>              for (XEvent ev;;) {
>                  if (!XCheckIfEvent(X11->display, &ev, &qt_xfixes_scanner, (XPointer)&xfixes_event))
>                      break;
>

but I don't see in near future there will be Qt 4.8.5 nor distro can pick up this patch..

actually this can cause serious problem, clipboard is so widely used.

I guess if would be better to workaround it for now, I already notice some strange theme change, since clipboard is being initialized by KApplication by default..


- Xuetian


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/107983/#review25012
-----------------------------------------------------------


On Jan. 5, 2013, 5:08 p.m., Thomas Lübking wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/107983/
> -----------------------------------------------------------
> 
> (Updated Jan. 5, 2013, 5:08 p.m.)
> 
> 
> Review request for kdelibs, kwin, Plasma, Aaron J. Seigo, Marco Martin, Martin Gräßlin, and Fredrik Höglund.
> 
> 
> Description
> -------
> 
> It works fine here (tested so far KWindowSystem signal, KSelectionWatcher only with kwin) with kwin (shift+alt+f12), xcompmgr, compiz & "metacity -c" and e17.
> Didn't try xfce nor mutter.
> 
> Technically:
> I do not at all understand why KWindowSystem is *not* watching the root window - KSelectionOwner for one is sending events to the root and this also seems the case for all other WMs (at least everything now starts to cause the signal to be emitted)
> 
> The KSelectionWatcher failure seems to be kwin specific (wrote me a cleaner testcase), there'll be some X11 event processing on top that eats away the client messages.
> So this one can be scratched from the patch, the KWindowSystem issue remains.
> 
> 
> This addresses bug 179042.
>     http://bugs.kde.org/show_bug.cgi?id=179042
> 
> 
> Diffs
> -----
> 
>   kdeui/windowmanagement/kwindowsystem_x11.cpp f9b3cc1 
> 
> Diff: http://git.reviewboard.kde.org/r/107983/diff/
> 
> 
> Testing
> -------
> 
> see summary
> 
> 
> Thanks,
> 
> Thomas Lübking
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20130108/54392bb9/attachment.htm>
-------------- next part --------------
_______________________________________________
kwin mailing list
kwin at kde.org
https://mail.kde.org/mailman/listinfo/kwin


More information about the kde-core-devel mailing list