Review Request 127424: KCompletionBox popup gets full window decoration on Windows

Dominik Haumann dhaumann at kde.org
Sun Mar 20 12:06:27 UTC 2016


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/127424/
-----------------------------------------------------------

(Updated März 20, 2016, 12:06 nachm.)


Review request for KDE Frameworks, kdewin, kwin, and Marco Martin.


Changes
-------

Finally found a solution:

We need to set the attribute Qt::WA_ShowWithoutActivating.
In addition, we need the Qt::FramelessWindowHint to avoid a window decoration.
And I also change X11BypassWindowManagerHint to Qt::BypassWindowManagerHint.

Qt::Popup will not work, since the popup by default sets the modality (according to Qt docs). This is also the reason why it works for QComboBox: there, when the popup is visible, the QLineEdit never has focus. In KLineEdit this is different. KLineEdit's popup is automatically shown for completion, and the focus should be kept in KLineEdit. That's why Qt::Window is correct here.
With this background in mind, I even believe the comments above don't make much sense:
    //we can't link to QXcbWindowFunctions::Combo
    //also, q->setAttribute(Qt::WA_X11NetWmWindowTypeCombo); is broken in Qt xcb
Since KLineEdit's completion popup has essentially nothing to do with both code-wise and workflow-wise with QComboBox... So ok to remove this again, too?

I could also add the WindowFlag "Qt::WindowStaysOnTopHint", but since it also works as is, I've omitted this.

PS: I also have no idea what is meant by the comment "// calls setVisible, so must be done after initializations", imho this comment shoud be removed.


Repository: kcompletion


Description
-------

In https://git.reviewboard.kde.org/r/127191/ the KCompletionBox WindowFlags were change from Qt::ToolTip to Qt::Window.

As consequence, the completion popup of the Kate command line gets a full window decoration, which is obviously wrong, see attached screenshot.

Changing the type to Qt::Popup shows the proper popup, but key presses are not forwarded, so typing is not possible, and additionally, on losing focus the popup keeps staying open.
Therefore, this patch reverts the type back to Qt::ToolTip.

Better fixes are of course welcome ;) Any ideas?


Diffs (updated)
-----

  src/kcompletionbox.cpp 005aff8 

Diff: https://git.reviewboard.kde.org/r/127424/diff/


Testing
-------

Works on Windows as expected.


File Attachments
----------------

Completion Popup
  https://git.reviewboard.kde.org/media/uploaded/files/2016/03/19/7be64cad-6d95-46b8-9caa-41b41a135ca1__kate2015.png


Thanks,

Dominik Haumann

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20160320/77a489b5/attachment.html>


More information about the Kde-frameworks-devel mailing list