** 10 20 30 40 50 60 70 80
**
** library for GtkXPaned-widget, a 2x2 grid-like variation of GtkPaned of gtk+
- ** Copyright (C) 2012 Free Software Foundation, Inc.
+ ** Copyright (C) 2012, 2013 Free Software Foundation, Inc.
** Copyright (C) 2005-2006 Mirco "MacSlow" Müller <macslow@bangang.de>
**
** This library is free software; you can redistribute it and/or
static void gtk_xpaned_size_request (GtkWidget * widget,
GtkRequisition * requisition);
+static void
+gtk_xpaned_get_preferred_width (GtkWidget *widget,
+ gint *minimal_width,
+ gint *natural_width)
+{
+ GtkRequisition requisition;
+
+ gtk_xpaned_size_request (widget, &requisition);
+
+ *minimal_width = *natural_width = requisition.width;
+}
+
+static void
+gtk_xpaned_get_preferred_height (GtkWidget *widget,
+ gint *minimal_height,
+ gint *natural_height)
+{
+ GtkRequisition requisition;
+
+ gtk_xpaned_size_request (widget, &requisition);
+
+ *minimal_height = *natural_height = requisition.height;
+}
+
static void gtk_xpaned_size_allocate (GtkWidget * widget,
GtkAllocation * allocation);
static void gtk_xpaned_unmap (GtkWidget * widget);
-static gboolean gtk_xpaned_expose (GtkWidget * widget,
- GdkEventExpose * event);
+static gboolean gtk_xpaned_draw (GtkWidget * widget,
+ cairo_t *ct);
static gboolean gtk_xpaned_enter (GtkWidget * widget,
GdkEventCrossing * event);
widget_class->unrealize = gtk_xpaned_unrealize;
widget_class->map = gtk_xpaned_map;
widget_class->unmap = gtk_xpaned_unmap;
- widget_class->expose_event = gtk_xpaned_expose;
+ widget_class->draw = gtk_xpaned_draw;
widget_class->focus = gtk_xpaned_focus;
widget_class->enter_notify_event = gtk_xpaned_enter;
widget_class->leave_notify_event = gtk_xpaned_leave;
widget_class->button_press_event = gtk_xpaned_button_press;
widget_class->button_release_event = gtk_xpaned_button_release;
widget_class->motion_notify_event = gtk_xpaned_motion;
- widget_class->size_request = gtk_xpaned_size_request;
+ widget_class->get_preferred_width = gtk_xpaned_get_preferred_width;
+ widget_class->get_preferred_height = gtk_xpaned_get_preferred_height;
+
widget_class->size_allocate = gtk_xpaned_size_allocate;
container_class->add = gtk_xpaned_add;
}
static gboolean
-gtk_xpaned_expose (GtkWidget * widget, GdkEventExpose * event)
+gtk_xpaned_draw (GtkWidget * widget, cairo_t *cr)
{
GtkXPaned *xpaned = GTK_XPANED (widget);
gint handle_size;
- GdkRectangle horizontalClipArea;
- GdkRectangle verticalClipArea;
/* determine size of handle(s) */
gtk_widget_style_get (widget, "handle-size", &handle_size, NULL);
else
state = gtk_widget_get_state (widget);
- horizontalClipArea.x = xpaned->handle_pos_west.x;
- horizontalClipArea.y = xpaned->handle_pos_west.y;
- horizontalClipArea.width =
- xpaned->handle_pos_west.width + handle_size +
- xpaned->handle_pos_east.width;
- horizontalClipArea.height = handle_size;
-
- verticalClipArea.x = xpaned->handle_pos_north.x;
- verticalClipArea.y = xpaned->handle_pos_north.y;
- verticalClipArea.width = handle_size;
- verticalClipArea.height =
- xpaned->handle_pos_north.height + handle_size +
- xpaned->handle_pos_south.height;
-
gtk_paint_handle (gtk_widget_get_style (widget),
- gtk_widget_get_window (widget),
+ cr,
state,
GTK_SHADOW_NONE,
- &horizontalClipArea,
widget,
"paned",
xpaned->handle_pos_east.x - handle_size - 256 / 2,
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),
- gtk_widget_get_window (widget),
+ cr,
state,
GTK_SHADOW_NONE,
- &verticalClipArea,
widget,
"paned",
xpaned->handle_pos_north.x + 1,
}
/* Chain up to draw children */
- GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);
+ GTK_WIDGET_CLASS (parent_class)->draw (widget, cr);
return FALSE;
}