https://bugs.kde.org/show_bug.cgi?id=172921

ratijas <m...@ratijas.tk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |m...@ratijas.tk

--- Comment #24 from ratijas <m...@ratijas.tk> ---
I've played enough with color panels/dialogs, Krita & KolourPaint. I don't see
any way to fix Dialog Parent effect globally.

- The KWin script only checks for the modal window flag;
- KDE/Plasma platform theme integration does not provide any custom color
dialog, and even if it were, changing the modality on behalf of client code
would be inappropriate (as in: source of bugs and complaints);

Clients should be ported from blocking QDialog::exec to the non-blocking slots
+ QWidget::show() in order to accommodate non-modal color panels, à la Krita
style. However, that would involve at least ~+10 lines of code, which is doable
but highly custom ever time. QColorDialog API sucks, primarily because it is
too busy being a dialog (instead of a panel): its both open() method overloads
mess with modality (they hardcode it to WindowModal) even it it were explicitly
disabled beforehand, and one overload is the only way to conveniently set
receiver/slot pair — otherwise you'd have to perform some bookkeeping for a
Connection object (if the dialog is shared/recycled which it really should be,
to prevent multiple non-modal dialogs from being opened simultaneously for
different controls). Also, disabling modality *after* a dialog is open
completely softlocks application's main window and event handling in Qt, which
is most likely a Qt bug.

Technically, we *could* match on window caption being equal to or starting with
`QColorDialog::tr("Select Color")`, but that would be sloppy at best (besides
adding a dozen or conditionals and connections to the effect's code, and
requiring API to get a translated string from Qt catalogue in pure JS).

We *could* implement a custom X11 _NET_WM_STATE atom and a Wayland protocol.
But that's way too overkill for a problem which should be solved on a
conceptually different level anyway (i.e. by porting color dialogs to
non-blocking panels).

As unfortunate as it is, the bug report probably better be closed as #resolved
#intentional, and efforts spent on an actual porting rather than searching for
clever workarounds.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to