summaryrefslogtreecommitdiff
path: root/gtk/gtkdnd.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkdnd.c')
-rw-r--r--gtk/gtkdnd.c91
1 files changed, 54 insertions, 37 deletions
diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c
index 78f63c10c0..f190b3953a 100644
--- a/gtk/gtkdnd.c
+++ b/gtk/gtkdnd.c
@@ -379,8 +379,8 @@ gtk_drag_get_ipc_widget (GtkWidget *widget)
if (GTK_IS_WINDOW (toplevel))
{
- if (GTK_WINDOW (toplevel)->group)
- gtk_window_group_add_window (GTK_WINDOW (toplevel)->group,
+ if (gtk_window_has_group (GTK_WINDOW (toplevel)))
+ gtk_window_group_add_window (gtk_window_get_group (GTK_WINDOW (toplevel)),
GTK_WINDOW (result));
}
@@ -458,7 +458,7 @@ grab_dnd_keys (GtkWidget *widget,
GdkWindow *window, *root;
gint keycode;
- window = widget->window;
+ window = gtk_widget_get_window (widget);
root = gdk_screen_get_root_window (gtk_widget_get_screen (widget));
gdk_error_trap_push ();
@@ -489,7 +489,7 @@ ungrab_dnd_keys (GtkWidget *widget,
GdkWindow *window, *root;
gint keycode;
- window = widget->window;
+ window = gtk_widget_get_window (widget);
root = gdk_screen_get_root_window (gtk_widget_get_screen (widget));
gdk_window_remove_filter (NULL, root_key_filter, (gpointer) GDK_WINDOW_XID (window));
@@ -515,7 +515,8 @@ grab_dnd_keys (GtkWidget *widget,
GdkDevice *device,
guint32 time)
{
- gdk_device_grab (device, widget->window,
+ gdk_device_grab (device,
+ gtk_widget_get_window (widget),
GDK_OWNERSHIP_APPLICATION, FALSE,
GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK,
NULL, time);
@@ -559,8 +560,9 @@ gtk_drag_release_ipc_widget (GtkWidget *widget)
ungrab_dnd_keys (widget, keyboard, GDK_CURRENT_TIME);
}
- if (window->group)
- gtk_window_group_remove_window (window->group, window);
+ if (gtk_window_has_group (window))
+ gtk_window_group_remove_window (gtk_window_get_group (window),
+ window);
drag_widgets = g_slist_prepend (drag_widgets, widget);
g_object_set_data (G_OBJECT (screen),
I_("gtk-dnd-ipc-widgets"),
@@ -954,7 +956,8 @@ gtk_drag_update_cursor (GtkDragSourceInfo *info)
GdkDevice *pointer;
pointer = gdk_drag_context_get_device (info->context);
- gdk_device_grab (pointer, info->ipc_widget->window,
+ gdk_device_grab (pointer,
+ gtk_widget_get_window (info->ipc_widget),
GDK_OWNERSHIP_APPLICATION, FALSE,
GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
cursor, info->grab_time);
@@ -1029,8 +1032,8 @@ gtk_drag_get_source_widget (GdkDragContext *context)
while (tmp_list)
{
GtkWidget *ipc_widget = tmp_list->data;
-
- if (ipc_widget->window == context->source_window)
+
+ if (gtk_widget_get_window (ipc_widget) == context->source_window)
{
GtkDragSourceInfo *info;
info = g_object_get_data (G_OBJECT (ipc_widget), "gtk-info");
@@ -1117,28 +1120,34 @@ gtk_drag_highlight_expose (GtkWidget *widget,
if (gtk_widget_is_drawable (widget))
{
+ GdkWindow *window;
cairo_t *cr;
-
+
+ window = gtk_widget_get_window (widget);
+
if (!gtk_widget_get_has_window (widget))
{
- x = widget->allocation.x;
- y = widget->allocation.y;
- width = widget->allocation.width;
- height = widget->allocation.height;
+ GtkAllocation allocation;
+
+ gtk_widget_get_allocation (widget, &allocation);
+ x = allocation.x;
+ y = allocation.y;
+ width = allocation.width;
+ height = allocation.height;
}
else
{
x = 0;
y = 0;
- gdk_drawable_get_size (widget->window, &width, &height);
+ gdk_drawable_get_size (window, &width, &height);
}
-
- gtk_paint_shadow (widget->style, widget->window,
+
+ gtk_paint_shadow (gtk_widget_get_style (widget), window,
GTK_STATE_NORMAL, GTK_SHADOW_OUT,
&event->area, widget, "dnd",
x, y, width, height);
- cr = gdk_cairo_create (widget->window);
+ cr = gdk_cairo_create (window);
cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */
cairo_set_line_width (cr, 1.0);
cairo_rectangle (cr,
@@ -1608,6 +1617,7 @@ _gtk_drag_dest_handle_event (GtkWidget *toplevel,
case GDK_DRAG_MOTION:
case GDK_DROP_START:
{
+ GdkWindow *window;
gint tx, ty;
gboolean found;
@@ -1624,6 +1634,8 @@ _gtk_drag_dest_handle_event (GtkWidget *toplevel,
}
}
+ window = gtk_widget_get_window (toplevel);
+
#ifdef GDK_WINDOWING_X11
/* Hackaround for: http://bugzilla.gnome.org/show_bug.cgi?id=136112
*
@@ -1632,10 +1644,10 @@ _gtk_drag_dest_handle_event (GtkWidget *toplevel,
* expensive gdk_window_get_origin().
*/
if (GTK_IS_PLUG (toplevel))
- gdk_window_get_origin (toplevel->window, &tx, &ty);
+ gdk_window_get_origin (window, &tx, &ty);
else
#endif /* GDK_WINDOWING_X11 */
- gdk_window_get_position (toplevel->window, &tx, &ty);
+ gdk_window_get_position (window, &tx, &ty);
found = gtk_drag_find_widget (toplevel,
context,
@@ -1947,7 +1959,7 @@ gtk_drag_proxy_begin (GtkWidget *widget,
}
ipc_widget = gtk_drag_get_ipc_widget (widget);
- context = gdk_drag_begin (ipc_widget->window,
+ context = gdk_drag_begin (gtk_widget_get_window (ipc_widget),
dest_info->context->targets);
source_info = gtk_drag_get_source_info (context, TRUE);
@@ -2041,7 +2053,7 @@ gtk_drag_dest_realized (GtkWidget *widget)
GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
if (gtk_widget_is_toplevel (toplevel))
- gdk_window_register_dnd (toplevel->window);
+ gdk_window_register_dnd (gtk_widget_get_window (toplevel));
}
static void
@@ -2051,7 +2063,7 @@ gtk_drag_dest_hierarchy_changed (GtkWidget *widget,
GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
if (gtk_widget_is_toplevel (toplevel) && gtk_widget_get_realized (toplevel))
- gdk_window_register_dnd (toplevel->window);
+ gdk_window_register_dnd (gtk_widget_get_window (toplevel));
}
static void
@@ -2340,6 +2352,7 @@ gtk_drag_begin_internal (GtkWidget *widget,
GtkWidget *ipc_widget;
GdkCursor *cursor;
GdkDevice *pointer, *keyboard;
+ GdkWindow *ipc_window;
pointer = keyboard = NULL;
ipc_widget = gtk_drag_get_ipc_widget (widget);
@@ -2379,7 +2392,9 @@ gtk_drag_begin_internal (GtkWidget *widget,
if (!pointer)
return NULL;
- if (gdk_device_grab (pointer, ipc_widget->window,
+ ipc_window = gtk_widget_get_window (ipc_widget);
+
+ if (gdk_device_grab (pointer, ipc_window,
GDK_OWNERSHIP_APPLICATION, FALSE,
GDK_POINTER_MOTION_MASK |
GDK_BUTTON_RELEASE_MASK,
@@ -2408,7 +2423,7 @@ gtk_drag_begin_internal (GtkWidget *widget,
source_widgets = g_slist_prepend (source_widgets, ipc_widget);
- context = gdk_drag_begin (ipc_widget->window, targets);
+ context = gdk_drag_begin (ipc_window, targets);
gdk_drag_context_set_device (context, pointer);
g_list_free (targets);
@@ -2500,7 +2515,7 @@ gtk_drag_begin_internal (GtkWidget *widget,
if (cursor != info->cursor)
{
- gdk_device_grab (pointer, widget->window,
+ gdk_device_grab (pointer, gtk_widget_get_window (widget),
GDK_OWNERSHIP_APPLICATION, FALSE,
GDK_POINTER_MOTION_MASK |
GDK_BUTTON_RELEASE_MASK,
@@ -3048,7 +3063,7 @@ gtk_drag_update_icon (GtkDragSourceInfo *info)
info->cur_y - hot_y);
if (gtk_widget_get_visible (icon_window))
- gdk_window_raise (icon_window->window);
+ gdk_window_raise (gtk_widget_get_window (icon_window));
else
gtk_widget_show (icon_window);
}
@@ -3127,8 +3142,9 @@ icon_window_realize (GtkWidget *window,
gdk_pixbuf_render_pixmap_and_mask_for_colormap (pixbuf,
gtk_widget_get_colormap (window),
&pixmap, &mask, 128);
-
- gdk_window_set_back_pixmap (window->window, pixmap, FALSE);
+
+ gdk_window_set_back_pixmap (gtk_widget_get_window (window),
+ pixmap, FALSE);
g_object_unref (pixmap);
if (mask)
@@ -3317,8 +3333,9 @@ gtk_drag_set_icon_pixmap (GdkDragContext *context,
gtk_widget_set_size_request (window, width, height);
gtk_widget_realize (window);
- gdk_window_set_back_pixmap (window->window, pixmap, FALSE);
-
+ gdk_window_set_back_pixmap (gtk_widget_get_window (window),
+ pixmap, FALSE);
+
if (mask)
gtk_widget_shape_combine_mask (window, mask, 0, 0);
@@ -3460,7 +3477,7 @@ _gtk_drag_source_handle_event (GtkWidget *widget,
GdkDevice *pointer;
pointer = gdk_drag_context_get_device (context);
- gdk_device_grab (pointer, widget->window,
+ gdk_device_grab (pointer, gtk_widget_get_window (widget),
GDK_OWNERSHIP_APPLICATION, FALSE,
GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
cursor, info->grab_time);
@@ -3615,7 +3632,7 @@ gtk_drag_source_release_selections (GtkDragSourceInfo *info,
while (tmp_list)
{
GdkAtom selection = GDK_POINTER_TO_ATOM (tmp_list->data);
- if (gdk_selection_owner_get_for_display (display, selection) == info->ipc_widget->window)
+ if (gdk_selection_owner_get_for_display (display, selection) == gtk_widget_get_window (info->ipc_widget))
gtk_selection_owner_set_for_display (display, NULL, selection, time);
tmp_list = tmp_list->next;
@@ -3968,7 +3985,7 @@ gtk_drag_update_idle (gpointer data)
&action, &possible_actions);
gtk_drag_update_icon (info);
gdk_drag_find_window_for_screen (info->context,
- info->icon_window ? info->icon_window->window : NULL,
+ info->icon_window ? gtk_widget_get_window (info->icon_window) : NULL,
info->cur_screen, info->cur_x, info->cur_y,
&dest_window, &protocol);
@@ -4274,8 +4291,8 @@ gtk_drag_grab_broken_event_cb (GtkWidget *widget,
* example, when changing the drag cursor.
*/
if (event->implicit
- || event->grab_window == info->widget->window
- || event->grab_window == info->ipc_widget->window)
+ || event->grab_window == gtk_widget_get_window (info->widget)
+ || event->grab_window == gtk_widget_get_window (info->ipc_widget))
return FALSE;
gtk_drag_cancel (info, GTK_DRAG_RESULT_GRAB_BROKEN, gtk_get_current_event_time ());