Summary: | The "Pick Screen Color" button is missing on Wayland session | ||
---|---|---|---|
Product: | [Applications] kcolorchooser | Reporter: | Petar Nedyalkov <shakerbg> |
Component: | general | Assignee: | Unassigned bugs mailing-list <unassigned-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | 4wy78uwh, alex, andrewnguyen841, bugseforuns, chermnykh2001, eric1, funny0facer, kde, me, mrjoeharris, nate, nicolas.fella, paragoumba, sabayon11, shakerbg, thomas, xx-anon-xx |
Priority: | NOR | Keywords: | qt6, wayland |
Version: | 24.05.0 | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
URL: | https://bugreports.qt.io/browse/QTBUG-120957 | ||
Latest Commit: | https://invent.kde.org/graphics/kcolorchooser/-/commit/7a03f1ccac935cb9c1a8e030a198d9267b0479f1 | Version Fixed In: | 24.05.1 |
Sentry Crash Report: | |||
Attachments: |
Screenshot of KColorChooser with missing button.
Screenshot of KColorChooser with missing button. KColorChooser vs Spectacle vs KColorSchemeEditor |
Thank you for your update :) The upstream bug report is now closed as "Cannot reproduce", and I see a "Pick Screen Color" button on my color picker dialog from KColorChooser and Kolourpaint. Did it get fixed along the way? Hello Nate, The button still missing in KColorChooser, but it appears on KolourPaint and KColorSchemeEditor. I'm using the following configuration: Operating System: openSUSE Tumbleweed 20240128 KDE Plasma Version: 6.0.80 KDE Frameworks Version: 5.249.0 Qt Version: 6.6.1 Here is a screenshot as evidence: https://i.imgur.com/YQFdMOe.png Can confirm. Operating System: Arch Linux KDE Plasma Version: 5.92.0 KDE Frameworks Version: 5.248.0 Qt Version: 6.7.0 Kernel Version: 6.7.1-arch1-1 (64-bit) Graphics Platform: Wayland Processors: 16 × AMD Ryzen 7 5700U with Radeon Graphics Memory: 38.0 GiB of RAM Graphics Processor: AMD Radeon Graphics Manufacturer: LENOVO Product Name: 20Y7CTO1WW System Version: ThinkPad E14 Gen 3 For what it's worth this is still an issue in Gentoo too: Operating System: Gentoo 2.14 KDE Plasma Version: 6.0.80 KDE Frameworks Version: 5.249.0 Qt Version: 6.6.1 (dev-qt/qtbase-6.6.1-r4) Graphics Platform: Wayland I ended up patching out the check in qtbase to always return true: /etc/portage/patches/dev-qt/qtbase-6.6.1/hack-enable-color-picking-everywhere.diff: diff -Naur a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp --- a/src/widgets/dialogs/qcolordialog.cpp 2024-01-16 15:39:51.128220003 +0000 +++ b/src/widgets/dialogs/qcolordialog.cpp 2024-01-16 15:40:34.573643546 +0000 @@ -1901,9 +1901,7 @@ bool QColorDialogPrivate::supportsColorPicking() const { - const auto integration = QGuiApplicationPrivate::platformIntegration(); - return integration->hasCapability(QPlatformIntegration::ScreenWindowGrabbing) - || integration->services()->hasCapability(QPlatformServices::Capability::ColorPicking); + return true; } bool QColorDialogPrivate::canBeNativeDialog() const *** Bug 482810 has been marked as a duplicate of this bug. *** Still an issue on: Operating System: Arch KDE Plasma Version: 6.0.2 KDE Frameworks Version: 6.0.0 Qt Version: 6.6.2 Graphics Platform: Wayland Created attachment 167444 [details]
Screenshot of KColorChooser with missing button.
Comment on attachment 167444 [details]
Screenshot of KColorChooser with missing button.
Arch
extra/kcolorchooser 24.02.0-1
Plasma: 6.0.2
(In reply to Nicolas Fella from comment #1) > This is https://bugreports.qt.io/browse/QTBUG-120957 This bug is still here, using the color chooser in Konversation which looks identical to kcolorchooser has the pick color dialog. Created attachment 167815 [details]
KColorChooser vs Spectacle vs KColorSchemeEditor
This still applies to 24.02.01 on my arch system.
where is the difference between the different color chooser applets? Why does KColorChooser behave different than e.g. KColorSchemeEditor?
The color chooser of Qt Designer works also perfectly fine and looks identical to me.
My qt6-wayland version is 6.6.2
This is still an issue in 6.6.3 (In reply to funny0facer from comment #12) > Created attachment 167815 [details] > KColorChooser vs Spectacle vs KColorSchemeEditor > > This still applies to 24.02.01 on my arch system. > where is the difference between the different color chooser applets? Why > does KColorChooser behave different than e.g. KColorSchemeEditor? I think it's an issue with the Qt Platform theme or internal to Qt somewhere. When I patch Qt like I did here: https://bugs.kde.org/show_bug.cgi?id=479406#c6 it always works fine via the portal. Something is returning false somewhere that should be returning true. Can confirm this - no way to choose color Operating System: openSUSE Leap 15.5 KDE Plasma Version: 6.0.3 KDE Frameworks Version: 6.0.0 Qt Version: 6.6.3 Kernel Version: 5.14.21-150500.55.52-default (64-bit) Graphics Platform: Wayland Processors: 4 × Intel® Core™ i3-7100U CPU @ 2.40GHz Memory: 11.5 GiB of RAM Graphics Processor: Mesa Intel® HD Graphics 620 Today, I got the update to kcolorchooser 24.02.02. The bug is still reproducible with Qt Version 6.7.0 Operating System: Arch Linux KDE Plasma Version: 6.0.3 KDE Frameworks Version: 6.0.0 Qt Version: 6.7.0 Kernel Version: 6.8.5-arch1-1 (64-bit) Graphics Platform: Wayland There is no such field as "pick color from screen" Operating System: Manjaro Linux KDE Plasma Version: 6.0.4 KDE Frameworks Version: 6.1.0 Qt Version: 6.7.0 Kernel Version: 6.6.30-2-MANJARO (64-bit) Graphics Platform: Wayland This is a racecondition in QT. See https://bugreports.qt.io/browse/QTBUG-120957?focusedId=794902&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-794902 The following workaround in kcolorchooser works for me: ``` diff --git a/kcolorchooser.cpp b/kcolorchooser.cpp index 97297071e07e..bd9c6ef6cf94 100644 --- a/kcolorchooser.cpp +++ b/kcolorchooser.cpp @@ -67,6 +67,9 @@ int main(int argc, char *argv[]) QApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("kcolorchooser"))); + /* Work around https://bugreports.qt.io/browse/QTBUG-120957 */ + app.processEvents(); + QColorDialog dlg; dlg.setOption(QColorDialog::DontUseNativeDialog); QDialogButtonBox *box = dlg.findChild<QDialogButtonBox*>(); ``` Git commit dace6c0d2b04b444b4e4a920450a7ed24b79cc30 by Thomas Weißschuh. Committed on 21/05/2024 at 18:02. Pushed by nicolasfella into branch 'master'. Allow dbus processing in qt-base to enable color-picking via portal qt-base uses dbus to query the desktop portal if color-picking is supported, without explicitly waiting for the result. kcolorchooser creates its QColorDialog before the response was processed and therefore color picking via the portal is presumed to be unavailable. Give the eventloop the opportunity to process the event and only afterwards create the QColorDialog. See https://bugreports.qt.io/browse/QTBUG-120957 M +3 -0 kcolorchooser.cpp https://invent.kde.org/graphics/kcolorchooser/-/commit/dace6c0d2b04b444b4e4a920450a7ed24b79cc30 Git commit 7a03f1ccac935cb9c1a8e030a198d9267b0479f1 by Nicolas Fella, on behalf of Thomas Weißschuh. Committed on 21/05/2024 at 20:00. Pushed by nicolasfella into branch 'release/24.05'. Allow dbus processing in qt-base to enable color-picking via portal qt-base uses dbus to query the desktop portal if color-picking is supported, without explicitly waiting for the result. kcolorchooser creates its QColorDialog before the response was processed and therefore color picking via the portal is presumed to be unavailable. Give the eventloop the opportunity to process the event and only afterwards create the QColorDialog. See https://bugreports.qt.io/browse/QTBUG-120957 (cherry picked from commit dace6c0d2b04b444b4e4a920450a7ed24b79cc30) M +3 -0 kcolorchooser.cpp https://invent.kde.org/graphics/kcolorchooser/-/commit/7a03f1ccac935cb9c1a8e030a198d9267b0479f1 *** Bug 487555 has been marked as a duplicate of this bug. *** is there a state for "fixed, but not yet in a release"? That's what FIXED means. See https://community.kde.org/Get_Involved/Issue_Reporting#Understand_what_the_resolution_statuses_mean |
Created attachment 164677 [details] Screenshot of KColorChooser with missing button. SUMMARY The "Pick Screen Color" button is missing on Wayland session. It is displayed if we use 23.08.4 instead of 24.01.85 STEPS TO REPRODUCE 1. Launch KColorChooser on Wayland session 2. Observe the "Pick Screen Color" button OBSERVED RESULT The "Pick Screen Color" button is missing on Wayland session EXPECTED RESULT The "Pick Screen Color" button is displayed on Wayland session SOFTWARE/OS VERSIONS Operating System: openSUSE Tumbleweed 20231228 KDE Plasma Version: 5.91.90 KDE Frameworks Version: 5.248.0 Qt Version: 6.6.1 Kernel Version: 6.6.7-1-default (64-bit) Graphics Platform: Wayland ADDITIONAL INFORMATION The "Pick Screen Color" button is missing on KColorChooser 24.01.85 only.