summaryrefslogtreecommitdiff
path: root/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
diff options
context:
space:
mode:
Diffstat (limited to 'native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c')
-rw-r--r--native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c101
1 files changed, 70 insertions, 31 deletions
diff --git a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
index 5de5d82a6..813529e25 100644
--- a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
+++ b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
@@ -39,7 +39,8 @@ exception statement from your version. */
#include "gtkpeer.h"
#include "gnu_java_awt_peer_gtk_GtkComponentPeer.h"
-#include <gtk/gtkprivate.h>
+#include <gtk/gtk.h>
+
#define AWT_DEFAULT_CURSOR 0
#define AWT_CROSSHAIR_CURSOR 1
@@ -207,7 +208,7 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetCursorUnlocked
GdkWindow *win;
GdkCursorType gdk_cursor_type;
GdkCursor *gdk_cursor;
-
+
ptr = gtkpeer_get_widget (env, obj);
switch (type)
@@ -257,20 +258,27 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetCursorUnlocked
widget = get_widget(GTK_WIDGET(ptr));
- win = widget->window;
- if ((widget->window) == NULL)
- win = GTK_WIDGET(ptr)->window;
-
+
+ win = gtk_widget_get_window(widget);
+ if ((gtk_widget_get_window(widget)) == NULL)
+ win = gtk_widget_get_window(GTK_WIDGET(ptr));
+
if (image == NULL)
gdk_cursor = gdk_cursor_new (gdk_cursor_type);
else
+
gdk_cursor
- = gdk_cursor_new_from_pixbuf (gdk_drawable_get_display (win),
+ = gdk_cursor_new_from_pixbuf (gdk_window_get_display (win),
cp_gtk_image_get_pixbuf (env, image),
x, y);
-
+
gdk_window_set_cursor (win, gdk_cursor);
+
+ #if GTK_MAJOR_VERSION == 2
gdk_cursor_unref (gdk_cursor);
+ #elif GTK_MAJOR_VERSION == 3
+ g_object_unref(gdk_cursor);
+ #endif
/* Make sure the cursor is replaced on screen. */
gdk_flush();
@@ -293,7 +301,8 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetParent
widget = GTK_WIDGET (ptr);
parent_widget = get_widget(GTK_WIDGET (parent_ptr));
- if (widget->parent == NULL)
+
+ if (gtk_widget_get_parent(widget) == NULL)
{
if (GTK_IS_WINDOW (parent_widget))
{
@@ -310,13 +319,15 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetParent
{
gtk_scrolled_window_add_with_viewport
(GTK_SCROLLED_WINDOW (parent_widget), widget);
- gtk_viewport_set_shadow_type (GTK_VIEWPORT (widget->parent),
+
+ gtk_viewport_set_shadow_type (GTK_VIEWPORT (gtk_widget_get_parent(widget)),
GTK_SHADOW_NONE);
}
else
{
- if (widget->parent == NULL)
+
+ if (gtk_widget_get_parent(widget) == NULL)
gtk_fixed_put (GTK_FIXED (parent_widget), widget, 0, 0);
}
}
@@ -350,7 +361,8 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetHasFocus
ptr = gtkpeer_get_widget (env, obj);
- retval = GTK_WIDGET_HAS_FOCUS((GTK_WIDGET (ptr)));
+
+ retval = gtk_widget_has_focus((GTK_WIDGET (ptr)));
gdk_threads_leave ();
@@ -368,7 +380,8 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetCanFocus
ptr = gtkpeer_get_widget (env, obj);
- retval = GTK_WIDGET_CAN_FOCUS((GTK_WIDGET (ptr)));
+
+ retval = gtk_widget_get_can_focus((GTK_WIDGET (ptr)));
gdk_threads_leave ();
@@ -421,11 +434,11 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetDispatchKeyEvent
}
if (GTK_IS_BUTTON (ptr))
- event->key.window = GTK_BUTTON (get_widget(GTK_WIDGET (ptr)))->event_window;
+ event->key.window = gtk_button_get_event_window (GTK_BUTTON (get_widget(GTK_WIDGET (ptr))));
else if (GTK_IS_SCROLLED_WINDOW (get_widget(GTK_WIDGET (ptr))))
- event->key.window = GTK_WIDGET (GTK_SCROLLED_WINDOW (get_widget(GTK_WIDGET (ptr)))->container.child)->window;
+ event->key.window = gtk_widget_get_window(GTK_WIDGET (gtk_bin_get_child(&(GTK_SCROLLED_WINDOW (get_widget(GTK_WIDGET (ptr)))->container))));
else
- event->key.window = get_widget(GTK_WIDGET (ptr))->window;
+ event->key.window = gtk_widget_get_window(get_widget(GTK_WIDGET (ptr)));
event->key.send_event = 0;
event->key.time = (guint32) when;
@@ -502,7 +515,7 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetDispatchKeyEvent
if (!GTK_IS_WINDOW (ptr))
{
if (GTK_IS_SCROLLED_WINDOW (get_widget(GTK_WIDGET (ptr))))
- gtk_widget_event (GTK_WIDGET (GTK_SCROLLED_WINDOW (get_widget(GTK_WIDGET (ptr)))->container.child), event);
+ gtk_widget_event (GTK_WIDGET (gtk_bin_get_child(&(GTK_SCROLLED_WINDOW (get_widget(GTK_WIDGET (ptr)))->container))), event);
else
gtk_widget_event (get_widget(GTK_WIDGET (ptr)), event);
}
@@ -535,7 +548,7 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWindowGetLocationOnScreenUnlocked
ptr = gtkpeer_get_widget (env, obj);
point = (*env)->GetIntArrayElements (env, jpoint, 0);
- gdk_window_get_root_origin (get_widget(GTK_WIDGET (ptr))->window, point, point+1);
+ gdk_window_get_root_origin (gtk_widget_get_window(get_widget(GTK_WIDGET (ptr))), point, point+1);
(*env)->ReleaseIntArrayElements(env, jpoint, point, 0);
}
@@ -569,10 +582,12 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreenUnlocked
widget = get_widget(GTK_WIDGET (ptr));
while(gtk_widget_get_parent(widget) != NULL)
widget = gtk_widget_get_parent(widget);
- gdk_window_get_position (GTK_WIDGET(widget)->window, point, point+1);
+ gdk_window_get_position (gtk_widget_get_window(GTK_WIDGET(widget)), point, point+1);
- *point += GTK_WIDGET(ptr)->allocation.x;
- *(point+1) += GTK_WIDGET(ptr)->allocation.y;
+ GtkAllocation alloc;
+ gtk_widget_get_allocation(GTK_WIDGET(ptr), &alloc);
+ *point += alloc.x;
+ *(point+1) += alloc.y;
(*env)->ReleaseIntArrayElements(env, jpoint, point, 0);
}
@@ -594,9 +609,11 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetDimensions
dims = (*env)->GetIntArrayElements (env, jdims, 0);
dims[0] = dims[1] = 0;
-
+ #if GTK_MAJOR_VERSION == 2
gtk_widget_size_request (get_widget(GTK_WIDGET (ptr)), &requisition);
-
+ #elif GTK_MAJOR_VERSION == 3
+ gtk_widget_get_preferred_size(get_widget(GTK_WIDGET(ptr)), &requisition, NULL);
+ #endif
dims[0] = requisition.width;
dims[1] = requisition.height;
@@ -637,17 +654,33 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetPreferredDimensions
}
else
{
+ #if GTK_MAJOR_VERSION == 3
+ /* Save the widget's current size request. */
+ gtk_widget_get_preferred_size(get_widget(GTK_WIDGET(ptr)), &current_req, NULL);
+
+ /* Get the widget's "natural" size request. */
+ gtk_widget_set_size_request (get_widget(GTK_WIDGET (ptr)), -1, -1);
+ gtk_widget_get_preferred_size(get_widget(GTK_WIDGET (ptr)),NULL, &natural_req);
+
+ /* Reset the widget's size request. */
+ gtk_widget_set_size_request (get_widget(GTK_WIDGET (ptr)),
+ current_req.width, current_req.height);
+
+ #elif GTK_MAJOR_VERSION == 2
/* Save the widget's current size request. */
gtk_widget_size_request (get_widget(GTK_WIDGET (ptr)), &current_req);
+
/* Get the widget's "natural" size request. */
gtk_widget_set_size_request (get_widget(GTK_WIDGET (ptr)), -1, -1);
gtk_widget_size_request (get_widget(GTK_WIDGET (ptr)), &natural_req);
+
/* Reset the widget's size request. */
gtk_widget_set_size_request (get_widget(GTK_WIDGET (ptr)),
current_req.width, current_req.height);
+ #endif
dims[0] = natural_req.width;
dims[1] = natural_req.height;
}
@@ -683,8 +716,8 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_setNativeBounds
case though, moving the child widget is invalid since a
ScrollPane only has one child and that child is always
located at (0, 0) in viewport coordinates. */
- if (widget->parent != NULL && GTK_IS_FIXED (widget->parent))
- gtk_fixed_move (GTK_FIXED (widget->parent), widget, x, y);
+ if (gtk_widget_get_parent(widget) != NULL && GTK_IS_FIXED (gtk_widget_get_parent(widget)))
+ gtk_fixed_move (GTK_FIXED (gtk_widget_get_parent(widget)), widget, x, y);
}
gdk_threads_leave ();
@@ -703,7 +736,8 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetBackground
ptr = gtkpeer_get_widget (env, obj);
- bg = GTK_WIDGET (ptr)->style->bg[GTK_STATE_NORMAL];
+ bg = gtk_widget_get_style(GTK_WIDGET (ptr))->bg[GTK_STATE_NORMAL];
+
array = (*env)->NewIntArray (env, 3);
@@ -732,7 +766,7 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetForeground
ptr = gtkpeer_get_widget (env, obj);
- fg = get_widget(GTK_WIDGET (ptr))->style->fg[GTK_STATE_NORMAL];
+ fg = gtk_widget_get_style(get_widget(GTK_WIDGET (ptr)))->fg[GTK_STATE_NORMAL];
array = (*env)->NewIntArray (env, 3);
@@ -856,7 +890,7 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_isEnabled
ptr = gtkpeer_get_widget (env, obj);
- ret_val = GTK_WIDGET_IS_SENSITIVE (get_widget(GTK_WIDGET (ptr)));
+ ret_val = gtk_widget_is_sensitive (get_widget(GTK_WIDGET (ptr)));
gdk_threads_leave ();
@@ -873,7 +907,7 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_modalHasGrab
gdk_threads_enter ();
widget = gtk_grab_get_current ();
- retval = (widget && GTK_IS_WINDOW (widget) && GTK_WINDOW (widget)->modal);
+ retval = (widget && GTK_IS_WINDOW (widget) && gtk_window_get_modal(GTK_WINDOW (widget)));
gdk_threads_leave ();
@@ -966,8 +1000,12 @@ find_bg_color_widget (GtkWidget *widget)
void
cp_gtk_component_connect_expose_signals (GObject *ptr, jobject gref)
{
- g_signal_connect (G_OBJECT (ptr), "expose-event",
+ #if GTK_MAJOR_VERSION == 2
+ g_signal_connect (G_OBJECT (ptr), "expose-event", G_CALLBACK (component_expose_cb), gref);
+ #elif GTK_MAJOR_VERSION == 3
+ g_signal_connect (G_OBJECT (ptr), "draw",
G_CALLBACK (component_expose_cb), gref);
+ #endif
}
void
@@ -1078,7 +1116,8 @@ component_button_release_cb (GtkWidget *widget __attribute__((unused)),
/* Generate an AWT click event only if the release occured in the
window it was pressed in, and the mouse has not been dragged since
the last time it was pressed. */
- gdk_drawable_get_size (event->window, &width, &height);
+ width = gdk_window_get_width(event->window);
+ height = gdk_window_get_height(event->window);
if (! hasBeenDragged
&& event->x >= 0
&& event->y >= 0