8329471: Remove GTK2
Reviewed-by: abhiscxk, prr, ihse
This commit is contained in:
parent
088871ce36
commit
12c553f128
@ -237,7 +237,6 @@ ifeq ($(call isTargetOs, windows macosx)+$(ENABLE_HEADLESS_ONLY), false+false)
|
|||||||
DISABLED_WARNINGS_gcc := int-to-pointer-cast, \
|
DISABLED_WARNINGS_gcc := int-to-pointer-cast, \
|
||||||
DISABLED_WARNINGS_gcc_awt_Taskbar.c := parentheses, \
|
DISABLED_WARNINGS_gcc_awt_Taskbar.c := parentheses, \
|
||||||
DISABLED_WARNINGS_gcc_GLXSurfaceData.c := unused-function, \
|
DISABLED_WARNINGS_gcc_GLXSurfaceData.c := unused-function, \
|
||||||
DISABLED_WARNINGS_gcc_gtk2_interface.c := parentheses type-limits, \
|
|
||||||
DISABLED_WARNINGS_gcc_gtk3_interface.c := parentheses type-limits \
|
DISABLED_WARNINGS_gcc_gtk3_interface.c := parentheses type-limits \
|
||||||
unused-function, \
|
unused-function, \
|
||||||
DISABLED_WARNINGS_gcc_OGLBufImgOps.c := format-nonliteral, \
|
DISABLED_WARNINGS_gcc_OGLBufImgOps.c := format-nonliteral, \
|
||||||
@ -252,7 +251,6 @@ ifeq ($(call isTargetOs, windows macosx)+$(ENABLE_HEADLESS_ONLY), false+false)
|
|||||||
DISABLED_WARNINGS_gcc_XToolkit.c := unused-result, \
|
DISABLED_WARNINGS_gcc_XToolkit.c := unused-result, \
|
||||||
DISABLED_WARNINGS_gcc_XWindow.c := unused-function, \
|
DISABLED_WARNINGS_gcc_XWindow.c := unused-function, \
|
||||||
DISABLED_WARNINGS_clang_awt_Taskbar.c := parentheses, \
|
DISABLED_WARNINGS_clang_awt_Taskbar.c := parentheses, \
|
||||||
DISABLED_WARNINGS_clang_gtk2_interface.c := parentheses, \
|
|
||||||
DISABLED_WARNINGS_clang_gtk3_interface.c := parentheses, \
|
DISABLED_WARNINGS_clang_gtk3_interface.c := parentheses, \
|
||||||
DISABLED_WARNINGS_clang_OGLBufImgOps.c := format-nonliteral, \
|
DISABLED_WARNINGS_clang_OGLBufImgOps.c := format-nonliteral, \
|
||||||
DISABLED_WARNINGS_clang_OGLPaints.c := format-nonliteral, \
|
DISABLED_WARNINGS_clang_OGLPaints.c := format-nonliteral, \
|
||||||
@ -262,8 +260,6 @@ ifeq ($(call isTargetOs, windows macosx)+$(ENABLE_HEADLESS_ONLY), false+false)
|
|||||||
DISABLED_WARNINGS_clang_aix_awt_Taskbar.c := parentheses, \
|
DISABLED_WARNINGS_clang_aix_awt_Taskbar.c := parentheses, \
|
||||||
DISABLED_WARNINGS_clang_aix_OGLPaints.c := format-nonliteral, \
|
DISABLED_WARNINGS_clang_aix_OGLPaints.c := format-nonliteral, \
|
||||||
DISABLED_WARNINGS_clang_aix_OGLBufImgOps.c := format-nonliteral, \
|
DISABLED_WARNINGS_clang_aix_OGLBufImgOps.c := format-nonliteral, \
|
||||||
DISABLED_WARNINGS_clang_aix_gtk2_interface.c := parentheses \
|
|
||||||
logical-op-parentheses, \
|
|
||||||
DISABLED_WARNINGS_clang_aix_gtk3_interface.c := parentheses \
|
DISABLED_WARNINGS_clang_aix_gtk3_interface.c := parentheses \
|
||||||
logical-op-parentheses, \
|
logical-op-parentheses, \
|
||||||
DISABLED_WARNINGS_clang_aix_sun_awt_X11_GtkFileDialogPeer.c := \
|
DISABLED_WARNINGS_clang_aix_sun_awt_X11_GtkFileDialogPeer.c := \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -61,7 +61,7 @@ class GTKEngine {
|
|||||||
/** Size of the image cache */
|
/** Size of the image cache */
|
||||||
private static final int CACHE_SIZE = 50;
|
private static final int CACHE_SIZE = 50;
|
||||||
|
|
||||||
/** This enum mirrors that in gtk2_interface.h */
|
/** This enum mirrors that in gtk_interface.h */
|
||||||
static enum WidgetType {
|
static enum WidgetType {
|
||||||
BUTTON, CHECK_BOX, CHECK_BOX_MENU_ITEM, COLOR_CHOOSER,
|
BUTTON, CHECK_BOX, CHECK_BOX_MENU_ITEM, COLOR_CHOOSER,
|
||||||
COMBO_BOX, COMBO_BOX_ARROW_BUTTON, COMBO_BOX_TEXT_FIELD,
|
COMBO_BOX, COMBO_BOX_ARROW_BUTTON, COMBO_BOX_TEXT_FIELD,
|
||||||
@ -493,13 +493,13 @@ class GTKEngine {
|
|||||||
GTKLookAndFeel.synthStateToGTKStateType(state).ordinal();
|
GTKLookAndFeel.synthStateToGTKStateType(state).ordinal();
|
||||||
int synthState = context.getComponentState();
|
int synthState = context.getComponentState();
|
||||||
Container parent = context.getComponent().getParent();
|
Container parent = context.getComponent().getParent();
|
||||||
if(GTKLookAndFeel.is3()) {
|
|
||||||
if (parent != null && parent.getParent() instanceof JComboBox) {
|
if (parent != null && parent.getParent() instanceof JComboBox) {
|
||||||
if (parent.getParent().hasFocus()) {
|
if (parent.getParent().hasFocus()) {
|
||||||
synthState |= SynthConstants.FOCUSED;
|
synthState |= SynthConstants.FOCUSED;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int dir = getTextDirection(context);
|
int dir = getTextDirection(context);
|
||||||
int widget = getWidgetType(context.getComponent(), id).ordinal();
|
int widget = getWidgetType(context.getComponent(), id).ordinal();
|
||||||
native_paint_shadow(widget, gtkState, shadowType.ordinal(), detail,
|
native_paint_shadow(widget, gtkState, shadowType.ordinal(), detail,
|
||||||
@ -628,7 +628,7 @@ class GTKEngine {
|
|||||||
cache.flush();
|
cache.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* GtkSettings enum mirrors that in gtk2_interface.h */
|
/* GtkSettings enum mirrors that in gtk_interface.h */
|
||||||
public Object getSetting(Settings property) {
|
public Object getSetting(Settings property) {
|
||||||
synchronized(sun.awt.UNIXToolkit.GTK_LOCK) {
|
synchronized(sun.awt.UNIXToolkit.GTK_LOCK) {
|
||||||
return native_get_gtk_setting(property.ordinal());
|
return native_get_gtk_setting(property.ordinal());
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -44,7 +44,7 @@ class GTKIconFactory {
|
|||||||
static final int CHECK_ICON_EXTRA_INSET = 1;
|
static final int CHECK_ICON_EXTRA_INSET = 1;
|
||||||
static final int DEFAULT_ICON_SPACING = 2;
|
static final int DEFAULT_ICON_SPACING = 2;
|
||||||
static final int DEFAULT_ICON_SIZE = 13;
|
static final int DEFAULT_ICON_SIZE = 13;
|
||||||
static final int DEFAULT_TOGGLE_MENU_ITEM_SIZE = 12; // For pre-gtk2.4
|
static final int DEFAULT_TOGGLE_MENU_ITEM_SIZE = 12;
|
||||||
|
|
||||||
private static final String RADIO_BUTTON_ICON = "paintRadioButtonIcon";
|
private static final String RADIO_BUTTON_ICON = "paintRadioButtonIcon";
|
||||||
private static final String CHECK_BOX_ICON = "paintCheckBoxIcon";
|
private static final String CHECK_BOX_ICON = "paintCheckBoxIcon";
|
||||||
@ -214,7 +214,7 @@ class GTKIconFactory {
|
|||||||
|
|
||||||
Region region = context.getRegion();
|
Region region = context.getRegion();
|
||||||
GTKStyle style = (GTKStyle) context.getStyle();
|
GTKStyle style = (GTKStyle) context.getStyle();
|
||||||
if (GTKLookAndFeel.is3() && region == Region.MENU) {
|
if (region == Region.MENU) {
|
||||||
Object value = style.getClassSpecificValue("arrow-scaling");
|
Object value = style.getClassSpecificValue("arrow-scaling");
|
||||||
if (value instanceof Number) {
|
if (value instanceof Number) {
|
||||||
iconDimension = (int)(((Number) value).floatValue() *
|
iconDimension = (int)(((Number) value).floatValue() *
|
||||||
|
@ -77,7 +77,6 @@ import sun.swing.SwingUtilities2;
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("serial") // Superclass not serializable
|
@SuppressWarnings("serial") // Superclass not serializable
|
||||||
public class GTKLookAndFeel extends SynthLookAndFeel {
|
public class GTKLookAndFeel extends SynthLookAndFeel {
|
||||||
private static boolean IS_22;
|
|
||||||
private static boolean IS_3;
|
private static boolean IS_3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -124,17 +123,6 @@ public class GTKLookAndFeel extends SynthLookAndFeel {
|
|||||||
*/
|
*/
|
||||||
private static String gtkThemeName = "Default";
|
private static String gtkThemeName = "Default";
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if running on system containing at least 2.2.
|
|
||||||
*/
|
|
||||||
static boolean is2_2() {
|
|
||||||
// NOTE: We're currently hard coding to use 2.2.
|
|
||||||
// If we want to support both GTK 2.0 and 2.2, we'll
|
|
||||||
// need to get the major/minor/micro version from the .so.
|
|
||||||
// Refer to bug 4912613 for details.
|
|
||||||
return IS_22;
|
|
||||||
}
|
|
||||||
|
|
||||||
static boolean is3() {
|
static boolean is3() {
|
||||||
return IS_3;
|
return IS_3;
|
||||||
}
|
}
|
||||||
@ -1454,17 +1442,7 @@ public class GTKLookAndFeel extends SynthLookAndFeel {
|
|||||||
throw new InternalError("Unable to load native GTK libraries");
|
throw new InternalError("Unable to load native GTK libraries");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UNIXToolkit.getGtkVersion() == UNIXToolkit.GtkVersions.GTK2) {
|
if (UNIXToolkit.getGtkVersion() == UNIXToolkit.GtkVersions.GTK3) {
|
||||||
@SuppressWarnings("removal")
|
|
||||||
String version = AccessController.doPrivileged(
|
|
||||||
new GetPropertyAction("jdk.gtk.version"));
|
|
||||||
if (version != null) {
|
|
||||||
IS_22 = version.equals("2.2");
|
|
||||||
} else {
|
|
||||||
IS_22 = true;
|
|
||||||
}
|
|
||||||
} else if (UNIXToolkit.getGtkVersion() ==
|
|
||||||
UNIXToolkit.GtkVersions.GTK3) {
|
|
||||||
IS_3 = true;
|
IS_3 = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,20 +211,7 @@ class GTKPainter extends SynthPainter {
|
|||||||
int gtkState = GTKLookAndFeel.synthStateToGTKState(
|
int gtkState = GTKLookAndFeel.synthStateToGTKState(
|
||||||
id, context.getComponentState());
|
id, context.getComponentState());
|
||||||
if (gtkState == SynthConstants.MOUSE_OVER) {
|
if (gtkState == SynthConstants.MOUSE_OVER) {
|
||||||
if (GTKLookAndFeel.is3()) {
|
paintComponentBackground(context, g, x, y, w, h);
|
||||||
paintComponentBackground(context, g, x, y, w, h);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
synchronized (UNIXToolkit.GTK_LOCK) {
|
|
||||||
if (! ENGINE.paintCachedImage(g, x, y, w, h, id)) {
|
|
||||||
ShadowType shadow = (GTKLookAndFeel.is2_2() ?
|
|
||||||
ShadowType.NONE : ShadowType.OUT);
|
|
||||||
ENGINE.startPainting(g, x, y, w, h, id);
|
|
||||||
ENGINE.paintBox(g, context, id, gtkState,
|
|
||||||
shadow, "menuitem", x, y, w, h);
|
|
||||||
ENGINE.finishPainting();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -570,21 +557,7 @@ class GTKPainter extends SynthPainter {
|
|||||||
int gtkState = GTKLookAndFeel.synthStateToGTKState(
|
int gtkState = GTKLookAndFeel.synthStateToGTKState(
|
||||||
context.getRegion(), context.getComponentState());
|
context.getRegion(), context.getComponentState());
|
||||||
if (gtkState == SynthConstants.MOUSE_OVER) {
|
if (gtkState == SynthConstants.MOUSE_OVER) {
|
||||||
if (GTKLookAndFeel.is3()) {
|
paintComponentBackground(context, g, x, y, w, h);
|
||||||
paintComponentBackground(context, g, x, y, w, h);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Region id = Region.MENU_ITEM;
|
|
||||||
synchronized (UNIXToolkit.GTK_LOCK) {
|
|
||||||
if (! ENGINE.paintCachedImage(g, x, y, w, h, id)) {
|
|
||||||
ShadowType shadow = (GTKLookAndFeel.is2_2() ?
|
|
||||||
ShadowType.NONE : ShadowType.OUT);
|
|
||||||
ENGINE.startPainting(g, x, y, w, h, id);
|
|
||||||
ENGINE.paintBox(g, context, id, gtkState, shadow,
|
|
||||||
"menuitem", x, y, w, h);
|
|
||||||
ENGINE.finishPainting();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -698,17 +671,14 @@ class GTKPainter extends SynthPainter {
|
|||||||
} else {
|
} else {
|
||||||
h -= (insets.top + insets.bottom);
|
h -= (insets.top + insets.bottom);
|
||||||
}
|
}
|
||||||
if (GTKLookAndFeel.is3()) {
|
|
||||||
if (id == Region.POPUP_MENU_SEPARATOR) {
|
if (id == Region.POPUP_MENU_SEPARATOR) {
|
||||||
detail = "menuitem";
|
detail = "menuitem";
|
||||||
h -= (insets.top + insets.bottom);
|
h -= (insets.top + insets.bottom);
|
||||||
} else {
|
|
||||||
detail = "separator";
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
detail = orientation == JSeparator.HORIZONTAL ?
|
detail = "separator";
|
||||||
"hseparator" : "vseparator";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized (UNIXToolkit.GTK_LOCK) {
|
synchronized (UNIXToolkit.GTK_LOCK) {
|
||||||
if (! ENGINE.paintCachedImage(g, x, y, w, h, id, state,
|
if (! ENGINE.paintCachedImage(g, x, y, w, h, id, state,
|
||||||
detail, orientation)) {
|
detail, orientation)) {
|
||||||
@ -823,15 +793,15 @@ class GTKPainter extends SynthPainter {
|
|||||||
// The ubuntulooks engine paints slider troughs differently depending
|
// The ubuntulooks engine paints slider troughs differently depending
|
||||||
// on the current slider value and its component orientation.
|
// on the current slider value and its component orientation.
|
||||||
JSlider slider = (JSlider)context.getComponent();
|
JSlider slider = (JSlider)context.getComponent();
|
||||||
if (GTKLookAndFeel.is3()) {
|
|
||||||
if (slider.getOrientation() == JSlider.VERTICAL) {
|
if (slider.getOrientation() == JSlider.VERTICAL) {
|
||||||
y += 1;
|
y += 1;
|
||||||
h -= 2;
|
h -= 2;
|
||||||
} else {
|
} else {
|
||||||
x += 1;
|
x += 1;
|
||||||
w -= 2;
|
w -= 2;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double value = slider.getValue();
|
double value = slider.getValue();
|
||||||
double min = slider.getMinimum();
|
double min = slider.getMinimum();
|
||||||
double max = slider.getMaximum();
|
double max = slider.getMaximum();
|
||||||
@ -865,7 +835,7 @@ class GTKPainter extends SynthPainter {
|
|||||||
Region id = context.getRegion();
|
Region id = context.getRegion();
|
||||||
int gtkState = GTKLookAndFeel.synthStateToGTKState(
|
int gtkState = GTKLookAndFeel.synthStateToGTKState(
|
||||||
id, context.getComponentState());
|
id, context.getComponentState());
|
||||||
boolean hasFocus = GTKLookAndFeel.is3() &&
|
boolean hasFocus =
|
||||||
((context.getComponentState() & SynthConstants.FOCUSED) != 0);
|
((context.getComponentState() & SynthConstants.FOCUSED) != 0);
|
||||||
synchronized (UNIXToolkit.GTK_LOCK) {
|
synchronized (UNIXToolkit.GTK_LOCK) {
|
||||||
if (! ENGINE.paintCachedImage(g, x, y, w, h, id, gtkState, dir,
|
if (! ENGINE.paintCachedImage(g, x, y, w, h, id, gtkState, dir,
|
||||||
@ -1059,21 +1029,10 @@ class GTKPainter extends SynthPainter {
|
|||||||
int yThickness = style.getYThickness();
|
int yThickness = style.getYThickness();
|
||||||
|
|
||||||
ENGINE.startPainting(g, x, y, w, h, id, state);
|
ENGINE.startPainting(g, x, y, w, h, id, state);
|
||||||
if (GTKLookAndFeel.is3()) {
|
ENGINE.paintBackground(g, context, id, gtkState, null,
|
||||||
ENGINE.paintBackground(g, context, id, gtkState, null,
|
x, y, w, h);
|
||||||
x, y, w, h);
|
|
||||||
}
|
|
||||||
ENGINE.paintShadow(g, context, id, gtkState,
|
ENGINE.paintShadow(g, context, id, gtkState,
|
||||||
ShadowType.IN, "entry", x, y, w, h);
|
ShadowType.IN, "entry", x, y, w, h);
|
||||||
if (!GTKLookAndFeel.is3()) {
|
|
||||||
ENGINE.paintFlatBox(g, context, id,
|
|
||||||
gtkState, ShadowType.NONE, "entry_bg",
|
|
||||||
x + xThickness,
|
|
||||||
y + yThickness,
|
|
||||||
w - (2 * xThickness),
|
|
||||||
h - (2 * yThickness),
|
|
||||||
ColorType.TEXT_BACKGROUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (focusSize > 0 && (state & SynthConstants.FOCUSED) != 0) {
|
if (focusSize > 0 && (state & SynthConstants.FOCUSED) != 0) {
|
||||||
if (!interiorFocus) {
|
if (!interiorFocus) {
|
||||||
@ -1084,14 +1043,14 @@ class GTKPainter extends SynthPainter {
|
|||||||
} else {
|
} else {
|
||||||
if (containerParent instanceof JComboBox) {
|
if (containerParent instanceof JComboBox) {
|
||||||
x += (focusSize + 2);
|
x += (focusSize + 2);
|
||||||
y += focusSize + (GTKLookAndFeel.is3() ? 3 : 1);
|
y += focusSize + 3;
|
||||||
w -= 2 * focusSize + (GTKLookAndFeel.is3() ? 4 : 1);
|
w -= 2 * focusSize + 4;
|
||||||
h -= 2 * focusSize + (GTKLookAndFeel.is3() ? 6 : 2);
|
h -= 2 * focusSize + 6;
|
||||||
} else {
|
} else {
|
||||||
x += focusSize + (GTKLookAndFeel.is3() ? 2 : 0);
|
x += focusSize + 2;
|
||||||
y += focusSize + (GTKLookAndFeel.is3() ? 2 :0 );
|
y += focusSize + 2;
|
||||||
w -= 2 * focusSize + (GTKLookAndFeel.is3() ? 4 : 0);
|
w -= 2 * focusSize + 4;
|
||||||
h -= 2 * focusSize + (GTKLookAndFeel.is3() ? 4 : 0);
|
h -= 2 * focusSize + 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ENGINE.paintFocus(g, context, id, gtkState,
|
ENGINE.paintFocus(g, context, id, gtkState,
|
||||||
@ -1437,11 +1396,6 @@ class GTKPainter extends SynthPainter {
|
|||||||
if (gtkState == SynthConstants.MOUSE_OVER) {
|
if (gtkState == SynthConstants.MOUSE_OVER) {
|
||||||
shadow = ShadowType.IN;
|
shadow = ShadowType.IN;
|
||||||
}
|
}
|
||||||
if (!GTKLookAndFeel.is3()) {
|
|
||||||
x += 3;
|
|
||||||
y += 3;
|
|
||||||
w = h = 7;
|
|
||||||
}
|
|
||||||
ENGINE.paintArrow(g, context, Region.MENU_ITEM, gtkState, shadow,
|
ENGINE.paintArrow(g, context, Region.MENU_ITEM, gtkState, shadow,
|
||||||
dir, "menuitem", x, y, w, h);
|
dir, "menuitem", x, y, w, h);
|
||||||
}
|
}
|
||||||
|
@ -751,14 +751,7 @@ class GTKStyle extends SynthStyle implements GTKConstants {
|
|||||||
region == Region.EDITOR_PANE) {
|
region == Region.EDITOR_PANE) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!GTKLookAndFeel.is3()) {
|
|
||||||
if (region == Region.FORMATTED_TEXT_FIELD ||
|
|
||||||
region == Region.PASSWORD_FIELD ||
|
|
||||||
region == Region.SPINNER ||
|
|
||||||
region == Region.TEXT_FIELD) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Component c = context.getComponent();
|
Component c = context.getComponent();
|
||||||
String name = c.getName();
|
String name = c.getName();
|
||||||
if (name == "ComboBox.renderer" || name == "ComboBox.listRenderer") {
|
if (name == "ComboBox.renderer" || name == "ComboBox.listRenderer") {
|
||||||
@ -884,7 +877,7 @@ class GTKStyle extends SynthStyle implements GTKConstants {
|
|||||||
int focusPad =
|
int focusPad =
|
||||||
getClassSpecificIntValue(context, "focus-padding", 1);
|
getClassSpecificIntValue(context, "focus-padding", 1);
|
||||||
return indicatorSpacing + focusSize + focusPad;
|
return indicatorSpacing + focusSize + focusPad;
|
||||||
} else if (GTKLookAndFeel.is3() && "ComboBox.forceOpaque".equals(key)) {
|
} else if ("ComboBox.forceOpaque".equals(key)) {
|
||||||
return true;
|
return true;
|
||||||
} else if ("Tree.expanderSize".equals(key)) {
|
} else if ("Tree.expanderSize".equals(key)) {
|
||||||
Object value = getClassSpecificValue("expander-size");
|
Object value = getClassSpecificValue("expander-size");
|
||||||
|
@ -70,19 +70,12 @@ public abstract class UNIXToolkit extends SunToolkit
|
|||||||
private static final int[] BAND_OFFSETS_ALPHA = { 0, 1, 2, 3 };
|
private static final int[] BAND_OFFSETS_ALPHA = { 0, 1, 2, 3 };
|
||||||
private static final int DEFAULT_DATATRANSFER_TIMEOUT = 10000;
|
private static final int DEFAULT_DATATRANSFER_TIMEOUT = 10000;
|
||||||
|
|
||||||
private static final String GTK2_DEPRECATION_MESSAGE =
|
|
||||||
"WARNING: the GTK 2 library is deprecated and " +
|
|
||||||
"its support will be removed in a future release";
|
|
||||||
private static volatile boolean gtk2WarningIssued = false;
|
|
||||||
|
|
||||||
// Allowed GTK versions
|
// Allowed GTK versions
|
||||||
public enum GtkVersions {
|
public enum GtkVersions {
|
||||||
ANY(0),
|
ANY(0),
|
||||||
GTK2(Constants.GTK2_MAJOR_NUMBER),
|
|
||||||
GTK3(Constants.GTK3_MAJOR_NUMBER);
|
GTK3(Constants.GTK3_MAJOR_NUMBER);
|
||||||
|
|
||||||
static class Constants {
|
static class Constants {
|
||||||
static final int GTK2_MAJOR_NUMBER = 2;
|
|
||||||
static final int GTK3_MAJOR_NUMBER = 3;
|
static final int GTK3_MAJOR_NUMBER = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,8 +87,6 @@ public abstract class UNIXToolkit extends SunToolkit
|
|||||||
|
|
||||||
public static GtkVersions getVersion(int number) {
|
public static GtkVersions getVersion(int number) {
|
||||||
switch (number) {
|
switch (number) {
|
||||||
case Constants.GTK2_MAJOR_NUMBER:
|
|
||||||
return GTK2;
|
|
||||||
case Constants.GTK3_MAJOR_NUMBER:
|
case Constants.GTK3_MAJOR_NUMBER:
|
||||||
return GTK3;
|
return GTK3;
|
||||||
default:
|
default:
|
||||||
@ -498,15 +489,7 @@ public abstract class UNIXToolkit extends SunToolkit
|
|||||||
@SuppressWarnings("removal")
|
@SuppressWarnings("removal")
|
||||||
String version = AccessController.doPrivileged(
|
String version = AccessController.doPrivileged(
|
||||||
new GetPropertyAction("jdk.gtk.version"));
|
new GetPropertyAction("jdk.gtk.version"));
|
||||||
if (version == null) {
|
if ("3".equals(version)) {
|
||||||
return GtkVersions.ANY;
|
|
||||||
} else if (version.startsWith("2")) {
|
|
||||||
if (!gtk2WarningIssued) {
|
|
||||||
System.err.println(GTK2_DEPRECATION_MESSAGE);
|
|
||||||
gtk2WarningIssued = true;
|
|
||||||
}
|
|
||||||
return GtkVersions.GTK2;
|
|
||||||
} else if("3".equals(version) ){
|
|
||||||
return GtkVersions.GTK3;
|
return GtkVersions.GTK3;
|
||||||
}
|
}
|
||||||
return GtkVersions.ANY;
|
return GtkVersions.ANY;
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,448 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
||||||
*
|
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
|
||||||
* published by the Free Software Foundation. Oracle designates this
|
|
||||||
* particular file as subject to the "Classpath" exception as provided
|
|
||||||
* by Oracle in the LICENSE file that accompanied this code.
|
|
||||||
*
|
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
* version 2 for more details (a copy is included in the LICENSE file that
|
|
||||||
* accompanied this code).
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License version
|
|
||||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
|
||||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
*
|
|
||||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
||||||
* or visit www.oracle.com if you need additional information or have any
|
|
||||||
* questions.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HEADLESS
|
|
||||||
#error This file should not be included in headless library
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef _GTK2_INTERFACE_H
|
|
||||||
#define _GTK2_INTERFACE_H
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <jni.h>
|
|
||||||
#include <X11/X.h>
|
|
||||||
#include "gtk_interface.h"
|
|
||||||
|
|
||||||
#define GTK_HAS_FOCUS (1 << 12)
|
|
||||||
#define GTK_HAS_DEFAULT (1 << 14)
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
GTK_WINDOW_TOPLEVEL,
|
|
||||||
GTK_WINDOW_POPUP
|
|
||||||
} GtkWindowType;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
G_PARAM_READABLE = 1 << 0,
|
|
||||||
G_PARAM_WRITABLE = 1 << 1,
|
|
||||||
G_PARAM_CONSTRUCT = 1 << 2,
|
|
||||||
G_PARAM_CONSTRUCT_ONLY = 1 << 3,
|
|
||||||
G_PARAM_LAX_VALIDATION = 1 << 4,
|
|
||||||
G_PARAM_PRIVATE = 1 << 5
|
|
||||||
} GParamFlags;
|
|
||||||
|
|
||||||
/* We define all structure pointers to be void* */
|
|
||||||
typedef void GVfs;
|
|
||||||
|
|
||||||
typedef void GdkColormap;
|
|
||||||
typedef void GdkDrawable;
|
|
||||||
typedef void GdkGC;
|
|
||||||
typedef void GdkPixmap;
|
|
||||||
|
|
||||||
typedef void GtkFixed;
|
|
||||||
typedef void GtkMenuItem;
|
|
||||||
typedef void GtkMenuShell;
|
|
||||||
typedef void GtkWidgetClass;
|
|
||||||
typedef void PangoFontDescription;
|
|
||||||
typedef void GtkSettings;
|
|
||||||
|
|
||||||
/* Some real structures */
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
guint32 pixel;
|
|
||||||
guint16 red;
|
|
||||||
guint16 green;
|
|
||||||
guint16 blue;
|
|
||||||
} GdkColor;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
gint fd;
|
|
||||||
gushort events;
|
|
||||||
gushort revents;
|
|
||||||
} GPollFD;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
gint x;
|
|
||||||
gint y;
|
|
||||||
gint width;
|
|
||||||
gint height;
|
|
||||||
} GtkAllocation;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
gint width;
|
|
||||||
gint height;
|
|
||||||
} GtkRequisition;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GtkWidgetClass *g_class;
|
|
||||||
} GTypeInstance;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
gint left;
|
|
||||||
gint right;
|
|
||||||
gint top;
|
|
||||||
gint bottom;
|
|
||||||
} GtkBorder;
|
|
||||||
|
|
||||||
/******************************************************
|
|
||||||
* FIXME: it is more safe to include gtk headers for
|
|
||||||
* the precise type definition of GType and other
|
|
||||||
* structures. This is a place where getting rid of gtk
|
|
||||||
* headers may be dangerous.
|
|
||||||
******************************************************/
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
GType g_type;
|
|
||||||
|
|
||||||
union {
|
|
||||||
gint v_int;
|
|
||||||
guint v_uint;
|
|
||||||
glong v_long;
|
|
||||||
gulong v_ulong;
|
|
||||||
gint64 v_int64;
|
|
||||||
guint64 v_uint64;
|
|
||||||
gfloat v_float;
|
|
||||||
gdouble v_double;
|
|
||||||
gpointer v_pointer;
|
|
||||||
} data[2];
|
|
||||||
} GValue;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
GTypeInstance g_type_instance;
|
|
||||||
|
|
||||||
gchar *name;
|
|
||||||
GParamFlags flags;
|
|
||||||
GType value_type;
|
|
||||||
GType owner_type;
|
|
||||||
} GParamSpec;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GTypeInstance g_type_instance;
|
|
||||||
guint ref_count;
|
|
||||||
void *qdata;
|
|
||||||
} GObject;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GObject parent_instance;
|
|
||||||
guint32 flags;
|
|
||||||
} GtkObject;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
GObject parent_instance;
|
|
||||||
|
|
||||||
GdkColor fg[5];
|
|
||||||
GdkColor bg[5];
|
|
||||||
GdkColor light[5];
|
|
||||||
GdkColor dark[5];
|
|
||||||
GdkColor mid[5];
|
|
||||||
GdkColor text[5];
|
|
||||||
GdkColor base[5];
|
|
||||||
GdkColor text_aa[5]; /* Halfway between text/base */
|
|
||||||
|
|
||||||
GdkColor black;
|
|
||||||
GdkColor white;
|
|
||||||
PangoFontDescription *font_desc;
|
|
||||||
|
|
||||||
gint xthickness;
|
|
||||||
gint ythickness;
|
|
||||||
|
|
||||||
GdkGC *fg_gc[5];
|
|
||||||
GdkGC *bg_gc[5];
|
|
||||||
GdkGC *light_gc[5];
|
|
||||||
GdkGC *dark_gc[5];
|
|
||||||
GdkGC *mid_gc[5];
|
|
||||||
GdkGC *text_gc[5];
|
|
||||||
GdkGC *base_gc[5];
|
|
||||||
GdkGC *text_aa_gc[5];
|
|
||||||
GdkGC *black_gc;
|
|
||||||
GdkGC *white_gc;
|
|
||||||
|
|
||||||
GdkPixmap *bg_pixmap[5];
|
|
||||||
} GtkStyle;
|
|
||||||
|
|
||||||
typedef struct _GtkWidget GtkWidget;
|
|
||||||
struct _GtkWidget
|
|
||||||
{
|
|
||||||
GtkObject object;
|
|
||||||
guint16 private_flags;
|
|
||||||
guint8 state;
|
|
||||||
guint8 saved_state;
|
|
||||||
gchar *name;
|
|
||||||
GtkStyle *style;
|
|
||||||
GtkRequisition requisition;
|
|
||||||
GtkAllocation allocation;
|
|
||||||
GdkWindow *window;
|
|
||||||
GtkWidget *parent;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
GtkWidget widget;
|
|
||||||
|
|
||||||
gfloat xalign;
|
|
||||||
gfloat yalign;
|
|
||||||
|
|
||||||
guint16 xpad;
|
|
||||||
guint16 ypad;
|
|
||||||
} GtkMisc;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GtkWidget widget;
|
|
||||||
GtkWidget *focus_child;
|
|
||||||
guint border_width : 16;
|
|
||||||
guint need_resize : 1;
|
|
||||||
guint resize_mode : 2;
|
|
||||||
guint reallocate_redraws : 1;
|
|
||||||
guint has_focus_chain : 1;
|
|
||||||
} GtkContainer;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GtkContainer container;
|
|
||||||
GtkWidget *child;
|
|
||||||
} GtkBin;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GtkBin bin;
|
|
||||||
GdkWindow *event_window;
|
|
||||||
gchar *label_text;
|
|
||||||
guint activate_timeout;
|
|
||||||
guint constructed : 1;
|
|
||||||
guint in_button : 1;
|
|
||||||
guint button_down : 1;
|
|
||||||
guint relief : 2;
|
|
||||||
guint use_underline : 1;
|
|
||||||
guint use_stock : 1;
|
|
||||||
guint depressed : 1;
|
|
||||||
guint depress_on_activate : 1;
|
|
||||||
guint focus_on_click : 1;
|
|
||||||
} GtkButton;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GtkButton button;
|
|
||||||
guint active : 1;
|
|
||||||
guint draw_indicator : 1;
|
|
||||||
guint inconsistent : 1;
|
|
||||||
} GtkToggleButton;
|
|
||||||
|
|
||||||
typedef struct _GtkAdjustment GtkAdjustment;
|
|
||||||
struct _GtkAdjustment
|
|
||||||
{
|
|
||||||
GtkObject parent_instance;
|
|
||||||
|
|
||||||
gdouble lower;
|
|
||||||
gdouble upper;
|
|
||||||
gdouble value;
|
|
||||||
gdouble step_increment;
|
|
||||||
gdouble page_increment;
|
|
||||||
gdouble page_size;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
GTK_UPDATE_CONTINUOUS,
|
|
||||||
GTK_UPDATE_DISCONTINUOUS,
|
|
||||||
GTK_UPDATE_DELAYED
|
|
||||||
} GtkUpdateType;
|
|
||||||
|
|
||||||
typedef struct _GtkRange GtkRange;
|
|
||||||
struct _GtkRange
|
|
||||||
{
|
|
||||||
GtkWidget widget;
|
|
||||||
GtkAdjustment *adjustment;
|
|
||||||
GtkUpdateType update_policy;
|
|
||||||
guint inverted : 1;
|
|
||||||
/*< protected >*/
|
|
||||||
guint flippable : 1;
|
|
||||||
guint has_stepper_a : 1;
|
|
||||||
guint has_stepper_b : 1;
|
|
||||||
guint has_stepper_c : 1;
|
|
||||||
guint has_stepper_d : 1;
|
|
||||||
guint need_recalc : 1;
|
|
||||||
guint slider_size_fixed : 1;
|
|
||||||
gint min_slider_size;
|
|
||||||
GtkOrientation orientation;
|
|
||||||
GdkRectangle range_rect;
|
|
||||||
gint slider_start, slider_end;
|
|
||||||
gint round_digits;
|
|
||||||
/*< private >*/
|
|
||||||
guint trough_click_forward : 1;
|
|
||||||
guint update_pending : 1;
|
|
||||||
/*GtkRangeLayout * */ void *layout;
|
|
||||||
/*GtkRangeStepTimer * */ void* timer;
|
|
||||||
gint slide_initial_slider_position;
|
|
||||||
gint slide_initial_coordinate;
|
|
||||||
guint update_timeout_id;
|
|
||||||
GdkWindow *event_window;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct _GtkProgressBar GtkProgressBar;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
GTK_PROGRESS_CONTINUOUS,
|
|
||||||
GTK_PROGRESS_DISCRETE
|
|
||||||
} GtkProgressBarStyle;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
GTK_PROGRESS_LEFT_TO_RIGHT,
|
|
||||||
GTK_PROGRESS_RIGHT_TO_LEFT,
|
|
||||||
GTK_PROGRESS_BOTTOM_TO_TOP,
|
|
||||||
GTK_PROGRESS_TOP_TO_BOTTOM
|
|
||||||
} GtkProgressBarOrientation;
|
|
||||||
|
|
||||||
typedef struct _GtkProgress GtkProgress;
|
|
||||||
|
|
||||||
struct _GtkProgress
|
|
||||||
{
|
|
||||||
GtkWidget widget;
|
|
||||||
GtkAdjustment *adjustment;
|
|
||||||
GdkPixmap *offscreen_pixmap;
|
|
||||||
gchar *format;
|
|
||||||
gfloat x_align;
|
|
||||||
gfloat y_align;
|
|
||||||
guint show_text : 1;
|
|
||||||
guint activity_mode : 1;
|
|
||||||
guint use_text_format : 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _GtkProgressBar
|
|
||||||
{
|
|
||||||
GtkProgress progress;
|
|
||||||
GtkProgressBarStyle bar_style;
|
|
||||||
GtkProgressBarOrientation orientation;
|
|
||||||
guint blocks;
|
|
||||||
gint in_block;
|
|
||||||
gint activity_pos;
|
|
||||||
guint activity_step;
|
|
||||||
guint activity_blocks;
|
|
||||||
gdouble pulse_fraction;
|
|
||||||
guint activity_dir : 1;
|
|
||||||
guint ellipsize : 3;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns :
|
|
||||||
* NULL if the GLib library is compatible with the given version, or a string
|
|
||||||
* describing the version mismatch.
|
|
||||||
* Please note that the glib_check_version() is available since 2.6,
|
|
||||||
* so you should use GLIB_CHECK_VERSION macro instead.
|
|
||||||
*/
|
|
||||||
static gchar* (*fp_glib_check_version)(guint required_major, guint required_minor,
|
|
||||||
guint required_micro);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns :
|
|
||||||
* TRUE if the GLib library is compatible with the given version
|
|
||||||
*/
|
|
||||||
#define GLIB_CHECK_VERSION(major, minor, micro) \
|
|
||||||
(fp_glib_check_version && fp_glib_check_version(major, minor, micro) == NULL)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns :
|
|
||||||
* NULL if the GTK+ library is compatible with the given version, or a string
|
|
||||||
* describing the version mismatch.
|
|
||||||
*/
|
|
||||||
static gchar* (*fp_gtk_check_version)(guint required_major, guint required_minor,
|
|
||||||
guint required_micro);
|
|
||||||
|
|
||||||
static void gtk2_init(GtkApi* gtk);
|
|
||||||
|
|
||||||
static void (*fp_g_free)(gpointer mem);
|
|
||||||
static void (*fp_g_object_unref)(gpointer object);
|
|
||||||
static GdkWindow *(*fp_gdk_get_default_root_window) (void);
|
|
||||||
|
|
||||||
static int (*fp_gdk_pixbuf_get_bits_per_sample)(const GdkPixbuf *pixbuf);
|
|
||||||
static guchar *(*fp_gdk_pixbuf_get_pixels)(const GdkPixbuf *pixbuf);
|
|
||||||
static gboolean (*fp_gdk_pixbuf_get_has_alpha)(const GdkPixbuf *pixbuf);
|
|
||||||
static int (*fp_gdk_pixbuf_get_height)(const GdkPixbuf *pixbuf);
|
|
||||||
static int (*fp_gdk_pixbuf_get_n_channels)(const GdkPixbuf *pixbuf);
|
|
||||||
static int (*fp_gdk_pixbuf_get_rowstride)(const GdkPixbuf *pixbuf);
|
|
||||||
static int (*fp_gdk_pixbuf_get_width)(const GdkPixbuf *pixbuf);
|
|
||||||
static GdkPixbuf *(*fp_gdk_pixbuf_new_from_file)(const char *filename, GError **error);
|
|
||||||
static GdkColorspace (*fp_gdk_pixbuf_get_colorspace)(const GdkPixbuf *pixbuf);
|
|
||||||
|
|
||||||
static GdkPixbuf *(*fp_gdk_pixbuf_get_from_drawable)(GdkPixbuf *dest,
|
|
||||||
GdkDrawable *src, GdkColormap *cmap, int src_x, int src_y,
|
|
||||||
int dest_x, int dest_y, int width, int height);
|
|
||||||
static GdkPixbuf *(*fp_gdk_pixbuf_scale_simple)(GdkPixbuf *src,
|
|
||||||
int dest_width, int dest_heigh, GdkInterpType interp_type);
|
|
||||||
|
|
||||||
|
|
||||||
static void (*fp_gtk_widget_destroy)(void *widget);
|
|
||||||
static void (*fp_gtk_window_present)(GtkWindow *window);
|
|
||||||
static void (*fp_gtk_window_move)(GtkWindow *window, gint x, gint y);
|
|
||||||
static void (*fp_gtk_window_resize)(GtkWindow *window, gint width, gint height);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Pointers for GtkFileChooser
|
|
||||||
*/
|
|
||||||
static gchar* (*fp_gtk_file_chooser_get_filename)(GtkFileChooser *chooser);
|
|
||||||
static void (*fp_gtk_widget_hide)(void *widget);
|
|
||||||
static void (*fp_gtk_main_quit)(void);
|
|
||||||
static void* (*fp_gtk_file_chooser_dialog_new)(const gchar *title,
|
|
||||||
GtkWindow *parent, GtkFileChooserAction action,
|
|
||||||
const gchar *first_button_text, ...);
|
|
||||||
static gboolean (*fp_gtk_file_chooser_set_current_folder)(GtkFileChooser *chooser,
|
|
||||||
const gchar *filename);
|
|
||||||
static gboolean (*fp_gtk_file_chooser_set_filename)(GtkFileChooser *chooser,
|
|
||||||
const char *filename);
|
|
||||||
static void (*fp_gtk_file_chooser_set_current_name)(GtkFileChooser *chooser,
|
|
||||||
const gchar *name);
|
|
||||||
static void (*fp_gtk_file_filter_add_custom)(GtkFileFilter *filter,
|
|
||||||
GtkFileFilterFlags needed, GtkFileFilterFunc func, gpointer data,
|
|
||||||
GDestroyNotify notify);
|
|
||||||
static void (*fp_gtk_file_chooser_set_filter)(GtkFileChooser *chooser,
|
|
||||||
GtkFileFilter *filter);
|
|
||||||
static GType (*fp_gtk_file_chooser_get_type)(void);
|
|
||||||
static GtkFileFilter* (*fp_gtk_file_filter_new)(void);
|
|
||||||
static void (*fp_gtk_file_chooser_set_do_overwrite_confirmation)(
|
|
||||||
GtkFileChooser *chooser, gboolean do_overwrite_confirmation);
|
|
||||||
static void (*fp_gtk_file_chooser_set_select_multiple)(
|
|
||||||
GtkFileChooser *chooser, gboolean select_multiple);
|
|
||||||
static gchar* (*fp_gtk_file_chooser_get_current_folder)(GtkFileChooser *chooser);
|
|
||||||
static GSList* (*fp_gtk_file_chooser_get_filenames)(GtkFileChooser *chooser);
|
|
||||||
static guint (*fp_gtk_g_slist_length)(GSList *list);
|
|
||||||
static gulong (*fp_g_signal_connect_data)(gpointer instance,
|
|
||||||
const gchar *detailed_signal, GCallback c_handler, gpointer data,
|
|
||||||
GClosureNotify destroy_data, GConnectFlags connect_flags);
|
|
||||||
static void (*fp_gtk_widget_show)(void *widget);
|
|
||||||
static void (*fp_gtk_main)(void);
|
|
||||||
static guint (*fp_gtk_main_level)(void);
|
|
||||||
static gchar* (*fp_g_path_get_dirname) (const gchar *file_name);
|
|
||||||
static XID (*fp_gdk_x11_drawable_get_xid) (GdkWindow *drawable);
|
|
||||||
|
|
||||||
static GList* (*fp_g_list_append) (GList *list, gpointer data);
|
|
||||||
static void (*fp_g_list_free) (GList *list);
|
|
||||||
static void (*fp_g_list_free_full) (GList *list, GDestroyNotify free_func);
|
|
||||||
|
|
||||||
static gboolean (*fp_gtk_show_uri)(GdkScreen *screen, const gchar *uri,
|
|
||||||
guint32 timestamp, GError **error);
|
|
||||||
|
|
||||||
#endif /* !_GTK2_INTERFACE_H */
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -32,10 +32,8 @@
|
|||||||
#include "jvm_md.h"
|
#include "jvm_md.h"
|
||||||
#include "gtk_interface.h"
|
#include "gtk_interface.h"
|
||||||
|
|
||||||
GtkApi* gtk2_load(JNIEnv *env, const char* lib_name);
|
|
||||||
GtkApi* gtk3_load(JNIEnv *env, const char* lib_name);
|
GtkApi* gtk3_load(JNIEnv *env, const char* lib_name);
|
||||||
|
|
||||||
gboolean gtk2_check(const char* lib_name, gboolean load);
|
|
||||||
gboolean gtk3_check(const char* lib_name, gboolean load);
|
gboolean gtk3_check(const char* lib_name, gboolean load);
|
||||||
|
|
||||||
GtkApi *gtk;
|
GtkApi *gtk;
|
||||||
@ -56,13 +54,6 @@ static GtkLib gtk_libs[] = {
|
|||||||
>k3_load,
|
>k3_load,
|
||||||
>k3_check
|
>k3_check
|
||||||
},
|
},
|
||||||
{
|
|
||||||
GTK_2,
|
|
||||||
JNI_LIB_NAME("gtk-x11-2.0"),
|
|
||||||
VERSIONED_JNI_LIB_NAME("gtk-x11-2.0", "0"),
|
|
||||||
>k2_load,
|
|
||||||
>k2_check
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static GtkLib** get_libs_order(GtkVersion version) {
|
static GtkLib** get_libs_order(GtkVersion version) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -675,7 +675,6 @@ static gboolean isAllDataReady() {
|
|||||||
|
|
||||||
|
|
||||||
static void *pipewire_libhandle = NULL;
|
static void *pipewire_libhandle = NULL;
|
||||||
//glib_version_2_68 false for gtk2, as it comes from gtk3_interface.c
|
|
||||||
|
|
||||||
extern gboolean glib_version_2_68;
|
extern gboolean glib_version_2_68;
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -45,8 +45,9 @@ public class GtkVersionTest {
|
|||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
test(null, "3");
|
test(null, "3");
|
||||||
test("2", "2");
|
// GTK 2 is removed, but the test can still be useful.
|
||||||
test("2.2", "2");
|
// test("2", "2");
|
||||||
|
// test("2.2", "2");
|
||||||
test("3", "3");
|
test("3", "3");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright (c) 2022, JetBrains s.r.o.. All rights reserved.
|
* Copyright (c) 2022, JetBrains s.r.o.. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -41,10 +41,9 @@ import java.io.IOException;
|
|||||||
* @test
|
* @test
|
||||||
* @key headful
|
* @key headful
|
||||||
* @bug 8280861
|
* @bug 8280861
|
||||||
* @summary Verifies Robot screen capture capabilities with different
|
* @summary Verifies Robot screen capture capabilities with available
|
||||||
* Gtk backends and presence of UI scaling
|
* Gtk backends and presence of UI scaling
|
||||||
* @requires os.family == "linux"
|
* @requires os.family == "linux"
|
||||||
* @run main/othervm -Djdk.gtk.version=2 -Dsun.java2d.uiScale=1 ScreenCaptureGtkTest
|
|
||||||
* @run main/othervm -Djdk.gtk.version=3 -Dsun.java2d.uiScale=1 ScreenCaptureGtkTest
|
* @run main/othervm -Djdk.gtk.version=3 -Dsun.java2d.uiScale=1 ScreenCaptureGtkTest
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -53,12 +52,6 @@ public class ScreenCaptureGtkTest {
|
|||||||
Color.GREEN, Color.BLUE, Color.ORANGE, Color.RED};
|
Color.GREEN, Color.BLUE, Color.ORANGE, Color.RED};
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
if ("2".equals(System.getProperty("jdk.gtk.version"))
|
|
||||||
&& System.getenv("WAYLAND_DISPLAY") != null) {
|
|
||||||
// screen capture is not supported with gtk2 on Wayland
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final int topOffset = 50;
|
final int topOffset = 50;
|
||||||
final int leftOffset = 50;
|
final int leftOffset = 50;
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -28,7 +28,6 @@
|
|||||||
@bug 8156121
|
@bug 8156121
|
||||||
@key headful
|
@key headful
|
||||||
@requires os.family == "linux"
|
@requires os.family == "linux"
|
||||||
@run main/othervm -Djdk.gtk.version=2 DemandGTK
|
|
||||||
@run main/othervm -Djdk.gtk.version=3 DemandGTK
|
@run main/othervm -Djdk.gtk.version=3 DemandGTK
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1,91 +0,0 @@
|
|||||||
#!/bin/ksh -p
|
|
||||||
|
|
||||||
#
|
|
||||||
# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
|
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
||||||
#
|
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
|
||||||
# under the terms of the GNU General Public License version 2 only, as
|
|
||||||
# published by the Free Software Foundation.
|
|
||||||
#
|
|
||||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
# version 2 for more details (a copy is included in the LICENSE file that
|
|
||||||
# accompanied this code).
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License version
|
|
||||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
|
||||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
||||||
# or visit www.oracle.com if you need additional information or have any
|
|
||||||
# questions.
|
|
||||||
#
|
|
||||||
|
|
||||||
# @test
|
|
||||||
# @summary Try to force GTK2. We must bail out to GTK3 (if any) if no 2 available.
|
|
||||||
#
|
|
||||||
# @key headful
|
|
||||||
# @bug 8156128 8212903
|
|
||||||
# @compile ProvokeGTK.java
|
|
||||||
# @requires os.family == "linux"
|
|
||||||
# @run shell/timeout=400 DemandGTK2.sh
|
|
||||||
|
|
||||||
#
|
|
||||||
# Note that we depend on
|
|
||||||
# strace in the PATH
|
|
||||||
# /sbin/ldconfig (which may be not in PATH)
|
|
||||||
# It is true for OEL 7 and Ubuntu 14, 16
|
|
||||||
# but may fail in future. Save tomorrow for tomorrow.
|
|
||||||
#
|
|
||||||
# Read DemandGTK2.txt how to prepare GTK2-less machine.
|
|
||||||
#
|
|
||||||
|
|
||||||
which strace
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
echo "Please provide strace: \"which strace\" failed."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
HAVE_2=`/sbin/ldconfig -v 2>/dev/null | grep libgtk-x11-2 | wc -l`
|
|
||||||
HAVE_3=`/sbin/ldconfig -v 2>/dev/null | grep libgtk-3.so | wc -l`
|
|
||||||
|
|
||||||
|
|
||||||
if [ "${HAVE_2}" = "0" ]
|
|
||||||
then
|
|
||||||
|
|
||||||
if [ "${HAVE_3}" = "0" ]
|
|
||||||
then
|
|
||||||
echo "Neither GTK2 nor GTK3 found: system misconfiguration. Exit."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "No GTK 2 library found: we should bail out to 3"
|
|
||||||
strace -o strace.log -fe open,openat ${TESTJAVA}/bin/java -cp ${TESTCLASSPATH} -Djdk.gtk.version=2 ProvokeGTK
|
|
||||||
EXECRES=$?
|
|
||||||
grep 'libgtk-3.*=\ *[0-9]*$' strace.log > logg
|
|
||||||
else
|
|
||||||
echo "There is GTK 2 library: we should use it"
|
|
||||||
strace -o strace.log -fe open,openat ${TESTJAVA}/bin/java -cp ${TESTCLASSPATH} -Djdk.gtk.version=2 ProvokeGTK
|
|
||||||
EXECRES=$?
|
|
||||||
grep 'libgtk-x11.*=\ *[0-9]*$' strace.log > logg
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ${EXECRES} -ne 0 ]
|
|
||||||
then
|
|
||||||
echo "java execution failed for unknown reason, see logs"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat logg
|
|
||||||
if [ -s logg ]
|
|
||||||
then
|
|
||||||
echo "Success."
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
echo "Failed. Examine logs."
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
|||||||
How to prepare an Ubuntu machine for GTK-2-less test run.
|
|
||||||
|
|
||||||
The test DemandGTK2.sh should work well without GTK-2 switching to version 3
|
|
||||||
if there's no GTK-2 library available.
|
|
||||||
At the moment, it's not easy to find a system with GTK-3 and without GTK-2:
|
|
||||||
many programs still depend on version 2.
|
|
||||||
We can, however, rename GTK-2 library for a single test run and then restore
|
|
||||||
it back.
|
|
||||||
|
|
||||||
(1) Find GTK2 library: run
|
|
||||||
/sbin/ldconfig -v 2>/dev/null | grep libgtk-x11-2
|
|
||||||
|
|
||||||
It will output one or two lines like
|
|
||||||
libgtk-x11-2.0.so.0 -> libgtk-x11-2.0.so.0.2400.23
|
|
||||||
Search for the target of that symlink for instance with locate:
|
|
||||||
locate libgtk-x11-2.0.so.0.2400.23
|
|
||||||
Finally, you'll find the libraries. On my current machine they are
|
|
||||||
/usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0.2400.23
|
|
||||||
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.23
|
|
||||||
|
|
||||||
I'm running 64-bit JDK and need to tamper with x86_64 copy only.
|
|
||||||
|
|
||||||
(2) Find running programs depending on this library. They probably would crash
|
|
||||||
if you rename it. Stop them for this test run.
|
|
||||||
That said, I'm afraid it would be impossible to do on a system older than Ubuntu 16.04.
|
|
||||||
On my Ubuntu 16.04 I have only hud-service using this library, and that's OK, it will restart
|
|
||||||
after a crash, if any.
|
|
||||||
To find these programs, run
|
|
||||||
lsof /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.23
|
|
||||||
|
|
||||||
(3) Now,
|
|
||||||
sudo mv /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.23 /usr/lib/x86_64-linux-gnu/bak.libgtk-x11-2.0.so.0.2400.23
|
|
||||||
jtreg DemandGTK2.sh
|
|
||||||
sudo mv /usr/lib/x86_64-linux-gnu/bak.libgtk-x11-2.0.so.0.2400.23 /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.23
|
|
||||||
|
|
||||||
Needless to say, you should substitute your own library path and however you run jtreg.
|
|
@ -1,7 +1,7 @@
|
|||||||
#!/bin/ksh -p
|
#!/bin/ksh -p
|
||||||
|
|
||||||
#
|
#
|
||||||
# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
|
|
||||||
# @test
|
# @test
|
||||||
# @summary Try to force GTK3. We must bail out to GTK2 if no 3 available.
|
# @summary Try to force GTK3.
|
||||||
#
|
#
|
||||||
# @key headful
|
# @key headful
|
||||||
# @bug 8156128 8212903
|
# @bug 8156128 8212903
|
||||||
@ -53,11 +53,8 @@ HAVE_3=`/sbin/ldconfig -v 2>/dev/null | grep libgtk-3.so | wc -l`
|
|||||||
|
|
||||||
if [ "${HAVE_3}" = "0" ]
|
if [ "${HAVE_3}" = "0" ]
|
||||||
then
|
then
|
||||||
|
echo "No GTK 3 library found, do nothing"
|
||||||
echo "No GTK 3 library found: we should bail out to 2"
|
exit 0
|
||||||
strace -o strace.log -fe open,openat ${TESTJAVA}/bin/java -cp ${TESTCLASSPATH} -Djdk.gtk.version=3 ProvokeGTK
|
|
||||||
EXECRES=$?
|
|
||||||
grep 'libgtk-x11.*=\ *[0-9]*$' strace.log > logg
|
|
||||||
else
|
else
|
||||||
echo "There is GTK 3 library: we should use it"
|
echo "There is GTK 3 library: we should use it"
|
||||||
strace -o strace.log -fe open,openat ${TESTJAVA}/bin/java -cp ${TESTCLASSPATH} -Djdk.gtk.version=3 ProvokeGTK
|
strace -o strace.log -fe open,openat ${TESTJAVA}/bin/java -cp ${TESTCLASSPATH} -Djdk.gtk.version=3 ProvokeGTK
|
||||||
|
Loading…
x
Reference in New Issue
Block a user