Review Request: KWindowSystemEventFilter: methods for installing global event filters

Michael Leupold lemma at confuego.org
Mon Jun 21 12:24:25 BST 2010



> On 2010-05-21 16:18:46, Lubos Lunak wrote:
> > I think the patch is generally ok, but, as far as I can say, Qt's "bool myEventFilter(void *message);" is brain-damaged undocumented API, and the code in KWindowSystemEventFilterPrivate::filterEvent() seems somewhat confused as a result. Is it actually documented somewhere that the void* the filter receives is in fact XEvent* on X11, and is it guaranteed to always be XEvent*? I cannot find anything. If it is guaranteed, you can remove all the "// only process XEvents.", "// check if void *message is a NSEvent*" etc. parts, since they are not necessary, if it's always the expected code. If it is not guaranteed, this whole patch cannot work, since those "checks" if the void* is something are broken and do not work.
> > 
> > I'm also not overly happy with the name KWindowSystemEventFilter, as it suggests it has something to do with the KWindowSystem class, I'd suggest dropping the 'Window' from the name.
> 
> Michael Leupold wrote:
>     Thanks for taking a close look!
>     
>     I agree on QAbstractEventDispatcher::EventFilter. I think when I first wrote this patch I just figured out message's type based on the Qt sources. I filed a request on Qt's bugtracker to see if they could give a guarantee about the type. If not I probably should just trash this patch as-is.

Good news. EventFilter is now fully documented along with a line saying "You can do a static cast to these types." (http://bugreports.qt.nokia.com/browse/QTBUG-10904, commit 594900e68f8e264facbe8c75eaf2b857240bc072) and afaict the fix will be in 4.7.

Thus I'll make the required modifications to get this patch ready for another review.


- Michael


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


On 2010-05-21 05:09:24, Michael Leupold wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviewboard.kde.org/r/1381/
> -----------------------------------------------------------
> 
> (Updated 2010-05-21 05:09:24)
> 
> 
> Review request for kdelibs.
> 
> 
> Summary
> -------
> 
> This patch moves the installX11EventFilter functionality from inside KApplication to an external KWindowSystemEventFilter namespace. Like this, non-KApplications can use global event filters (and KApplication gets smaller).
> 
> The new methods use QAbstractEventDispatcher and are named KWindowSystemEventFilter::installEventFilter and removeEventFilter. They are not meant to be specific to X11 any longer but the current implementation is only concerned with X11 as I don't have another window system to test it with (I provided stubs that could serve as base for an implementation).
> 
> 
> Diffs
> -----
> 
>   /trunk/KDE/kdelibs/kdeui/kernel/kwindowsystemeventfilter.cpp PRE-CREATION 
>   /trunk/KDE/kdelibs/kdeui/kernel/kwindowsystemeventfilter.h PRE-CREATION 
>   /trunk/KDE/kdelibs/kdeui/kernel/kapplication.cpp 1129021 
>   /trunk/KDE/kdelibs/kdeui/kernel/kapplication.h 1129021 
>   /trunk/KDE/kdelibs/kdeui/CMakeLists.txt 1129021 
> 
> Diff: http://reviewboard.kde.org/r/1381/diff
> 
> 
> Testing
> -------
> 
> Too little I fear. I tested it with KColorDialog which uses KApplication::installX11EventFilter for its color picker and it worked fine.
> 
> There should be a unit-test for it but I haven't thought of any.
> 
> 
> Thanks,
> 
> Michael
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20100621/d9f8cf36/attachment.htm>


More information about the kde-core-devel mailing list