Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandr Miloslavskiy2019-11-18 17:39:47 +0000
committerAlexandr Miloslavskiy2019-11-18 18:07:16 +0000
commitfd4e0d2568bd5b3180cb7bec53a4d7edd8324918 (patch)
tree4f1c9bf9f0bfa1b38de3fb64fdcda6420acfc02c
parentaed822b55198c31fa5ade79935464cb01b955d5d (diff)
downloadeclipse.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>
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java13
-rw-r--r--tests/org.eclipse.swt.tests/ManualTests/org/eclipse/swt/tests/manual/Bug548286_DumpSystemColors.java2
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;

Back to the top