]> Pileus Git - ~andy/gtk/commitdiff
Added wrapping capabilities to GtkSpinButton. New function :
authorTim Janik <timj@gtk.org>
Sun, 29 Mar 1998 20:40:10 +0000 (20:40 +0000)
committerTim Janik <timj@src.gnome.org>
Sun, 29 Mar 1998 20:40:10 +0000 (20:40 +0000)
Sun Mar 29 22:29:00 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkspinbutton.[ch] gtk/testgtk.c (gtk_spin_button_set_wrap):
                Added wrapping capabilities to GtkSpinButton. New function :
                        gtk_spin_button_set_wrap (Lars Hamann and Stefan Jeske).

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkspinbutton.c
gtk/gtkspinbutton.h
gtk/testgtk.c
tests/testgtk.c

index 6312936fc3c378be6bf13657eae4356a1fc85b20..2c75e1b95ac970196167e81be3e75105fc55ccdb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sun Mar 29 22:29:00 1998  Tim Janik  <timj@gtk.org>
+
+        * gtk/gtkspinbutton.[ch] gtk/testgtk.c (gtk_spin_button_set_wrap):
+       Added wrapping capabilities to GtkSpinButton. New function :
+       gtk_spin_button_set_wrap (Lars Hamann and Stefan Jeske).
+
 Sat Mar 28 21:18:42 1998  Owen Taylor  <owt1@cornell.edu>
 
        * gtk/gtkcombo.c (gtk_combo_disable_activate): 
index 6312936fc3c378be6bf13657eae4356a1fc85b20..2c75e1b95ac970196167e81be3e75105fc55ccdb 100644 (file)
@@ -1,3 +1,9 @@
+Sun Mar 29 22:29:00 1998  Tim Janik  <timj@gtk.org>
+
+        * gtk/gtkspinbutton.[ch] gtk/testgtk.c (gtk_spin_button_set_wrap):
+       Added wrapping capabilities to GtkSpinButton. New function :
+       gtk_spin_button_set_wrap (Lars Hamann and Stefan Jeske).
+
 Sat Mar 28 21:18:42 1998  Owen Taylor  <owt1@cornell.edu>
 
        * gtk/gtkcombo.c (gtk_combo_disable_activate): 
index 6312936fc3c378be6bf13657eae4356a1fc85b20..2c75e1b95ac970196167e81be3e75105fc55ccdb 100644 (file)
@@ -1,3 +1,9 @@
+Sun Mar 29 22:29:00 1998  Tim Janik  <timj@gtk.org>
+
+        * gtk/gtkspinbutton.[ch] gtk/testgtk.c (gtk_spin_button_set_wrap):
+       Added wrapping capabilities to GtkSpinButton. New function :
+       gtk_spin_button_set_wrap (Lars Hamann and Stefan Jeske).
+
 Sat Mar 28 21:18:42 1998  Owen Taylor  <owt1@cornell.edu>
 
        * gtk/gtkcombo.c (gtk_combo_disable_activate): 
index 6312936fc3c378be6bf13657eae4356a1fc85b20..2c75e1b95ac970196167e81be3e75105fc55ccdb 100644 (file)
@@ -1,3 +1,9 @@
+Sun Mar 29 22:29:00 1998  Tim Janik  <timj@gtk.org>
+
+        * gtk/gtkspinbutton.[ch] gtk/testgtk.c (gtk_spin_button_set_wrap):
+       Added wrapping capabilities to GtkSpinButton. New function :
+       gtk_spin_button_set_wrap (Lars Hamann and Stefan Jeske).
+
 Sat Mar 28 21:18:42 1998  Owen Taylor  <owt1@cornell.edu>
 
        * gtk/gtkcombo.c (gtk_combo_disable_activate): 
index 6312936fc3c378be6bf13657eae4356a1fc85b20..2c75e1b95ac970196167e81be3e75105fc55ccdb 100644 (file)
@@ -1,3 +1,9 @@
+Sun Mar 29 22:29:00 1998  Tim Janik  <timj@gtk.org>
+
+        * gtk/gtkspinbutton.[ch] gtk/testgtk.c (gtk_spin_button_set_wrap):
+       Added wrapping capabilities to GtkSpinButton. New function :
+       gtk_spin_button_set_wrap (Lars Hamann and Stefan Jeske).
+
 Sat Mar 28 21:18:42 1998  Owen Taylor  <owt1@cornell.edu>
 
        * gtk/gtkcombo.c (gtk_combo_disable_activate): 
index 6312936fc3c378be6bf13657eae4356a1fc85b20..2c75e1b95ac970196167e81be3e75105fc55ccdb 100644 (file)
@@ -1,3 +1,9 @@
+Sun Mar 29 22:29:00 1998  Tim Janik  <timj@gtk.org>
+
+        * gtk/gtkspinbutton.[ch] gtk/testgtk.c (gtk_spin_button_set_wrap):
+       Added wrapping capabilities to GtkSpinButton. New function :
+       gtk_spin_button_set_wrap (Lars Hamann and Stefan Jeske).
+
 Sat Mar 28 21:18:42 1998  Owen Taylor  <owt1@cornell.edu>
 
        * gtk/gtkcombo.c (gtk_combo_disable_activate): 
index 6312936fc3c378be6bf13657eae4356a1fc85b20..2c75e1b95ac970196167e81be3e75105fc55ccdb 100644 (file)
@@ -1,3 +1,9 @@
+Sun Mar 29 22:29:00 1998  Tim Janik  <timj@gtk.org>
+
+        * gtk/gtkspinbutton.[ch] gtk/testgtk.c (gtk_spin_button_set_wrap):
+       Added wrapping capabilities to GtkSpinButton. New function :
+       gtk_spin_button_set_wrap (Lars Hamann and Stefan Jeske).
+
 Sat Mar 28 21:18:42 1998  Owen Taylor  <owt1@cornell.edu>
 
        * gtk/gtkcombo.c (gtk_combo_disable_activate): 
index 3f014e04bbe50b1b6edab2e9f62093d8d9b0ab53..f26fc22cc0c0a6635c721321073c691aa661754a 100644 (file)
@@ -162,6 +162,7 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
   spin_button->timer_calls = 0;
   spin_button->digits = 0;
   spin_button->numeric = 0;
+  spin_button->wrap = 0;
 }
 
 void
@@ -759,21 +760,41 @@ gtk_spin_button_spin (GtkSpinButton *spin_button,
                      gfloat         step)
 {
   gfloat new_value = 0.0;
-
+  
   g_return_if_fail (spin_button != NULL);
   g_return_if_fail (GTK_IS_SPIN_BUTTON (spin_button));
   
   if (direction == GTK_ARROW_UP)
     {
-      new_value = MIN (spin_button->adjustment->value + step,
-                      spin_button->adjustment->upper);
+      new_value = spin_button->adjustment->value + step;
+      if (spin_button->wrap)
+       {
+         if (spin_button->adjustment->value == spin_button->adjustment->upper)
+           new_value = spin_button->adjustment->lower;
+         else if (new_value > spin_button->adjustment->upper)
+           new_value = spin_button->adjustment->upper;
+       }
+      else
+       {
+         new_value = MIN (new_value, spin_button->adjustment->upper);
+       }
     }
   else if (direction == GTK_ARROW_DOWN) 
     {
-      new_value = MAX (spin_button->adjustment->value - step,
-                      spin_button->adjustment->lower);
+      new_value = spin_button->adjustment->value - step;
+      if (spin_button->wrap)
+       {
+         if (spin_button->adjustment->value == spin_button->adjustment->lower)
+           new_value = spin_button->adjustment->upper;
+         else if (new_value < spin_button->adjustment->lower)
+           new_value = spin_button->adjustment->lower;
+       }
+      else
+       {
+         new_value = MAX (new_value, spin_button->adjustment->lower);
+       }
     }
-
+  
   if (new_value != spin_button->adjustment->value)
     gtk_adjustment_set_value (spin_button->adjustment, new_value);
 }
@@ -1100,3 +1121,13 @@ gtk_spin_button_insert_text (GtkEditable *editable,
   GTK_EDITABLE_CLASS (parent_class)->insert_text (editable, new_text,
                                                  new_text_length, position);
 }
+
+void
+gtk_spin_button_set_wrap (GtkSpinButton  *spin_button,
+                         gint            wrap)
+{
+  g_return_if_fail (spin_button != NULL);
+  g_return_if_fail (GTK_IS_SPIN_BUTTON (spin_button));
+
+  spin_button->wrap = (wrap != 0);
+}
index d9be647dbb900af784c1c3f96e1429fa641c9482..a247adec80ff7afab110e0e33be770667728a305 100644 (file)
@@ -11,7 +11,7 @@
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
-
-
-#define GTK_SPIN_BUTTON(obj)          GTK_CHECK_CAST (obj, gtk_spin_button_get_type (), GtkSpinButton)
+  
+  
+#define GTK_SPIN_BUTTON(obj)         GTK_CHECK_CAST (obj, gtk_spin_button_get_type (), GtkSpinButton)
 #define GTK_SPIN_BUTTON_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_spin_button_get_type (), GtkSpinButtonClass)
-#define GTK_IS_SPIN_BUTTON(obj)       GTK_CHECK_TYPE (obj, gtk_spin_button_get_type ())
-
-
+#define GTK_IS_SPIN_BUTTON(obj)              GTK_CHECK_TYPE (obj, gtk_spin_button_get_type ())
+  
+  
 typedef enum
 {
-  GTK_UPDATE_ALWAYS        = 1 << 0,
-  GTK_UPDATE_IF_VALID      = 1 << 1,
+  GTK_UPDATE_ALWAYS       = 1 << 0,
+  GTK_UPDATE_IF_VALID     = 1 << 1,
   GTK_UPDATE_SNAP_TO_TICKS = 1 << 2
 } GtkSpinButtonUpdatePolicy;
-
-
-typedef struct _GtkSpinButton       GtkSpinButton;
+  
+  
+typedef struct _GtkSpinButton      GtkSpinButton;
 typedef struct _GtkSpinButtonClass  GtkSpinButtonClass;
 
 
 struct _GtkSpinButton
 {
   GtkEntry entry;
-
+  
   GtkAdjustment *adjustment;
-
+  
   GdkWindow *panel;
-
+  
   guint32 timer;
-
+  
   gfloat climb_rate;
   gfloat timer_step;
-
+  
   guint8 update_policy;
-
+  
   guint in_child : 2;
   guint click_child : 2;
   guint button : 2;
@@ -72,6 +72,7 @@ struct _GtkSpinButton
   guint timer_calls : 3;
   guint digits : 3;
   guint numeric : 1;
+  guint wrap : 1;
 };
 
 struct _GtkSpinButtonClass
@@ -79,42 +80,47 @@ struct _GtkSpinButtonClass
   GtkEntryClass parent_class;
 };
 
-guint          gtk_spin_button_get_type           (void);
+guint          gtk_spin_button_get_type           (void);
 
-void           gtk_spin_button_construct          (GtkSpinButton  *spin_button,
+void           gtk_spin_button_construct          (GtkSpinButton  *spin_button,
                                                    GtkAdjustment  *adjustment,
-                                                   gfloat          climb_rate,
-                                                   gint            digits);
+                                                   gfloat          climb_rate,
+                                                   gint            digits);
 
-GtkWidget*     gtk_spin_button_new                (GtkAdjustment  *adjustment,
-                                                   gfloat          climb_rate,
-                                                   gint            digits);
+GtkWidget*     gtk_spin_button_new                (GtkAdjustment  *adjustment,
+                                                   gfloat          climb_rate,
+                                                   gint            digits);
 
-void           gtk_spin_button_set_adjustment     (GtkSpinButton  *spin_button,
+void           gtk_spin_button_set_adjustment     (GtkSpinButton  *spin_button,
                                                    GtkAdjustment  *adjustment);
 
-GtkAdjustment* gtk_spin_button_get_adjustment     (GtkSpinButton  *spin_button);
+GtkAdjustment* gtk_spin_button_get_adjustment     (GtkSpinButton  *spin_button);
 
-void           gtk_spin_button_set_digits         (GtkSpinButton  *spin_button,
-                                                   gint            digits);
+void           gtk_spin_button_set_digits         (GtkSpinButton  *spin_button,
+                                                   gint            digits);
 
 gfloat         gtk_spin_button_get_value_as_float (GtkSpinButton  *spin_button);
 
 gint           gtk_spin_button_get_value_as_int   (GtkSpinButton  *spin_button);
 
-void           gtk_spin_button_set_value          (GtkSpinButton  *spin_button, 
-                                                   gfloat          value);
+void           gtk_spin_button_set_value          (GtkSpinButton  *spin_button, 
+                                                   gfloat          value);
 
 void           gtk_spin_button_set_update_policy  (GtkSpinButton  *spin_button,
                                                    GtkSpinButtonUpdatePolicy  policy);
 
-void           gtk_spin_button_set_numeric        (GtkSpinButton  *spin_button,
-                                                   gint            numeric);
+void           gtk_spin_button_set_numeric        (GtkSpinButton  *spin_button,
+                                                   gint            numeric);
 
 void           gtk_spin_button_spin               (GtkSpinButton *spin_button,
-                                                   guint          direction,
-                                                   gfloat         step);
-     
+                                                   guint          direction,
+                                                   gfloat         step);
+
+void           gtk_spin_button_set_wrap           (GtkSpinButton  *spin_button,
+                                                   gint            wrap);
+
+
+
 
 #ifdef __cplusplus
 }
index af57b651401c20a396ccf6722afc10db698c8726..e96016a9facb50823f025c285467c86471917784 100644 (file)
@@ -2346,6 +2346,7 @@ create_spins ()
       adj = (GtkAdjustment *) gtk_adjustment_new (1.0, 1.0, 31.0, 1.0,
                                                  5.0, 0.0);
       spinner = gtk_spin_button_new (adj, 0, 0);
+      gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner), TRUE);
       gtk_box_pack_start (GTK_BOX (vbox2), spinner, FALSE, TRUE, 0);
 
       vbox2 = gtk_vbox_new (FALSE, 0);
@@ -2358,6 +2359,7 @@ create_spins ()
       adj = (GtkAdjustment *) gtk_adjustment_new (1.0, 1.0, 12.0, 1.0,
                                                  5.0, 0.0);
       spinner = gtk_spin_button_new (adj, 0, 0);
+      gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner), TRUE);
       gtk_box_pack_start (GTK_BOX (vbox2), spinner, FALSE, TRUE, 0);
       
       vbox2 = gtk_vbox_new (FALSE, 0);
@@ -2370,6 +2372,7 @@ create_spins ()
       adj = (GtkAdjustment *) gtk_adjustment_new (1998.0, 0.0, 2100.0, 
                                                  1.0, 100.0, 0.0);
       spinner = gtk_spin_button_new (adj, 0, 0);
+      gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner), TRUE);
       gtk_widget_set_usize (spinner, 55, 0);
       gtk_box_pack_start (GTK_BOX (vbox2), spinner, FALSE, TRUE, 0);
 
@@ -2393,6 +2396,7 @@ create_spins ()
       adj = (GtkAdjustment *) gtk_adjustment_new (0.0, -10000.0, 10000.0,
                                                  0.5, 100.0, 0.0);
       spinner1 = gtk_spin_button_new (adj, 1.0, 2);
+      gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner1), TRUE);
       gtk_widget_set_usize (spinner1, 100, 0);
       gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinner1),
                                         GTK_UPDATE_ALWAYS);
@@ -2407,6 +2411,7 @@ create_spins ()
 
       adj = (GtkAdjustment *) gtk_adjustment_new (2, 1, 5, 1, 1, 0);
       spinner2 = gtk_spin_button_new (adj, 0.0, 0);
+      gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner2), TRUE);
       gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
                          GTK_SIGNAL_FUNC (change_digits),
                          (gpointer) spinner2);
@@ -2467,7 +2472,6 @@ create_spins ()
     gtk_widget_destroy (window);
 }
 
-
 /*
  * Cursors
  */
index af57b651401c20a396ccf6722afc10db698c8726..e96016a9facb50823f025c285467c86471917784 100644 (file)
@@ -2346,6 +2346,7 @@ create_spins ()
       adj = (GtkAdjustment *) gtk_adjustment_new (1.0, 1.0, 31.0, 1.0,
                                                  5.0, 0.0);
       spinner = gtk_spin_button_new (adj, 0, 0);
+      gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner), TRUE);
       gtk_box_pack_start (GTK_BOX (vbox2), spinner, FALSE, TRUE, 0);
 
       vbox2 = gtk_vbox_new (FALSE, 0);
@@ -2358,6 +2359,7 @@ create_spins ()
       adj = (GtkAdjustment *) gtk_adjustment_new (1.0, 1.0, 12.0, 1.0,
                                                  5.0, 0.0);
       spinner = gtk_spin_button_new (adj, 0, 0);
+      gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner), TRUE);
       gtk_box_pack_start (GTK_BOX (vbox2), spinner, FALSE, TRUE, 0);
       
       vbox2 = gtk_vbox_new (FALSE, 0);
@@ -2370,6 +2372,7 @@ create_spins ()
       adj = (GtkAdjustment *) gtk_adjustment_new (1998.0, 0.0, 2100.0, 
                                                  1.0, 100.0, 0.0);
       spinner = gtk_spin_button_new (adj, 0, 0);
+      gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner), TRUE);
       gtk_widget_set_usize (spinner, 55, 0);
       gtk_box_pack_start (GTK_BOX (vbox2), spinner, FALSE, TRUE, 0);
 
@@ -2393,6 +2396,7 @@ create_spins ()
       adj = (GtkAdjustment *) gtk_adjustment_new (0.0, -10000.0, 10000.0,
                                                  0.5, 100.0, 0.0);
       spinner1 = gtk_spin_button_new (adj, 1.0, 2);
+      gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner1), TRUE);
       gtk_widget_set_usize (spinner1, 100, 0);
       gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinner1),
                                         GTK_UPDATE_ALWAYS);
@@ -2407,6 +2411,7 @@ create_spins ()
 
       adj = (GtkAdjustment *) gtk_adjustment_new (2, 1, 5, 1, 1, 0);
       spinner2 = gtk_spin_button_new (adj, 0.0, 0);
+      gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner2), TRUE);
       gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
                          GTK_SIGNAL_FUNC (change_digits),
                          (gpointer) spinner2);
@@ -2467,7 +2472,6 @@ create_spins ()
     gtk_widget_destroy (window);
 }
 
-
 /*
  * Cursors
  */