summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java40
1 files changed, 26 insertions, 14 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 67f10158ce..2f77e37cd4 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
@@ -270,7 +270,7 @@ public class Display extends Device {
GdkColor COLOR_WIDGET_HIGHLIGHT_SHADOW, COLOR_WIDGET_BACKGROUND, COLOR_WIDGET_FOREGROUND, COLOR_WIDGET_BORDER;
GdkColor COLOR_LIST_FOREGROUND, COLOR_LIST_BACKGROUND, COLOR_LIST_SELECTION, COLOR_LIST_SELECTION_TEXT;
GdkColor COLOR_LIST_SELECTION_INACTIVE, COLOR_LIST_SELECTION_TEXT_INACTIVE;
- GdkColor COLOR_INFO_BACKGROUND, COLOR_INFO_FOREGROUND;
+ GdkColor COLOR_INFO_BACKGROUND, COLOR_INFO_FOREGROUND, COLOR_LINK_FOREGROUND;
GdkColor COLOR_TITLE_FOREGROUND, COLOR_TITLE_BACKGROUND, COLOR_TITLE_BACKGROUND_GRADIENT;
GdkColor COLOR_TITLE_INACTIVE_FOREGROUND, COLOR_TITLE_INACTIVE_BACKGROUND, COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT;
@@ -2100,6 +2100,7 @@ public Color getSystemColor (int id) {
checkDevice ();
GdkColor gdkColor = null;
switch (id) {
+ case SWT.COLOR_LINK_FOREGROUND: gdkColor = COLOR_LINK_FOREGROUND; break;
case SWT.COLOR_INFO_FOREGROUND: gdkColor = COLOR_INFO_FOREGROUND; break;
case SWT.COLOR_INFO_BACKGROUND: gdkColor = COLOR_INFO_BACKGROUND; break;
case SWT.COLOR_TITLE_FOREGROUND: gdkColor = COLOR_TITLE_FOREGROUND; break;
@@ -2281,12 +2282,30 @@ GdkColor toGdkColor (GdkRGBA rgba, double m) {
}
void initializeSystemColors () {
+ long /*int*/ tooltipShellHandle = OS.gtk_window_new (OS.GTK_WINDOW_POPUP);
+ if (tooltipShellHandle == 0) error (SWT.ERROR_NO_HANDLES);
+ byte[] gtk_tooltip = Converter.wcsToMbcs (null, OS.GTK3 ? "gtk-tooltip" : "gtk-tooltips", true); //$NON-NLS-1$
+ OS.gtk_widget_set_name (tooltipShellHandle, gtk_tooltip);
+ OS.gtk_widget_realize (tooltipShellHandle);
+
+ /* Initialize link foreground */
+ long /*int*/ linkWidget = OS.gtk_label_new (new byte[1]);
+ if (linkWidget == 0) error (SWT.ERROR_NO_HANDLES);
+ OS.gtk_container_add (tooltipShellHandle, linkWidget);
+ long /*int*/ [] linkColor = new long /*int*/ [1];
+ OS.gtk_widget_style_get (linkWidget, OS.link_color, linkColor, 0);
+ GdkColor gdkColor = new GdkColor();
+ if (linkColor [0] != 0) {
+ OS.memmove (gdkColor, linkColor[0], GdkColor.sizeof);
+ OS.gdk_color_free (linkColor [0]);
+ } else {
+ gdkColor.blue = (short)0xeeee;
+ }
+ long /*int*/ colormap = OS.gdk_colormap_get_system();
+ OS.gdk_colormap_alloc_color(colormap, gdkColor, true, true);
+ COLOR_LINK_FOREGROUND = gdkColor;
+
if (OS.GTK3) {
- long /*int*/ tooltipShellHandle = OS.gtk_window_new (OS.GTK_WINDOW_POPUP);
- if (tooltipShellHandle == 0) error (SWT.ERROR_NO_HANDLES);
- byte[] gtk_tooltip = Converter.wcsToMbcs (null, "gtk-tooltip", true); //$NON-NLS-1$
- OS.gtk_widget_set_name (tooltipShellHandle, gtk_tooltip);
- OS.gtk_widget_realize (tooltipShellHandle);
long /*int*/ context = OS.gtk_widget_get_style_context (tooltipShellHandle);
OS.gtk_style_context_add_class (context, OS.GTK_STYLE_CLASS_TOOLTIP);
GdkRGBA rgba = new GdkRGBA();
@@ -2339,14 +2358,7 @@ void initializeSystemColors () {
return;
}
- GdkColor gdkColor;
-
/* Get Tooltip resources */
- long /*int*/ tooltipShellHandle = OS.gtk_window_new (OS.GTK_WINDOW_POPUP);
- if (tooltipShellHandle == 0) error (SWT.ERROR_NO_HANDLES);
- byte[] gtk_tooltips = Converter.wcsToMbcs (null, "gtk-tooltips", true); //$NON-NLS-1$
- OS.gtk_widget_set_name (tooltipShellHandle, gtk_tooltips);
- OS.gtk_widget_realize (tooltipShellHandle);
long /*int*/ tooltipStyle = OS.gtk_widget_get_style (tooltipShellHandle);
gdkColor = new GdkColor();
OS.gtk_style_get_fg (tooltipStyle, OS.GTK_STATE_NORMAL, gdkColor);
@@ -3513,7 +3525,7 @@ void releaseDisplay () {
COLOR_LIST_SELECTION_INACTIVE = COLOR_LIST_SELECTION_TEXT_INACTIVE =
COLOR_WIDGET_FOREGROUND = COLOR_TITLE_FOREGROUND = COLOR_TITLE_BACKGROUND = COLOR_TITLE_BACKGROUND_GRADIENT =
COLOR_TITLE_INACTIVE_FOREGROUND = COLOR_TITLE_INACTIVE_BACKGROUND = COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT =
- COLOR_INFO_BACKGROUND = COLOR_INFO_FOREGROUND = null;
+ COLOR_INFO_BACKGROUND = COLOR_INFO_FOREGROUND = COLOR_LINK_FOREGROUND = null;
/* Dispose the event callback */
OS.gdk_event_handler_set (0, 0, 0);