diff options
author | Alexandr Miloslavskiy | 2019-11-18 17:39:47 +0000 |
---|---|---|
committer | Alexandr Miloslavskiy | 2019-11-18 18:07:16 +0000 |
commit | fd4e0d2568bd5b3180cb7bec53a4d7edd8324918 (patch) | |
tree | 4f1c9bf9f0bfa1b38de3fb64fdcda6420acfc02c | |
parent | aed822b55198c31fa5ade79935464cb01b955d5d (diff) | |
download | eclipse.platform.swt-fd4e0d2568bd5b3180cb7bec53a4d7edd8324918.tar.gz eclipse.platform.swt-fd4e0d2568bd5b3180cb7bec53a4d7edd8324918.tar.xz eclipse.platform.swt-fd4e0d2568bd5b3180cb7bec53a4d7edd8324918.zip |
Bug 553099 - [GTK3] StyledText becomes black with Yaru theme (default on Ubuntu)
Tested on Ubuntu 18.10 using 'Bug548286_DumpSystemColors.sh', the only changes are:
Yaru, COLOR_TEXT_DISABLED_BACKGROUND
ARGB:00000000 -> ARGB:FFF5F6F7
Yaru-dark, COLOR_TEXT_DISABLED_BACKGROUND
ARGB:00000000 -> ARGB:FF353535
For reference:
/usr/share/themes/Yaru/gtk-3.0/gtk.css Line 296:
entry:backdrop:disabled {
background-color: transparent;
border-color: rgba(186, 192, 199, 0.7);
box-shadow: none;
color: #c2c8ce; }
Change-Id: I59e4e8d2dc4b4d11531f2779ed17d00ec836fd82
Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
2 files changed, 13 insertions, 2 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java index 719ed729a1..bb54220c30 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java @@ -3201,14 +3201,23 @@ void initializeSystemColorsToggleButton() { } void initializeSystemColorsDisabled() { + /* + * 'Yaru' theme on Ubuntu 18.10 defines background color for + * 'entry:backdrop:disabled' as 'transparent', so parent window's color + * will be used. However, SWT doesn't quite expect transparent colors. + * The workaround is to use a temporary window as parent. GTK will blend + * colors and return non-transparent result. + */ + long window = GTK.gtk_window_new (GTK.GTK_WINDOW_TOPLEVEL); long entry = GTK.gtk_entry_new (); - OS.g_object_ref_sink(entry); + GTK.gtk_container_add (window, entry); + long context = GTK.gtk_widget_get_style_context (entry); COLOR_WIDGET_DISABLED_FOREGROUND_RGBA = styleContextGetColor (context, GTK.GTK_STATE_FLAG_INSENSITIVE); COLOR_TEXT_DISABLED_BACKGROUND_RGBA = styleContextEstimateBackgroundColor (context, GTK.GTK_STATE_FLAG_INSENSITIVE); - OS.g_object_unref(entry); + GTK.gtk_widget_destroy (window); } GdkRGBA styleContextGetColor(long context, int flag) { diff --git a/tests/org.eclipse.swt.tests/ManualTests/org/eclipse/swt/tests/manual/Bug548286_DumpSystemColors.java b/tests/org.eclipse.swt.tests/ManualTests/org/eclipse/swt/tests/manual/Bug548286_DumpSystemColors.java index c75bab8878..396fdea73b 100644 --- a/tests/org.eclipse.swt.tests/ManualTests/org/eclipse/swt/tests/manual/Bug548286_DumpSystemColors.java +++ b/tests/org.eclipse.swt.tests/ManualTests/org/eclipse/swt/tests/manual/Bug548286_DumpSystemColors.java @@ -52,6 +52,8 @@ public class Bug548286_DumpSystemColors { hmap.put(SWT.COLOR_TITLE_INACTIVE_BACKGROUND, "COLOR_TITLE_INACTIVE_BACKGROUND"); hmap.put(SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT, "COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT"); hmap.put(SWT.COLOR_LINK_FOREGROUND, "COLOR_LINK_FOREGROUND"); + hmap.put(SWT.COLOR_WIDGET_DISABLED_FOREGROUND, "COLOR_WIDGET_DISABLED_FOREGROUND"); + hmap.put(SWT.COLOR_TEXT_DISABLED_BACKGROUND, "COLOR_TEXT_DISABLED_BACKGROUND"); // Printing IDs instead of names gives more compact output boolean printIDs = true; |