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

Hugo Pereira Da Costa hugo.pereira at free.fr
Sun Mar 20 11:17:06 UTC 2016



> On March 19, 2016, 1:22 p.m., Thomas Lübking wrote:
> > "Loose focus" is the complete wrong concept anyway.
> > It makes kickoff and various other plasmashell elements barely usable w/ any but the click-to-focus policy (implicit hide)
> > 
> > Try adding Qt::FramelessWindowHint (Qt::X11BypassWindowManagerHint should be Qt::BypassWindowManagerHint anyway)
> > 
> > PS: it's rather worrysome that Qt::Popup fails since it *is* set for the QComboBox dropdown. May point an implementation weakeness/bug in this class.
> 
> Dominik Haumann wrote:
>     Unfortunatey, also does not work... The popup stays, does not close, and typing does not insert text into the KLineEdit anymore (we don't see any blinking cursor).
> 
> Thomas Lübking wrote:
>     i did not mean "alongside Qt::Popup" - if you need to hint this as tooltip for somewhat useful behavior, either the class or QWidget/5 is seriously fucked up.
> 
> Dominik Haumann wrote:
>     ...I'm not sure what you are suggesting: Fact is, right now, we don't have another fix than reverting to the original code.
>     It would also work to add a #ifdef, but given that temporary workarounds tend to become pernanent ones, this is probably the worst solution.
>     
>     So what is the proper fix / approach we can take here?
> 
> Anthony Fieroni wrote:
>     http://doc.qt.io/qt-5/qt.html#WindowType-enum
>     q->setWindowFlags(Qt::ToolTip | Qt::BypassWindowManagerHint | Qt::FramelessWindowHint);
>     or 
>     q->activateWindow();
>     *(i.e., no keyboard input unless you call QWidget::activateWindow() manually).*
> 
> Anthony Fieroni wrote:
>     I mean Window :)
>     q->setWindowFlags(Qt::Window | Qt::BypassWindowManagerHint | Qt::FramelessWindowHint);
> 
> Dominik Haumann wrote:
>     Just tested
>     
>         q->setWindowFlags(Qt::Window | Qt::BypassWindowManagerHint | Qt::FramelessWindowHint);
>     
>     Does not work either: We get no window decoration, which is good, but KLineEdit looses focus (no blinking cursor, no new typed text), and it is hard to make the popup disappear again.
>     
>     Maybe this is a bug in the implementation of KCompletionBox and/or KLineEditor. Fact is, though, that it at least worked for applications before.
>     
>     I could not find a call of activateWindow()...
> 
> Kai Uwe Broulik wrote:
>     Does Qt::WindowDoesNotAcceptFocus help?
> 
> Dominik Haumann wrote:
>     Unfortunately, no, no matter what combinations I try ;) (Qt::Window, Qt::Popup, and the other flags arbitrarily combined)
> 
> Thomas Lübking wrote:
>     Qt::WindowDoesNotAcceptFocus only handles what happens if the window receives an ::ActivateWindow event, not how the window should be created.
>     
>     You can try setting ("_q_showWithoutActivating", false) like "_q_xcb_wm_window_type", but actually™ when this is tested on the windows platform plugin, so is Qt::Popup, Qt::ToolTip and Qt::Tool.
>     Qt::ToolTip is btw. Qt::Popup|Qt::Sheet and ::Sheet doesn't exist anywhere but on OSX.
>     
>     As ultimate resolution branch #ifdef Q_OS_WIN to tag a combobox drawer a tooltip. And better start looking for another toolkit.
> 
> Marco Martin wrote:
>     it suggests that in this case the bug is in the windows qpa..
>     even if it's horrible, the least broken solution is an ifdef that sets the window as tooltip only on windows
>     (and in the meantime taking a look what's wrong in that qpa and if is fixable at all)
>     having that window as a tooltip is wrong and breaks things on x11 (tooltips are now animated and that window would be animated too), so i would really rather not having it as a tooltip on x11, fine if it's that on Windows

+1 to this. 
The previous patch does fix a bug on X11, and is correct (ie: mimic normal comboboxes) so it should stay. I'd vote for #ifdef too (or upstream fix)


- Hugo


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


On March 19, 2016, 8:56 p.m., Dominik Haumann wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/127424/
> -----------------------------------------------------------
> 
> (Updated March 19, 2016, 8:56 p.m.)
> 
> 
> Review request for KDE Frameworks, kdewin, kwin, and Marco Martin.
> 
> 
> 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
> -----
> 
>   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/65eb101d/attachment-0001.html>


More information about the Kde-frameworks-devel mailing list