]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkadjustment.c
Handle the case where the pointer isn't on the same screen as the widget
[~andy/gtk] / gtk / gtkadjustment.c
index a23aa3e8042b51769e968ead6d58f213c73d9abd..5a607cafebb3ba8af7c827ce6511fa57ad5ac877 100644 (file)
@@ -25,7 +25,7 @@
  */
 
 #include "gtkadjustment.h"
-#include "gtksignal.h"
+#include "gtkmarshalers.h"
 
 
 enum {
@@ -42,26 +42,29 @@ static void gtk_adjustment_init       (GtkAdjustment      *adjustment);
 static guint adjustment_signals[LAST_SIGNAL] = { 0 };
 
 
-GtkType
+GType
 gtk_adjustment_get_type (void)
 {
-  static GtkType adjustment_type = 0;
+  static GType adjustment_type = 0;
 
   if (!adjustment_type)
     {
-      static const GtkTypeInfo adjustment_info =
+      static const GTypeInfo adjustment_info =
       {
-       "GtkAdjustment",
-       sizeof (GtkAdjustment),
        sizeof (GtkAdjustmentClass),
-       (GtkClassInitFunc) gtk_adjustment_class_init,
-       (GtkObjectInitFunc) gtk_adjustment_init,
-       /* reserved_1 */ NULL,
-       /* reserved_2 */ NULL,
-        (GtkClassInitFunc) NULL,
+       NULL,           /* base_init */
+       NULL,           /* base_finalize */
+       (GClassInitFunc) gtk_adjustment_class_init,
+       NULL,           /* class_finalize */
+       NULL,           /* class_data */
+       sizeof (GtkAdjustment),
+       0,              /* n_preallocs */
+       (GInstanceInitFunc) gtk_adjustment_init,
       };
 
-      adjustment_type = gtk_type_unique (GTK_TYPE_DATA, &adjustment_info);
+      adjustment_type =
+       g_type_register_static (GTK_TYPE_OBJECT, "GtkAdjustment",
+                               &adjustment_info, 0);
     }
 
   return adjustment_type;
@@ -70,27 +73,25 @@ gtk_adjustment_get_type (void)
 static void
 gtk_adjustment_class_init (GtkAdjustmentClass *class)
 {
-  GtkObjectClass *object_class;
-
-  object_class = (GtkObjectClass*) class;
-
   class->changed = NULL;
   class->value_changed = NULL;
 
   adjustment_signals[CHANGED] =
-    gtk_signal_new ("changed",
-                    GTK_RUN_FIRST | GTK_RUN_NO_RECURSE,
-                    GTK_CLASS_TYPE (object_class),
-                    GTK_SIGNAL_OFFSET (GtkAdjustmentClass, changed),
-                    gtk_marshal_VOID__VOID,
-                   GTK_TYPE_NONE, 0);
+    g_signal_new ("changed",
+                 G_OBJECT_CLASS_TYPE (class),
+                 G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                 G_STRUCT_OFFSET (GtkAdjustmentClass, changed),
+                 NULL, NULL,
+                 _gtk_marshal_VOID__VOID,
+                 G_TYPE_NONE, 0);
   adjustment_signals[VALUE_CHANGED] =
-    gtk_signal_new ("value_changed",
-                    GTK_RUN_FIRST | GTK_RUN_NO_RECURSE,
-                    GTK_CLASS_TYPE (object_class),
-                    GTK_SIGNAL_OFFSET (GtkAdjustmentClass, value_changed),
-                    gtk_marshal_VOID__VOID,
-                   GTK_TYPE_NONE, 0);
+    g_signal_new ("value_changed",
+                 G_OBJECT_CLASS_TYPE (class),
+                 G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                 G_STRUCT_OFFSET (GtkAdjustmentClass, value_changed),
+                 NULL, NULL,
+                 _gtk_marshal_VOID__VOID,
+                 G_TYPE_NONE, 0);
 }
 
 static void
@@ -105,16 +106,16 @@ gtk_adjustment_init (GtkAdjustment *adjustment)
 }
 
 GtkObject*
-gtk_adjustment_new (gfloat value,
-                   gfloat lower,
-                   gfloat upper,
-                   gfloat step_increment,
-                   gfloat page_increment,
-                   gfloat page_size)
+gtk_adjustment_new (gdouble value,
+                   gdouble lower,
+                   gdouble upper,
+                   gdouble step_increment,
+                   gdouble page_increment,
+                   gdouble page_size)
 {
   GtkAdjustment *adjustment;
 
-  adjustment = gtk_type_new (gtk_adjustment_get_type ());
+  adjustment = g_object_new (GTK_TYPE_ADJUSTMENT, NULL);
 
   adjustment->value = value;
   adjustment->lower = lower;
@@ -126,11 +127,27 @@ gtk_adjustment_new (gfloat value,
   return GTK_OBJECT (adjustment);
 }
 
+/**
+ * gtk_adjustment_get_value:
+ * @adjustment: a #GtkAdjustment
+ *
+ * Gets the current value of the adjustment. See
+ * gtk_adjustment_set_value ().
+ *
+ * Return value: The current value of the adjustment.
+ **/
+gdouble
+gtk_adjustment_get_value (GtkAdjustment *adjustment)
+{
+  g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), 0.);
+
+  return adjustment->value;
+}
+
 void
 gtk_adjustment_set_value (GtkAdjustment        *adjustment,
-                         gfloat                value)
+                         gdouble               value)
 {
-  g_return_if_fail (adjustment != NULL);
   g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
 
   value = CLAMP (value, adjustment->lower, adjustment->upper);
@@ -146,29 +163,26 @@ gtk_adjustment_set_value (GtkAdjustment        *adjustment,
 void
 gtk_adjustment_changed (GtkAdjustment        *adjustment)
 {
-  g_return_if_fail (adjustment != NULL);
   g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
 
-  gtk_signal_emit (GTK_OBJECT (adjustment), adjustment_signals[CHANGED]);
+  g_signal_emit (adjustment, adjustment_signals[CHANGED], 0);
 }
 
 void
 gtk_adjustment_value_changed (GtkAdjustment        *adjustment)
 {
-  g_return_if_fail (adjustment != NULL);
   g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
 
-  gtk_signal_emit (GTK_OBJECT (adjustment), adjustment_signals[VALUE_CHANGED]);
+  g_signal_emit (adjustment, adjustment_signals[VALUE_CHANGED], 0);
 }
 
 void
 gtk_adjustment_clamp_page (GtkAdjustment *adjustment,
-                          gfloat         lower,
-                          gfloat         upper)
+                          gdouble        lower,
+                          gdouble        upper)
 {
-  gint need_emission;
+  gboolean need_emission;
 
-  g_return_if_fail (adjustment != NULL);
   g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
 
   lower = CLAMP (lower, adjustment->lower, adjustment->upper);