]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkviewport.c
Remove GtkObject completely
[~andy/gtk] / gtk / gtkviewport.c
index 6c65c4be245034c288be95fed683d4f0a1a9584d..546ec1e501642c719dc63aac4fb0f306c4206170 100644 (file)
@@ -26,9 +26,9 @@
 
 #include "config.h"
 #include "gtkviewport.h"
-#include "gtksizerequest.h"
 #include "gtkintl.h"
 #include "gtkmarshalers.h"
+#include "gtktypeutils.h"
 #include "gtkprivate.h"
 
 
@@ -73,7 +73,6 @@ enum {
 
 
 static void gtk_viewport_finalize                 (GObject          *object);
-static void gtk_viewport_destroy                  (GtkObject        *object);
 static void gtk_viewport_set_property             (GObject         *object,
                                                   guint            prop_id,
                                                   const GValue    *value,
@@ -85,6 +84,7 @@ static void gtk_viewport_get_property             (GObject         *object,
 static void gtk_viewport_set_scroll_adjustments          (GtkViewport      *viewport,
                                                   GtkAdjustment    *hadjustment,
                                                   GtkAdjustment    *vadjustment);
+static void gtk_viewport_destroy                  (GtkWidget        *widget);
 static void gtk_viewport_realize                  (GtkWidget        *widget);
 static void gtk_viewport_unrealize                (GtkWidget        *widget);
 static gint gtk_viewport_draw                     (GtkWidget        *widget,
@@ -95,31 +95,26 @@ static void gtk_viewport_size_allocate            (GtkWidget        *widget,
                                                   GtkAllocation    *allocation);
 static void gtk_viewport_adjustment_value_changed (GtkAdjustment    *adjustment,
                                                   gpointer          data);
-static void gtk_viewport_style_set                (GtkWidget *widget,
-                                                  GtkStyle  *previous_style);
+static void gtk_viewport_style_set                (GtkWidget        *widget,
+                                                  GtkStyle         *previous_style);
 
-static void gtk_viewport_size_request_init        (GtkSizeRequestIface *iface);
-static void gtk_viewport_get_width                (GtkSizeRequest       *widget,
-                                                  gint                 *minimum_size,
-                                                  gint                 *natural_size);
-static void gtk_viewport_get_height               (GtkSizeRequest       *widget,
-                                                  gint                 *minimum_size,
-                                                  gint                 *natural_size);
+static void gtk_viewport_get_preferred_width      (GtkWidget        *widget,
+                                                  gint             *minimum_size,
+                                                  gint             *natural_size);
+static void gtk_viewport_get_preferred_height     (GtkWidget        *widget,
+                                                  gint             *minimum_size,
+                                                  gint             *natural_size);
 
 
-G_DEFINE_TYPE_WITH_CODE (GtkViewport, gtk_viewport, GTK_TYPE_BIN,
-                        G_IMPLEMENT_INTERFACE (GTK_TYPE_SIZE_REQUEST,
-                                               gtk_viewport_size_request_init))
+G_DEFINE_TYPE (GtkViewport, gtk_viewport, GTK_TYPE_BIN)
 
 static void
 gtk_viewport_class_init (GtkViewportClass *class)
 {
-  GtkObjectClass *object_class;
   GObjectClass   *gobject_class;
   GtkWidgetClass *widget_class;
   GtkContainerClass *container_class;
 
-  object_class = (GtkObjectClass*) class;
   gobject_class = G_OBJECT_CLASS (class);
   widget_class = (GtkWidgetClass*) class;
   container_class = (GtkContainerClass*) class;
@@ -127,13 +122,15 @@ gtk_viewport_class_init (GtkViewportClass *class)
   gobject_class->finalize = gtk_viewport_finalize;
   gobject_class->set_property = gtk_viewport_set_property;
   gobject_class->get_property = gtk_viewport_get_property;
-  object_class->destroy = gtk_viewport_destroy;
-  
+
+  widget_class->destroy = gtk_viewport_destroy;
   widget_class->realize = gtk_viewport_realize;
   widget_class->unrealize = gtk_viewport_unrealize;
   widget_class->draw = gtk_viewport_draw;
   widget_class->size_allocate = gtk_viewport_size_allocate;
   widget_class->style_set = gtk_viewport_style_set;
+  widget_class->get_preferred_width = gtk_viewport_get_preferred_width;
+  widget_class->get_preferred_height = gtk_viewport_get_preferred_height;
   
   container_class->add = gtk_viewport_add;
 
@@ -317,14 +314,14 @@ gtk_viewport_finalize (GObject *object)
 }
 
 static void
-gtk_viewport_destroy (GtkObject *object)
+gtk_viewport_destroy (GtkWidget *widget)
 {
-  GtkViewport *viewport = GTK_VIEWPORT (object);
+  GtkViewport *viewport = GTK_VIEWPORT (widget);
 
   viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_HORIZONTAL);
   viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_VERTICAL);
 
-  GTK_OBJECT_CLASS (gtk_viewport_parent_class)->destroy (object);
+  GTK_WIDGET_CLASS (gtk_viewport_parent_class)->destroy (widget);
 }
 
 /**
@@ -445,10 +442,10 @@ viewport_set_hadjustment_values (GtkViewport *viewport,
     {
       gint minimum_width;
 
-      gtk_size_request_get_width_for_height (GTK_SIZE_REQUEST (child),
-                                             view_allocation.height,
-                                             &minimum_width,
-                                             NULL);
+      gtk_widget_get_preferred_width_for_height (child,
+                                                 view_allocation.height,
+                                                 &minimum_width,
+                                                 NULL);
       hadjustment->upper = MAX (minimum_width, view_allocation.width);
     }
   else
@@ -487,10 +484,10 @@ viewport_set_vadjustment_values (GtkViewport *viewport,
     {
       gint minimum_height;
 
-      gtk_size_request_get_height_for_width (GTK_SIZE_REQUEST (child),
-                                             view_allocation.width,
-                                             &minimum_height,
-                                             NULL);
+      gtk_widget_get_preferred_height_for_width (child,
+                                                 view_allocation.width,
+                                                 &minimum_height,
+                                                 NULL);
 
       vadjustment->upper = MAX (minimum_height, view_allocation.height);
     }
@@ -773,34 +770,32 @@ static gint
 gtk_viewport_draw (GtkWidget *widget,
                    cairo_t   *cr)
 {
-  if (gtk_widget_is_drawable (widget))
+  GtkViewport *viewport = GTK_VIEWPORT (widget);
+  GtkViewportPrivate *priv = viewport->priv;
+  int x, y;
+
+  if (gtk_cairo_should_draw_window (cr, gtk_widget_get_window (widget)))
     {
-      GtkViewport *viewport = GTK_VIEWPORT (widget);
-      GtkViewportPrivate *priv = viewport->priv;
-      int x, y, w, h;
-
-      if (gtk_cairo_should_draw_window (cr, gtk_widget_get_window (widget)))
-        {
-          gdk_drawable_get_size (gtk_widget_get_window (widget),
-                                 &w, &h);
-          gtk_cairo_paint_shadow (gtk_widget_get_style (widget),
-                            cr,
-                            GTK_STATE_NORMAL, priv->shadow_type,
-                            widget, "viewport",
-                            0, 0, w, h);
-        }
-      
-      if (gtk_cairo_should_draw_window (cr, priv->bin_window))
-       {
-          gdk_window_get_position (priv->bin_window, &x, &y);
-          gdk_drawable_get_size (priv->bin_window, &w, &h);
-          gtk_cairo_paint_flat_box (gtk_widget_get_style (widget), cr,
-                             GTK_STATE_NORMAL, GTK_SHADOW_NONE,
-                             widget, "viewportbin",
-                             x, y, w, h);
-
-         GTK_WIDGET_CLASS (gtk_viewport_parent_class)->draw (widget, cr);
-       }
+      gtk_paint_shadow (gtk_widget_get_style (widget),
+                        cr,
+                        GTK_STATE_NORMAL, priv->shadow_type,
+                        widget, "viewport",
+                        0, 0,
+                        gdk_window_get_width (gtk_widget_get_window (widget)),
+                        gdk_window_get_height (gtk_widget_get_window (widget)));
+    }
+  
+  if (gtk_cairo_should_draw_window (cr, priv->bin_window))
+    {
+      gdk_window_get_position (priv->bin_window, &x, &y);
+      gtk_paint_flat_box (gtk_widget_get_style (widget), cr,
+                          GTK_STATE_NORMAL, GTK_SHADOW_NONE,
+                          widget, "viewportbin",
+                          x, y,
+                          gdk_window_get_width (priv->bin_window),
+                          gdk_window_get_height (priv->bin_window));
+
+      GTK_WIDGET_CLASS (gtk_viewport_parent_class)->draw (widget, cr);
     }
 
   return FALSE;
@@ -943,17 +938,10 @@ gtk_viewport_style_set (GtkWidget *widget,
 
 
 static void
-gtk_viewport_size_request_init (GtkSizeRequestIface *iface)
-{
-  iface->get_width  = gtk_viewport_get_width;
-  iface->get_height = gtk_viewport_get_height;
-}
-
-static void
-gtk_viewport_get_size (GtkSizeRequest *widget,
-                      GtkOrientation  orientation,
-                      gint           *minimum_size,
-                      gint           *natural_size)
+gtk_viewport_get_preferred_size (GtkWidget      *widget,
+                                 GtkOrientation  orientation,
+                                 gint           *minimum_size,
+                                 gint           *natural_size)
 {
   GtkViewport *viewport = GTK_VIEWPORT (widget);
   GtkViewportPrivate *priv = viewport->priv;
@@ -983,9 +971,9 @@ gtk_viewport_get_size (GtkSizeRequest *widget,
   if (child && gtk_widget_get_visible (child))
     {
       if (orientation == GTK_ORIENTATION_HORIZONTAL)
-       gtk_size_request_get_width (GTK_SIZE_REQUEST (child), &child_min, &child_nat);
+       gtk_widget_get_preferred_width (child, &child_min, &child_nat);
       else
-       gtk_size_request_get_height (GTK_SIZE_REQUEST (child), &child_min, &child_nat);
+       gtk_widget_get_preferred_height (child, &child_min, &child_nat);
 
       minimum += child_min;
       natural += child_nat;
@@ -999,17 +987,17 @@ gtk_viewport_get_size (GtkSizeRequest *widget,
 }
 
 static void
-gtk_viewport_get_width (GtkSizeRequest *widget,
-                       gint           *minimum_size,
-                       gint           *natural_size)
+gtk_viewport_get_preferred_width (GtkWidget *widget,
+                                  gint      *minimum_size,
+                                  gint      *natural_size)
 {
-  gtk_viewport_get_size (widget, GTK_ORIENTATION_HORIZONTAL, minimum_size, natural_size);
+  gtk_viewport_get_preferred_size (widget, GTK_ORIENTATION_HORIZONTAL, minimum_size, natural_size);
 }
 
 static void
-gtk_viewport_get_height (GtkSizeRequest *widget,
-                        gint           *minimum_size,
-                        gint           *natural_size)
+gtk_viewport_get_preferred_height (GtkWidget *widget,
+                                   gint      *minimum_size,
+                                   gint      *natural_size)
 {
-  gtk_viewport_get_size (widget, GTK_ORIENTATION_VERTICAL, minimum_size, natural_size);
+  gtk_viewport_get_preferred_size (widget, GTK_ORIENTATION_VERTICAL, minimum_size, natural_size);
 }