GtkXPaned: Convert size_request to get_preferred_height/width
[pspp] / lib / gtk-contrib / gtkxpaned.c
index bb1309ff07ba77b581ea00d185152f6b0da1bf6d..a7d45cb0f1c96bac08e069068b9b323f64d5f980 100644 (file)
@@ -36,6 +36,7 @@
 #include <gtk/gtk.h>
 #include <ui/gui/psppire-marshal.h>
 #include <gdk/gdkkeysyms.h>
+#include <gdk/gdkkeysyms-compat.h>
 
 enum WidgetProperties
   {
@@ -74,6 +75,30 @@ static void gtk_xpaned_init (GtkXPaned * xpaned);
 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);
 
@@ -108,8 +133,8 @@ static void gtk_xpaned_map (GtkWidget * widget);
 
 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);
@@ -267,14 +292,16 @@ gtk_xpaned_class_init (GtkXPanedClass * class)
   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;
@@ -1365,7 +1392,7 @@ gtk_xpaned_unmap (GtkWidget * widget)
 }
 
 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;
@@ -1412,10 +1439,9 @@ gtk_xpaned_expose (GtkWidget * widget, GdkEventExpose * event)
         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,
@@ -1426,11 +1452,11 @@ gtk_xpaned_expose (GtkWidget * widget, GdkEventExpose * event)
                           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,
@@ -1444,7 +1470,7 @@ gtk_xpaned_expose (GtkWidget * widget, GdkEventExpose * event)
     }
 
   /* Chain up to draw children */
-  GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);
+  GTK_WIDGET_CLASS (parent_class)->draw (widget, cr);
 
   return FALSE;
 }