printunixdialog: Update collate icon as entry changes
authorFelipe Borges <felipeborges@gnome.org>
Thu, 18 May 2017 14:11:56 +0000 (16:11 +0200)
committerFelipe Borges <felipeborges@gnome.org>
Wed, 7 Jun 2017 12:29:34 +0000 (14:29 +0200)
By relying on GtkSpinButton default activation behavior, the
collate icon doesn't get updated when a new number is typed
in the copies spin button.

https://bugzilla.gnome.org/show_bug.cgi?id=759308

gtk/gtkprintunixdialog.c

index 82d434a77306dbf0d38edfdb17204a8d2e8afe6d..7259999e285dee29f1b3fef179f58fdaf50493ca 100644 (file)
@@ -2546,8 +2546,29 @@ dialog_set_page_set (GtkPrintUnixDialog *dialog,
 static gint
 dialog_get_n_copies (GtkPrintUnixDialog *dialog)
 {
+  GtkPrintUnixDialogPrivate *priv = dialog->priv;
+  GtkAdjustment *adjustment;
+  const gchar *text;
+  gchar *endptr = NULL;
+  gint n_copies;
+
+  adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (priv->copies_spin));
+
+  text = gtk_entry_get_text (GTK_ENTRY (priv->copies_spin));
+  n_copies = g_ascii_strtoull (text, &endptr, 0);
+
   if (gtk_widget_is_sensitive (dialog->priv->copies_spin))
-    return gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (dialog->priv->copies_spin));
+    {
+      if (n_copies != 0 && endptr != text && (endptr != NULL && endptr[0] == '\0') &&
+          n_copies >= gtk_adjustment_get_lower (adjustment) &&
+          n_copies <= gtk_adjustment_get_upper (adjustment))
+        {
+          return n_copies;
+        }
+
+      return gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (priv->copies_spin));
+    }
+
   return 1;
 }