g_object_unref (attributes_south.cursor);
g_object_unref (attributes_middle.cursor);
- {
- GtkStyle *style = gtk_widget_get_style (widget);
- style = gtk_style_attach (style, gtk_widget_get_window (widget));
- gtk_widget_set_style (widget, style);
- }
-
-
if (xpaned->top_left_child
&& gtk_widget_get_visible (xpaned->top_left_child)
&& xpaned->top_right_child
&& xpaned->bottom_right_child
&& gtk_widget_get_visible (xpaned->bottom_right_child))
{
- GtkStateType state;
+ GtkStyleContext *context;
- if (gtk_widget_is_focus (widget))
- state = GTK_STATE_SELECTED;
- else if (xpaned->handle_prelit)
- state = GTK_STATE_PRELIGHT;
- else
- state = gtk_widget_get_state (widget);
-
- gtk_paint_handle (gtk_widget_get_style (widget),
- cr,
- state,
- GTK_SHADOW_NONE,
- widget,
- "paned",
- xpaned->handle_pos_east.x - handle_size - 256 / 2,
- xpaned->handle_pos_west.y + 1,
- 256 + handle_size, handle_size - 2,
- /*xpaned->handle_pos_west.x,
- xpaned->handle_pos_west.y + 1,
- xpaned->handle_pos_west.width + handle_size + xpaned->handle_pos_east.width,
- handle_size - 2, */
- GTK_ORIENTATION_HORIZONTAL);
-
- gtk_paint_handle (gtk_widget_get_style (widget),
- cr,
- state,
- GTK_SHADOW_NONE,
- widget,
- "paned",
- xpaned->handle_pos_north.x + 1,
- xpaned->handle_pos_south.y - handle_size - 256 / 2,
- handle_size - 2, 256 + handle_size,
- /*xpaned->handle_pos_north.x + 1,
- xpaned->handle_pos_north.y,
- handle_size - 2,
- xpaned->handle_pos_north.height + handle_size + xpaned->handle_pos_south.height, */
- GTK_ORIENTATION_VERTICAL);
+ context = gtk_widget_get_style_context (widget);
+ gtk_render_handle (context, cr,
+ xpaned->handle_pos_east.x - handle_size - 256 / 2,
+ xpaned->handle_pos_west.y + 1,
+ 256 + handle_size, handle_size - 2);
+
+ gtk_render_handle (context, cr,
+ xpaned->handle_pos_north.x + 1,
+ xpaned->handle_pos_south.y - handle_size - 256 / 2,
+ handle_size - 2, 256 + handle_size);
}
/* Chain up to draw children */
update_drag (GtkXPaned * xpaned)
{
GdkPoint pos;
+ GtkWidget *widget = GTK_WIDGET (xpaned);
gint handle_size;
GtkRequisition size;
GtkAllocation allocation;
- gtk_widget_get_allocation (GTK_WIDGET (xpaned), &allocation);
- gtk_widget_get_pointer (GTK_WIDGET (xpaned), &pos.x, &pos.y);
+ gtk_widget_get_allocation (widget, &allocation);
+
+ gdk_window_get_device_position (gtk_widget_get_window (widget),
+ gdk_device_manager_get_client_pointer (
+ gdk_display_get_device_manager (
+ gtk_widget_get_display (widget))),
+ &pos.x, &pos.y, NULL);
+ if (!gtk_widget_get_has_window (widget))
+ {
+ pos.x -= allocation.x;
+ pos.y -= allocation.y;
+ }
if (xpaned->in_drag_vert)
{
if (is_rtl (xpaned))
{
- gtk_widget_style_get (GTK_WIDGET (xpaned),
- "handle-size", &handle_size, NULL);
+ gtk_widget_style_get (widget, "handle-size", &handle_size, NULL);
size.height = allocation.height - pos.y - handle_size;
}
if (is_rtl (xpaned))
{
- gtk_widget_style_get (GTK_WIDGET (xpaned),
- "handle-size", &handle_size, NULL);
+ gtk_widget_style_get (widget, "handle-size", &handle_size, NULL);
size.width = allocation.width - pos.x - handle_size;
}
if (is_rtl (xpaned))
{
- gtk_widget_style_get (GTK_WIDGET (xpaned),
- "handle-size", &handle_size, NULL);
+ gtk_widget_style_get (widget, "handle-size", &handle_size, NULL);
size.width = allocation.width - pos.x - handle_size;
size.height = allocation.height - pos.y - handle_size;
return retval;
}
+static void
+gtk_xpaned_button_press_grab (GdkWindow *handle, GdkEventButton *event)
+{
+ /* We need a server grab here, not gtk_grab_add(), since
+ * we don't want to pass events on to the widget's children */
+ gdk_device_grab (event->device, handle,
+ GDK_OWNERSHIP_NONE,
+ FALSE,
+ (GDK_POINTER_MOTION_HINT_MASK
+ | GDK_BUTTON1_MOTION_MASK
+ | GDK_BUTTON_RELEASE_MASK
+ | GDK_ENTER_NOTIFY_MASK
+ | GDK_LEAVE_NOTIFY_MASK),
+ NULL, event->time);
+}
+
static gboolean
gtk_xpaned_button_press (GtkWidget * widget, GdkEventButton * event)
{
event->window == xpaned->handle_middle && event->button == 1)
{
xpaned->in_drag_vert_and_horiz = TRUE;
-
- /* We need a server grab here, not gtk_grab_add(), since
- * we don't want to pass events on to the widget's children */
- if (gdk_pointer_grab (xpaned->handle_middle,
- FALSE,
- GDK_POINTER_MOTION_HINT_MASK
- | GDK_BUTTON1_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK
- | GDK_ENTER_NOTIFY_MASK
- | GDK_LEAVE_NOTIFY_MASK,
- NULL, NULL, event->time) == GDK_GRAB_SUCCESS)
- {
- }
-
+ gtk_xpaned_button_press_grab (xpaned->handle_middle, event);
xpaned->drag_pos.x = event->x;
xpaned->drag_pos.y = event->y;
event->window != xpaned->handle_middle && event->button == 1)
{
xpaned->in_drag_vert = TRUE;
-
- /* We need a server grab here, not gtk_grab_add(), since
- * we don't want to pass events on to the widget's children */
- if (gdk_pointer_grab (xpaned->handle_east,
- FALSE,
- GDK_POINTER_MOTION_HINT_MASK
- | GDK_BUTTON1_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK
- | GDK_ENTER_NOTIFY_MASK
- | GDK_LEAVE_NOTIFY_MASK,
- NULL, NULL, event->time) == GDK_GRAB_SUCCESS)
- {
- }
-
+ gtk_xpaned_button_press_grab (xpaned->handle_east, event);
xpaned->drag_pos.y = event->y;
return TRUE;
event->window != xpaned->handle_middle && event->button == 1)
{
xpaned->in_drag_vert = TRUE;
-
- /* We need a server grab here, not gtk_grab_add(), since
- * we don't want to pass events on to the widget's children */
- if (gdk_pointer_grab (xpaned->handle_west,
- FALSE,
- GDK_POINTER_MOTION_HINT_MASK
- | GDK_BUTTON1_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK
- | GDK_ENTER_NOTIFY_MASK
- | GDK_LEAVE_NOTIFY_MASK,
- NULL, NULL, event->time) == GDK_GRAB_SUCCESS)
- {
- }
-
+ gtk_xpaned_button_press_grab (xpaned->handle_west, event);
xpaned->drag_pos.y = event->y;
return TRUE;
event->window != xpaned->handle_middle && event->button == 1)
{
xpaned->in_drag_horiz = TRUE;
-
- /* We need a server grab here, not gtk_grab_add(), since
- * we don't want to pass events on to the widget's children */
- if (gdk_pointer_grab (xpaned->handle_north,
- FALSE,
- GDK_POINTER_MOTION_HINT_MASK
- | GDK_BUTTON1_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK
- | GDK_ENTER_NOTIFY_MASK
- | GDK_LEAVE_NOTIFY_MASK,
- NULL, NULL, event->time) == GDK_GRAB_SUCCESS)
- {
- }
-
+ gtk_xpaned_button_press_grab (xpaned->handle_north, event);
xpaned->drag_pos.x = event->x;
return TRUE;
event->window != xpaned->handle_middle && event->button == 1)
{
xpaned->in_drag_horiz = TRUE;
-
- /* We need a server grab here, not gtk_grab_add(), since
- * we don't want to pass events on to the widget's children */
- if (gdk_pointer_grab (xpaned->handle_south,
- FALSE,
- GDK_POINTER_MOTION_HINT_MASK
- | GDK_BUTTON1_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK
- | GDK_ENTER_NOTIFY_MASK
- | GDK_LEAVE_NOTIFY_MASK,
- NULL, NULL, event->time) == GDK_GRAB_SUCCESS)
- {
- }
-
+ gtk_xpaned_button_press_grab (xpaned->handle_south, event);
xpaned->drag_pos.x = event->x;
return TRUE;
xpaned->in_drag_vert = FALSE;
xpaned->drag_pos.y = -1;
xpaned->position_set = TRUE;
- gdk_display_pointer_ungrab (gtk_widget_get_display (widget),
- event->time);
+ gdk_device_ungrab (event->device, event->time);
return TRUE;
}
else if (xpaned->in_drag_horiz && (event->button == 1))
xpaned->in_drag_horiz = FALSE;
xpaned->drag_pos.x = -1;
xpaned->position_set = TRUE;
- gdk_display_pointer_ungrab (gtk_widget_get_display (widget),
- event->time);
+ gdk_device_ungrab (event->device, event->time);
return TRUE;
}
else if (xpaned->in_drag_vert_and_horiz && (event->button == 1))
xpaned->drag_pos.x = -1;
xpaned->drag_pos.y = -1;
xpaned->position_set = TRUE;
- gdk_display_pointer_ungrab (gtk_widget_get_display (widget),
- event->time);
+ gdk_device_ungrab (event->device, event->time);
return TRUE;
}