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