Fix some visual glitches when on recent versions of GTK
- ebz#466314, ebz#481122, ebz#466500
This commit is contained in:
parent
3644239ecd
commit
2a679db694
165
eclipse-bug-466314.patch
Normal file
165
eclipse-bug-466314.patch
Normal file
@ -0,0 +1,165 @@
|
||||
From eec69d54257dd905a06e43fb705f40df9326414e Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Kurtakov
|
||||
Date: Fri, 20 Nov 2015 13:24:54 +0200
|
||||
Subject: Bug 466314 - [GTK3] Text in Forms abbreviated
|
||||
|
||||
Switching from gtk_text_view_scroll_mark_onscreen to
|
||||
gtk_text_view_scroll_to_mark gives us total control over the alignment
|
||||
allowing us to alway position to the 0 0.
|
||||
|
||||
Change-Id: I4fc141980e96c81cf65ef076a0224f0e4eee47ba
|
||||
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
|
||||
---
|
||||
.../org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c | 20 ++++++++++----------
|
||||
.../Eclipse SWT PI/gtk/library/os_stats.c | 2 +-
|
||||
.../Eclipse SWT PI/gtk/library/os_stats.h | 2 +-
|
||||
.../gtk/org/eclipse/swt/internal/gtk/OS.java | 10 +++++++---
|
||||
.../gtk/org/eclipse/swt/widgets/Text.java | 12 ++++++------
|
||||
5 files changed, 25 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
|
||||
index 7e937f0..c0dff7f 100644
|
||||
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
|
||||
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
|
||||
@@ -16167,16 +16167,6 @@ JNIEXPORT jintLong JNICALL OS_NATIVE(_1gtk_1text_1view_1new)
|
||||
}
|
||||
#endif
|
||||
|
||||
-#ifndef NO__1gtk_1text_1view_1scroll_1mark_1onscreen
|
||||
-JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1text_1view_1scroll_1mark_1onscreen)
|
||||
- (JNIEnv *env, jclass that, jintLong arg0, jintLong arg1)
|
||||
-{
|
||||
- OS_NATIVE_ENTER(env, that, _1gtk_1text_1view_1scroll_1mark_1onscreen_FUNC);
|
||||
- gtk_text_view_scroll_mark_onscreen((GtkTextView *)arg0, (GtkTextMark *)arg1);
|
||||
- OS_NATIVE_EXIT(env, that, _1gtk_1text_1view_1scroll_1mark_1onscreen_FUNC);
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
#ifndef NO__1gtk_1text_1view_1scroll_1to_1iter
|
||||
JNIEXPORT jboolean JNICALL OS_NATIVE(_1gtk_1text_1view_1scroll_1to_1iter)
|
||||
(JNIEnv *env, jclass that, jintLong arg0, jbyteArray arg1, jdouble arg2, jboolean arg3, jdouble arg4, jdouble arg5)
|
||||
@@ -16193,6 +16183,16 @@ fail:
|
||||
}
|
||||
#endif
|
||||
|
||||
+#ifndef NO__1gtk_1text_1view_1scroll_1to_1mark
|
||||
+JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1text_1view_1scroll_1to_1mark)
|
||||
+ (JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jdouble arg2, jboolean arg3, jdouble arg4, jdouble arg5)
|
||||
+{
|
||||
+ OS_NATIVE_ENTER(env, that, _1gtk_1text_1view_1scroll_1to_1mark_FUNC);
|
||||
+ gtk_text_view_scroll_to_mark((GtkTextView *)arg0, (GtkTextMark *)arg1, (gdouble)arg2, (gboolean)arg3, (gdouble)arg4, (gdouble)arg5);
|
||||
+ OS_NATIVE_EXIT(env, that, _1gtk_1text_1view_1scroll_1to_1mark_FUNC);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
#ifndef NO__1gtk_1text_1view_1set_1editable
|
||||
JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1text_1view_1set_1editable)
|
||||
(JNIEnv *env, jclass that, jintLong arg0, jboolean arg1)
|
||||
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
|
||||
index 82775bd..bd9d7b5 100644
|
||||
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
|
||||
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
|
||||
@@ -1183,8 +1183,8 @@ char * OS_nativeFunctionNames[] = {
|
||||
"_1gtk_1text_1view_1get_1visible_1rect",
|
||||
"_1gtk_1text_1view_1get_1window",
|
||||
"_1gtk_1text_1view_1new",
|
||||
- "_1gtk_1text_1view_1scroll_1mark_1onscreen",
|
||||
"_1gtk_1text_1view_1scroll_1to_1iter",
|
||||
+ "_1gtk_1text_1view_1scroll_1to_1mark",
|
||||
"_1gtk_1text_1view_1set_1editable",
|
||||
"_1gtk_1text_1view_1set_1justification",
|
||||
"_1gtk_1text_1view_1set_1tabs",
|
||||
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
|
||||
index a1d68ed..016b472 100644
|
||||
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
|
||||
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
|
||||
@@ -1193,8 +1193,8 @@ typedef enum {
|
||||
_1gtk_1text_1view_1get_1visible_1rect_FUNC,
|
||||
_1gtk_1text_1view_1get_1window_FUNC,
|
||||
_1gtk_1text_1view_1new_FUNC,
|
||||
- _1gtk_1text_1view_1scroll_1mark_1onscreen_FUNC,
|
||||
_1gtk_1text_1view_1scroll_1to_1iter_FUNC,
|
||||
+ _1gtk_1text_1view_1scroll_1to_1mark_FUNC,
|
||||
_1gtk_1text_1view_1set_1editable_FUNC,
|
||||
_1gtk_1text_1view_1set_1justification_FUNC,
|
||||
_1gtk_1text_1view_1set_1tabs_FUNC,
|
||||
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
|
||||
index cf8cda6..0ee6dda 100644
|
||||
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
|
||||
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
|
||||
@@ -12528,12 +12528,16 @@ public static final long /*int*/ gtk_text_view_new() {
|
||||
/**
|
||||
* @param text_view cast=(GtkTextView *)
|
||||
* @param mark cast=(GtkTextMark *)
|
||||
+ * @param within_margin cast=(gdouble)
|
||||
+ * @param use_align cast=(gboolean)
|
||||
+ * @param xalign cast=(gdouble)
|
||||
+ * @param yalign cast=(gdouble)
|
||||
*/
|
||||
-public static final native void _gtk_text_view_scroll_mark_onscreen(long /*int*/ text_view, long /*int*/ mark);
|
||||
-public static final void gtk_text_view_scroll_mark_onscreen(long /*int*/ text_view, long /*int*/ mark) {
|
||||
+public static final native void _gtk_text_view_scroll_to_mark(long /*int*/ text_view, long /*int*/ mark, double within_margin, boolean use_align, double xalign, double yalign);
|
||||
+public static final void gtk_text_view_scroll_to_mark(long /*int*/ text_view, long /*int*/ mark, double within_margin, boolean use_align, double xalign, double yalign) {
|
||||
lock.lock();
|
||||
try {
|
||||
- _gtk_text_view_scroll_mark_onscreen(text_view, mark);
|
||||
+ _gtk_text_view_scroll_to_mark(text_view, mark, within_margin, use_align, xalign, yalign);
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
|
||||
index 9aa3a52..2865cd5 100644
|
||||
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
|
||||
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
|
||||
@@ -414,7 +414,7 @@ public void append (String string) {
|
||||
OS.gtk_text_buffer_insert (bufferHandle, position, buffer, buffer.length);
|
||||
OS.gtk_text_buffer_place_cursor (bufferHandle, position);
|
||||
long /*int*/ mark = OS.gtk_text_buffer_get_insert (bufferHandle);
|
||||
- OS.gtk_text_view_scroll_mark_onscreen (handle, mark);
|
||||
+ OS.gtk_text_view_scroll_to_mark (handle, mark, 0, true, 0, 0);
|
||||
}
|
||||
applySegments ();
|
||||
}
|
||||
@@ -1947,7 +1947,7 @@ public void insert (String string) {
|
||||
OS.gtk_text_buffer_insert (bufferHandle, start, buffer, buffer.length);
|
||||
OS.gtk_text_buffer_place_cursor (bufferHandle, start);
|
||||
long /*int*/ mark = OS.gtk_text_buffer_get_insert (bufferHandle);
|
||||
- OS.gtk_text_view_scroll_mark_onscreen (handle, mark);
|
||||
+ OS.gtk_text_view_scroll_to_mark (handle, mark, 0, true, 0, 0);
|
||||
}
|
||||
applySegments ();
|
||||
}
|
||||
@@ -2340,7 +2340,7 @@ public void setSelection (int start) {
|
||||
OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, startIter, start);
|
||||
OS.gtk_text_buffer_place_cursor (bufferHandle, startIter);
|
||||
long /*int*/ mark = OS.gtk_text_buffer_get_insert (bufferHandle);
|
||||
- OS.gtk_text_view_scroll_mark_onscreen (handle, mark);
|
||||
+ OS.gtk_text_view_scroll_to_mark (handle, mark, 0, true, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2563,7 +2563,7 @@ void setText (char [] text) {
|
||||
OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, position, 0);
|
||||
OS.gtk_text_buffer_place_cursor (bufferHandle, position);
|
||||
long /*int*/ mark = OS.gtk_text_buffer_get_insert (bufferHandle);
|
||||
- OS.gtk_text_view_scroll_mark_onscreen (handle, mark);
|
||||
+ OS.gtk_text_view_scroll_to_mark (handle, mark, 0, true, 0, 0);
|
||||
Arrays.fill (buffer, (byte) 0);
|
||||
}
|
||||
sendEvent (SWT.Modify);
|
||||
@@ -2644,9 +2644,9 @@ public void showSelection () {
|
||||
checkWidget ();
|
||||
if ((style & SWT.SINGLE) != 0) return;
|
||||
long /*int*/ mark = OS.gtk_text_buffer_get_selection_bound (bufferHandle);
|
||||
- OS.gtk_text_view_scroll_mark_onscreen (handle, mark);
|
||||
+ OS.gtk_text_view_scroll_to_mark (handle, mark, 0, true, 0, 0);
|
||||
mark = OS.gtk_text_buffer_get_insert (bufferHandle);
|
||||
- OS.gtk_text_view_scroll_mark_onscreen (handle, mark);
|
||||
+ OS.gtk_text_view_scroll_to_mark (handle, mark, 0, true, 0, 0);
|
||||
}
|
||||
|
||||
int translateOffset (int offset) {
|
||||
--
|
||||
cgit v0.11.2-4-g4a35
|
||||
|
||||
|
47
eclipse-bug-466500.patch
Normal file
47
eclipse-bug-466500.patch
Normal file
@ -0,0 +1,47 @@
|
||||
From ddcfd1f3efd70591480e6c053946618ef6696104 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Williams
|
||||
Date: Wed, 14 Oct 2015 13:41:06 -0400
|
||||
Subject: Bug 466500: [GTK3] Trying to resize quick outline or quick type
|
||||
hierarchy closes the popup
|
||||
|
||||
In PopupDialog, Shells with no children are closed on deactivation. On
|
||||
Linux-Gtk, this causes popups like the "Quick Outline" or "Quick
|
||||
Type Hierarchy" to close prematurely when opening the system menu,
|
||||
re-sizing, or moving the window with the mouse.
|
||||
|
||||
It is for this reason that we need to exclude the call to asyncClose()
|
||||
from running on Gtk. This also fixes bug 113577.
|
||||
|
||||
Tested on Gtk3.16.6, and Gtk2.24.
|
||||
|
||||
Change-Id: I4111ad961e2b4e57c90939e7cb0e982b7bf3b894
|
||||
Signed-off-by: Eric Williams <ericwill@redhat.com>---
|
||||
.../src/org/eclipse/jface/dialogs/PopupDialog.java | 13 ++++++++-----
|
||||
1 file changed, 8 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/eclipse.platform.ui/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java b/eclipse.platform.ui/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
|
||||
index 2068cc4..0d361af 100644
|
||||
--- a/eclipse.platform.ui/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
|
||||
+++ b/eclipse.platform.ui/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
|
||||
@@ -588,13 +588,17 @@
|
||||
/*
|
||||
* Close if we are deactivating and have no child shells. If we
|
||||
* have child shells, we are deactivating due to their opening.
|
||||
- * On X, we receive this when a menu child (such as the system
|
||||
- * menu) of the shell opens, but I have not found a way to
|
||||
- * distinguish that case here. Hence bug #113577 still exists.
|
||||
+ *
|
||||
+ * Feature in GTK: this causes the Quick Outline/Type Hierarchy
|
||||
+ * Shell to close on re-size/movement on Gtk3. For this reason,
|
||||
+ * the asyncClose() call is disabled in GTK. See Eclipse Bugs
|
||||
+ * 466500 and 113577 for more information.
|
||||
*/
|
||||
if (listenToDeactivate && event.widget == getShell()
|
||||
&& getShell().getShells().length == 0) {
|
||||
- asyncClose();
|
||||
+ if (!Util.isGtk()) {
|
||||
+ asyncClose();
|
||||
+ }
|
||||
} else {
|
||||
/*
|
||||
* We typically ignore deactivates to work around
|
136
eclipse-bug-481122.patch
Normal file
136
eclipse-bug-481122.patch
Normal file
@ -0,0 +1,136 @@
|
||||
From 3dc220718412431322c00e1f820c9ce0168892f5 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Williams
|
||||
Date: Mon, 23 Nov 2015 10:37:11 -0500
|
||||
Subject: Bug 481122: [GTK3.18+] some set/get Background/Foreground color
|
||||
methods have no effect
|
||||
|
||||
With changes in GTK3.18 and onward, gtk_style_context_get_color()
|
||||
behaves differently. In order to correctly fetch the color we must first
|
||||
save the GtkStyleContext, set its state, fetch the color, and then
|
||||
restore the GtkStyleContext. Failure to do this on GTK3.18+ leads to
|
||||
failures in the getForegroundColor() method.
|
||||
|
||||
The convenience method styleContextGetColor() in Display takes care of
|
||||
the process.
|
||||
|
||||
Tested on GTK 3.18, 3.16, 3.14, 3.8, and 2.24. All foreground color
|
||||
related tests on GTK3 now pass. GTK2 behaviour remains unchanged.
|
||||
|
||||
Change-Id: I6423edab5038dc0ef54afc6dd826f19fc936f987
|
||||
Signed-off-by: Eric Williams <ericwill@redhat.com>
|
||||
---
|
||||
.../gtk/org/eclipse/swt/widgets/Control.java | 2 +-
|
||||
.../gtk/org/eclipse/swt/widgets/Display.java | 36 ++++++++++++++--------
|
||||
.../gtk/org/eclipse/swt/widgets/Text.java | 2 +-
|
||||
3 files changed, 26 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
|
||||
index ffd9d11..7061084 100644
|
||||
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
|
||||
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
|
||||
@@ -2626,7 +2626,7 @@ GdkColor getContextColor () {
|
||||
long /*int*/ fontHandle = fontHandle ();
|
||||
long /*int*/ context = OS.gtk_widget_get_style_context (fontHandle);
|
||||
GdkRGBA rgba = new GdkRGBA ();
|
||||
- OS.gtk_style_context_get_color (context, OS.GTK_STATE_FLAG_NORMAL, rgba);
|
||||
+ rgba = display.styleContextGetColor (context, OS.GTK_STATE_FLAG_NORMAL, rgba);
|
||||
GdkColor color = new GdkColor ();
|
||||
color.red = (short)(rgba.red * 0xFFFF);
|
||||
color.green = (short)(rgba.green * 0xFFFF);
|
||||
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 0119882..d7e670c 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
|
||||
@@ -2373,8 +2373,7 @@ void initializeSystemColors () {
|
||||
OS.gtk_style_context_add_class (context, OS.GTK_STYLE_CLASS_TOOLTIP);
|
||||
OS.gtk_style_context_invalidate(context);
|
||||
GdkRGBA rgba = new GdkRGBA();
|
||||
- OS.gtk_style_context_get_color (context, OS.GTK_STATE_FLAG_NORMAL, rgba);
|
||||
- COLOR_INFO_FOREGROUND = toGdkColor (rgba);
|
||||
+ COLOR_INFO_FOREGROUND = toGdkColor (styleContextGetColor (context, OS.GTK_STATE_FLAG_NORMAL, rgba));
|
||||
getBackgroundColor (context, OS.GTK_STATE_FLAG_NORMAL, rgba);
|
||||
COLOR_INFO_BACKGROUND = toGdkColor (rgba);
|
||||
OS.gtk_widget_destroy (tooltipShellHandle);
|
||||
@@ -2387,8 +2386,7 @@ void initializeSystemColors () {
|
||||
COLOR_WIDGET_NORMAL_SHADOW = toGdkColor (rgba, 0.7);
|
||||
COLOR_WIDGET_HIGHLIGHT_SHADOW = toGdkColor (rgba, 1.3);
|
||||
|
||||
- OS.gtk_style_context_get_color (context, OS.GTK_STATE_FLAG_NORMAL, rgba);
|
||||
- COLOR_WIDGET_FOREGROUND = toGdkColor (rgba);
|
||||
+ COLOR_WIDGET_FOREGROUND = toGdkColor (styleContextGetColor (context, OS.GTK_STATE_FLAG_NORMAL, rgba));
|
||||
OS.gtk_style_context_get_background_color (context, OS.GTK_STATE_FLAG_NORMAL, rgba);
|
||||
COLOR_WIDGET_BACKGROUND = toGdkColor (rgba);
|
||||
|
||||
@@ -2396,17 +2394,14 @@ void initializeSystemColors () {
|
||||
OS.gtk_style_context_add_class(context, OS.GTK_STYLE_CLASS_VIEW);
|
||||
OS.gtk_style_context_add_class(context, OS.GTK_STYLE_CLASS_CELL);
|
||||
OS.gtk_style_context_invalidate(context);
|
||||
- OS.gtk_style_context_get_color (context, OS.GTK_STATE_FLAG_NORMAL, rgba);
|
||||
- COLOR_LIST_FOREGROUND = toGdkColor (rgba);
|
||||
+ COLOR_LIST_FOREGROUND = toGdkColor (styleContextGetColor (context, OS.GTK_STATE_FLAG_NORMAL, rgba));
|
||||
OS.gtk_style_context_get_background_color (context, OS.GTK_STATE_FLAG_NORMAL, rgba);
|
||||
COLOR_LIST_BACKGROUND = toGdkColor (rgba);
|
||||
OS.gtk_style_context_restore (context);
|
||||
- OS.gtk_style_context_get_color (context, OS.GTK_STATE_FLAG_SELECTED, rgba);
|
||||
- COLOR_LIST_SELECTION_TEXT = toGdkColor (rgba);
|
||||
+ COLOR_LIST_SELECTION_TEXT = toGdkColor (styleContextGetColor (context, OS.GTK_STATE_FLAG_SELECTED, rgba));
|
||||
OS.gtk_style_context_get_background_color (context, OS.GTK_STATE_FLAG_SELECTED, rgba);
|
||||
COLOR_LIST_SELECTION = toGdkColor (rgba);
|
||||
- OS.gtk_style_context_get_color (context, OS.GTK_STATE_FLAG_ACTIVE, rgba);
|
||||
- COLOR_LIST_SELECTION_TEXT_INACTIVE = toGdkColor (rgba);
|
||||
+ COLOR_LIST_SELECTION_TEXT_INACTIVE = toGdkColor (styleContextGetColor (context, OS.GTK_STATE_FLAG_ACTIVE, rgba));
|
||||
OS.gtk_style_context_get_background_color (context, OS.GTK_STATE_FLAG_ACTIVE, rgba);
|
||||
COLOR_LIST_SELECTION_INACTIVE = toGdkColor (rgba);
|
||||
|
||||
@@ -2415,8 +2410,7 @@ void initializeSystemColors () {
|
||||
OS.gtk_style_context_get_background_color (context, OS.GTK_STATE_FLAG_SELECTED, rgba);
|
||||
COLOR_TITLE_BACKGROUND_GRADIENT = toGdkColor (rgba, 1.3);
|
||||
|
||||
- OS.gtk_style_context_get_color (context, OS.GTK_STATE_FLAG_INSENSITIVE, rgba);
|
||||
- COLOR_TITLE_INACTIVE_FOREGROUND = toGdkColor (rgba);
|
||||
+ COLOR_TITLE_INACTIVE_FOREGROUND = toGdkColor (styleContextGetColor (context, OS.GTK_STATE_FLAG_INSENSITIVE, rgba));
|
||||
OS.gtk_style_context_get_background_color (context, OS.GTK_STATE_FLAG_INSENSITIVE, rgba);
|
||||
COLOR_TITLE_INACTIVE_BACKGROUND = toGdkColor (rgba);
|
||||
COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT = toGdkColor (rgba, 1.3);
|
||||
@@ -2497,6 +2491,24 @@ void initializeSystemColors () {
|
||||
COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT = gdkColor;
|
||||
}
|
||||
|
||||
+GdkRGBA styleContextGetColor(long /*int*/ context, int flag, GdkRGBA rgba) {
|
||||
+ /*
|
||||
+ * Feature in GTK: we need to handle calls to gtk_style_context_get_color()
|
||||
+ * differently due to changes in GTK3.18+. This solves failing test cases
|
||||
+ * which started failing after GTK3.16. See Bug 481122 for more info.
|
||||
+ * Reference: https://blogs.gnome.org/mclasen/2015/11/20/a-gtk-update/
|
||||
+ */
|
||||
+ if (OS.GTK_VERSION >= OS.VERSION(3, 18, 0)) {
|
||||
+ OS.gtk_style_context_save(context);
|
||||
+ OS.gtk_style_context_set_state(context, flag);
|
||||
+ OS.gtk_style_context_get_color (context, flag, rgba);
|
||||
+ OS.gtk_style_context_restore(context);
|
||||
+ } else {
|
||||
+ OS.gtk_style_context_get_color (context, flag, rgba);
|
||||
+ }
|
||||
+ return rgba;
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* Returns the single instance of the system taskBar or null
|
||||
* when there is no system taskBar available for the platform.
|
||||
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
|
||||
index 2865cd5..6b68b6a 100644
|
||||
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
|
||||
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
|
||||
@@ -1664,7 +1664,7 @@ void drawMessage (long /*int*/ cr) {
|
||||
if (OS.GTK3) {
|
||||
long /*int*/ styleContext = OS.gtk_widget_get_style_context (handle);
|
||||
GdkRGBA rgba = new GdkRGBA ();
|
||||
- OS.gtk_style_context_get_color (styleContext, OS.GTK_STATE_FLAG_INSENSITIVE, rgba);
|
||||
+ rgba = display.styleContextGetColor (styleContext, OS.GTK_STATE_FLAG_INSENSITIVE, rgba);
|
||||
textColor.red = (short)(rgba.red * 0xFFFF);
|
||||
textColor.green = (short)(rgba.green * 0xFFFF);
|
||||
textColor.blue = (short)(rgba.blue * 0xFFFF);
|
||||
--
|
||||
cgit v0.11.2-4-g4a35
|
||||
|
||||
|
16
eclipse.spec
16
eclipse.spec
@ -49,7 +49,7 @@ Epoch: 1
|
||||
Summary: An open, extensible IDE
|
||||
Name: eclipse
|
||||
Version: %{eclipse_version}
|
||||
Release: 4%{?dist}
|
||||
Release: 5%{?dist}
|
||||
License: EPL
|
||||
URL: http://www.eclipse.org/
|
||||
|
||||
@ -138,6 +138,11 @@ Patch25: %{pkg_name}-adjust-droplets.patch
|
||||
Patch26: eclipse-editor-scrolling-fix.patch
|
||||
Patch27: %{pkg_name}-bug-480986.patch
|
||||
|
||||
# Fix visual glitches when on recent GTK3
|
||||
Patch28: eclipse-bug-466314.patch
|
||||
Patch29: eclipse-bug-481122.patch
|
||||
Patch30: eclipse-bug-466500.patch
|
||||
|
||||
BuildRequires: rsync
|
||||
BuildRequires: make, gcc
|
||||
BuildRequires: glib2-devel
|
||||
@ -387,6 +392,11 @@ popd
|
||||
%patch25
|
||||
%patch26 -p1
|
||||
%patch27
|
||||
pushd eclipse.platform.swt
|
||||
%patch28 -p1
|
||||
%patch29 -p1
|
||||
popd
|
||||
%patch30 -p1
|
||||
|
||||
# Resolving the target platform requires too many changes, so don't use it
|
||||
%pom_xpath_remove "pom:configuration/pom:target" eclipse-platform-parent
|
||||
@ -1123,6 +1133,10 @@ fi
|
||||
%{_libdir}/%{pkg_name}/plugins/org.eclipse.osgi.compatibility.state_*
|
||||
|
||||
%changelog
|
||||
* Fri Nov 27 2015 Mat Booth <mat.booth@redhat.com> - 1:4.5.1-5
|
||||
- Fix some visual glitches when on recent versions of GTK
|
||||
- ebz#466314, ebz#481122, ebz#466500
|
||||
|
||||
* Tue Nov 03 2015 Roland Grunberg <rgrunber@redhat.com> - 1:4.5.1-4
|
||||
- Fix "Workspace chooser won't launch" on Wayland.
|
||||
- Resolves: rhbz#1277594
|
||||
|
Loading…
Reference in New Issue
Block a user