]> git.sur5r.net Git - glabels/commitdiff
2007-05-09 Jim Evins <evins@snaught.com>
authorJim Evins <evins@snaught.com>
Thu, 10 May 2007 02:57:52 +0000 (02:57 +0000)
committerJim Evins <evins@snaught.com>
Thu, 10 May 2007 02:57:52 +0000 (02:57 +0000)
* src/object-editor-bc-page.c:
* src/object-editor-data-page.c:
* src/object-editor-fill-page.c:
* src/object-editor-image-page.c:
* src/object-editor-line-page.c:
* src/object-editor-lsize-page.c:
* src/object-editor-position-page.c:
* src/object-editor-private.h:
* src/object-editor-shadow-page.c:
* src/object-editor-size-page.c:
* src/object-editor-text-page.c:
* src/object-editor.c:
* src/prefs-dialog.c:
* src/template-designer.c:
* src/ui-property-bar.c:
* src/wdgt-media-select.c:
Replaced signal block/unblock pairs with simple flags.  This reduces
some code clutter, hopefully making it easier to read.

git-svn-id: https://glabels.svn.sourceforge.net/svnroot/glabels/trunk@660 f5e0f49d-192f-0410-a22d-a8d8700d0965

17 files changed:
glabels2/ChangeLog
glabels2/src/object-editor-bc-page.c
glabels2/src/object-editor-data-page.c
glabels2/src/object-editor-fill-page.c
glabels2/src/object-editor-image-page.c
glabels2/src/object-editor-line-page.c
glabels2/src/object-editor-lsize-page.c
glabels2/src/object-editor-position-page.c
glabels2/src/object-editor-private.h
glabels2/src/object-editor-shadow-page.c
glabels2/src/object-editor-size-page.c
glabels2/src/object-editor-text-page.c
glabels2/src/object-editor.c
glabels2/src/prefs-dialog.c
glabels2/src/template-designer.c
glabels2/src/ui-property-bar.c
glabels2/src/wdgt-media-select.c

index 1e6aa4b2368e70ca87caa248248018b31dcfebb2..7c009bf8bf3515379ce931a9a60d55f9f00ba3a3 100644 (file)
@@ -1,3 +1,24 @@
+2007-05-09  Jim Evins  <evins@snaught.com>
+
+       * src/object-editor-bc-page.c:
+       * src/object-editor-data-page.c:
+       * src/object-editor-fill-page.c:
+       * src/object-editor-image-page.c:
+       * src/object-editor-line-page.c:
+       * src/object-editor-lsize-page.c:
+       * src/object-editor-position-page.c:
+       * src/object-editor-private.h:
+       * src/object-editor-shadow-page.c:
+       * src/object-editor-size-page.c:
+       * src/object-editor-text-page.c:
+       * src/object-editor.c:
+       * src/prefs-dialog.c:
+       * src/template-designer.c:
+       * src/ui-property-bar.c:
+       * src/wdgt-media-select.c:
+               Replaced signal block/unblock pairs with simple flags.  This reduces
+               some code clutter, hopefully making it easier to read.
+
 2007-05-05  Jim Evins  <evins@snaught.com>
 
        * src/template-designer.c: (apply_cb):
index b5f07230383d5e0667f7dc163342361aab38514f..464029e053dfa71213a0b4ad71eb7113c9d74770 100644 (file)
@@ -163,7 +163,9 @@ style_changed_cb (glObjectEditor       *editor)
        const gchar    *id;
        gchar          *ex_string = NULL;
        guint           digits;
-                                                                                
+
+        if (editor->priv->stop_signals) return;
+
         style_string =
                gtk_combo_box_get_active_text (GTK_COMBO_BOX (editor->priv->bc_style_combo));
                                                                                 
@@ -229,18 +231,7 @@ gl_object_editor_set_bc_style (glObjectEditor      *editor,
  
        gl_debug (DEBUG_EDITOR, "START");
 
-        g_signal_handlers_block_by_func (G_OBJECT(editor->priv->bc_style_combo),
-                                         G_CALLBACK (style_changed_cb),
-                                         editor);
-        g_signal_handlers_block_by_func (G_OBJECT(editor->priv->bc_text_check),
-                                         G_CALLBACK (gl_object_editor_changed_cb),
-                                         editor);
-        g_signal_handlers_block_by_func (G_OBJECT(editor->priv->bc_cs_check),
-                                         G_CALLBACK (gl_object_editor_changed_cb),
-                                         editor);
-       g_signal_handlers_block_by_func (G_OBJECT (editor->priv->data_digits_spin),
-                                        G_CALLBACK (gl_object_editor_changed_cb),
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
         style_string = gl_barcode_id_to_name (id);
  
@@ -285,18 +276,7 @@ gl_object_editor_set_bc_style (glObjectEditor      *editor,
                                          !editor->priv->data_format_fixed_flag);
        }
  
-        g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->bc_style_combo),
-                                          G_CALLBACK (style_changed_cb),
-                                          editor);
-        g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->bc_text_check),
-                                          G_CALLBACK (gl_object_editor_changed_cb),
-                                          editor);
-        g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->bc_cs_check),
-                                          G_CALLBACK (gl_object_editor_changed_cb),
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->data_digits_spin),
-                                        G_CALLBACK (gl_object_editor_changed_cb),
-                                        editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -346,12 +326,7 @@ gl_object_editor_set_bc_color (glObjectEditor      *editor,
 
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->bc_color_combo),
-                                        gl_object_editor_changed_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->bc_key_combo),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        gtk_widget_set_sensitive (editor->priv->bc_key_radio, merge_flag);
 
@@ -383,12 +358,7 @@ gl_object_editor_set_bc_color (glObjectEditor      *editor,
                                                   color_node->key);
        }       
        
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->bc_color_combo),
-                                          gl_object_editor_changed_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->bc_key_combo),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
        
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -436,7 +406,9 @@ gl_object_editor_get_bc_color (glObjectEditor      *editor)
 static void
 bc_radio_toggled_cb (glObjectEditor *editor)
 {
-    gl_debug (DEBUG_EDITOR, "START");
+        if (editor->priv->stop_signals) return;
+
+        gl_debug (DEBUG_EDITOR, "START");
        
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (editor->priv->bc_color_radio))) {
                 gtk_widget_set_sensitive (editor->priv->bc_color_combo, TRUE);
index 5bf85e521777a56ee89580c714aa51e6fdc0b25e..449d3e288efa25e8ca0c0bc49668ebff5151f3bf 100644 (file)
@@ -111,6 +111,8 @@ gl_object_editor_prepare_data_page (glObjectEditor *editor)
 static void
 data_radio_toggled_cb (glObjectEditor *editor)
 {
+        if (editor->priv->stop_signals) return;
+
         gl_debug (DEBUG_WDGT, "START");
  
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (editor->priv->data_literal_radio))) {
@@ -149,12 +151,7 @@ gl_object_editor_set_data (glObjectEditor      *editor,
  
         gl_debug (DEBUG_EDITOR, "START");
  
-       g_signal_handlers_block_by_func (G_OBJECT (editor->priv->data_text_entry),
-                                        G_CALLBACK (gl_object_editor_changed_cb),
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT (editor->priv->data_key_combo),
-                                        G_CALLBACK (gl_object_editor_changed_cb),
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
         gtk_widget_set_sensitive (editor->priv->data_key_radio, merge_flag);
  
@@ -198,12 +195,7 @@ gl_object_editor_set_data (glObjectEditor      *editor,
         }
                                                                                 
 
-       g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->data_text_entry),
-                                          G_CALLBACK (gl_object_editor_changed_cb),
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->data_key_combo),
-                                          G_CALLBACK (gl_object_editor_changed_cb),
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
         gl_debug (DEBUG_EDITOR, "END");
 }
index 0fedf68ec105a4f77aa4f2a14bf71d8a8b3f427c..c40f8a170ee4be32803c4bae13da683743e6bf1d 100644 (file)
@@ -126,12 +126,7 @@ gl_object_editor_set_fill_color (glObjectEditor      *editor,
 
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->fill_color_combo),
-                                        G_CALLBACK (gl_object_editor_changed_cb),
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->fill_key_combo),
-                                        G_CALLBACK (gl_object_editor_changed_cb),
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        gtk_widget_set_sensitive (editor->priv->fill_key_radio, merge_flag);
 
@@ -164,12 +159,7 @@ gl_object_editor_set_fill_color (glObjectEditor      *editor,
                                                   color_node->key);
        }
        
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->fill_color_combo),
-                                          G_CALLBACK (gl_object_editor_changed_cb),
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->fill_key_combo),
-                                          G_CALLBACK (gl_object_editor_changed_cb),
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -214,7 +204,9 @@ gl_object_editor_get_fill_color (glObjectEditor      *editor)
 static void
 fill_radio_toggled_cb (glObjectEditor *editor)
 {
-    gl_debug (DEBUG_EDITOR, "START");
+        if (editor->priv->stop_signals) return;
+
+        gl_debug (DEBUG_EDITOR, "START");
        
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (editor->priv->fill_color_radio))) {
                 gtk_widget_set_sensitive (editor->priv->fill_color_combo, TRUE);
index eac7ea66913b0d7dfed11600b837f91973b606c6..a975ab292a0412cd069d84b22ffe5ea8f64857f6 100644 (file)
@@ -127,6 +127,8 @@ gl_object_editor_prepare_image_page (glObjectEditor *editor)
 static void
 img_radio_toggled_cb (glObjectEditor *editor)
 {
+        if (editor->priv->stop_signals) return;
+
         gl_debug (DEBUG_WDGT, "START");
  
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (editor->priv->img_file_radio))) {
@@ -153,18 +155,7 @@ gl_object_editor_set_image (glObjectEditor      *editor,
 {
         gl_debug (DEBUG_EDITOR, "START");
  
-       g_signal_handlers_block_by_func (G_OBJECT (editor->priv->img_file_button),
-                                        G_CALLBACK (gl_object_editor_changed_cb),
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT (editor->priv->img_key_combo),
-                                        G_CALLBACK (gl_object_editor_changed_cb),
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT (editor->priv->img_file_radio),
-                                        G_CALLBACK (img_radio_toggled_cb),
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT (editor->priv->img_key_radio),
-                                        G_CALLBACK (img_radio_toggled_cb),
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
         gtk_widget_set_sensitive (editor->priv->img_key_radio, merge_flag);
  
@@ -193,18 +184,7 @@ gl_object_editor_set_image (glObjectEditor      *editor,
                                                   text_node->data);
         }
                                                                                 
-       g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->img_file_button),
-                                          G_CALLBACK (gl_object_editor_changed_cb),
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->img_key_combo),
-                                          G_CALLBACK (gl_object_editor_changed_cb),
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->img_file_radio),
-                                           G_CALLBACK (img_radio_toggled_cb),
-                                           editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->img_key_radio),
-                                           G_CALLBACK (img_radio_toggled_cb),
-                                           editor);
+        editor->priv->stop_signals = FALSE;
                                                                                 
         gl_debug (DEBUG_EDITOR, "END");
 }
@@ -245,28 +225,28 @@ gl_object_editor_get_image (glObjectEditor      *editor)
 static void
 update_preview_cb (GtkFileChooser *file_chooser, gpointer data)
 {
-  GtkWidget *preview;
-  char *filename;
-  GdkPixbuf *pixbuf;
-  gboolean have_preview;
-
-  preview = GTK_WIDGET (data);
-  filename = gtk_file_chooser_get_preview_filename (file_chooser);
-
-  if (filename) {
-         pixbuf = gdk_pixbuf_new_from_file_at_size (filename, 128, 128, NULL);
-         have_preview = (pixbuf != NULL);
-         g_free (filename);
-
-         gtk_image_set_from_pixbuf (GTK_IMAGE (preview), pixbuf);
-         if (pixbuf)
-                 gdk_pixbuf_unref (pixbuf);
-
-         gtk_file_chooser_set_preview_widget_active (file_chooser,
-                                                     have_preview);
-  } else {
-         gtk_file_chooser_set_preview_widget_active (file_chooser, FALSE);
-  }
+        GtkWidget *preview;
+        char *filename;
+        GdkPixbuf *pixbuf;
+        gboolean have_preview;
+
+        preview = GTK_WIDGET (data);
+        filename = gtk_file_chooser_get_preview_filename (file_chooser);
+
+        if (filename) {
+                pixbuf = gdk_pixbuf_new_from_file_at_size (filename, 128, 128, NULL);
+                have_preview = (pixbuf != NULL);
+                g_free (filename);
+
+                gtk_image_set_from_pixbuf (GTK_IMAGE (preview), pixbuf);
+                if (pixbuf)
+                        gdk_pixbuf_unref (pixbuf);
+
+                gtk_file_chooser_set_preview_widget_active (file_chooser,
+                                                            have_preview);
+        } else {
+                gtk_file_chooser_set_preview_widget_active (file_chooser, FALSE);
+        }
 }
 
 /*--------------------------------------------------------------------------*/
@@ -353,6 +333,8 @@ img_selection_changed_cb (glObjectEditor *editor)
 {
         gchar *filename;
 
+        if (editor->priv->stop_signals) return;
+
        gl_debug (DEBUG_EDITOR, "START");
 
         filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(editor->priv->img_file_button));
index f7a6bc234fae2263fe10c75582bcaab5218889bf..a9daf766f826bd98a07298040f6e6d8dc5c461fb 100644 (file)
@@ -132,17 +132,13 @@ gl_object_editor_set_line_width (glObjectEditor      *editor,
 {
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->line_width_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        /* Set widget values */
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->line_width_spin),
                                   width);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->line_width_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -176,13 +172,7 @@ gl_object_editor_set_line_color (glObjectEditor      *editor,
 
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->line_color_combo),
-                                        gl_object_editor_changed_cb,
-                                        editor);
-
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->line_key_combo),
-                                        G_CALLBACK (gl_object_editor_changed_cb),
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        gl_debug (DEBUG_EDITOR, "color field %s(%d) / %X", color_node->key, color_node->field_flag, color_node->color);
        gtk_widget_set_sensitive (editor->priv->line_key_radio, merge_flag);
@@ -216,12 +206,7 @@ gl_object_editor_set_line_color (glObjectEditor      *editor,
                                                   color_node->key);
        }
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->line_color_combo),
-                                          gl_object_editor_changed_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->line_key_combo),
-                                          gl_object_editor_changed_cb,
-                                          editor);     
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -266,19 +251,21 @@ gl_object_editor_get_line_color (glObjectEditor      *editor)
 static void
 line_radio_toggled_cb (glObjectEditor *editor)
 {
-    gl_debug (DEBUG_EDITOR, "START");
+        if (editor->priv->stop_signals) return;
+
+        gl_debug (DEBUG_EDITOR, "START");
        
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (editor->priv->line_color_radio))) {
                 gtk_widget_set_sensitive (editor->priv->line_color_combo, TRUE);
                 gtk_widget_set_sensitive (editor->priv->line_key_combo, FALSE);
-    } else {
+        } else {
                 gtk_widget_set_sensitive (editor->priv->line_color_combo, FALSE);
                 gtk_widget_set_sensitive (editor->priv->line_key_combo, TRUE);
                
        }
  
-    /* Emit our "changed" signal */
-    g_signal_emit (G_OBJECT (editor), gl_object_editor_signals[CHANGED], 0);
+        /* Emit our "changed" signal */
+        g_signal_emit (G_OBJECT (editor), gl_object_editor_signals[CHANGED], 0);
  
-    gl_debug (DEBUG_EDITOR, "END");
+        gl_debug (DEBUG_EDITOR, "END");
 }
index 4a3dd0d39cabffe0232e4582138f820537ad7be6..f2bbadfad99d17c09efba3bd45409ea7d2301c86 100644 (file)
@@ -122,12 +122,7 @@ gl_object_editor_set_lsize (glObjectEditor      *editor,
 
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->lsize_r_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->lsize_theta_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        /* save a copy in internal units */
        editor->priv->dx = dx;
@@ -147,12 +142,7 @@ gl_object_editor_set_lsize (glObjectEditor      *editor,
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->lsize_theta_spin),
                                   theta);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->lsize_r_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->lsize_theta_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -169,9 +159,7 @@ gl_object_editor_set_max_lsize (glObjectEditor      *editor,
 
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->lsize_r_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        /* save a copy in internal units */
        editor->priv->dx_max = dx_max;
@@ -189,9 +177,7 @@ gl_object_editor_set_max_lsize (glObjectEditor      *editor,
                                   0.0, 2.0*LENGTH (dx_max, dy_max));
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->lsize_r_spin), tmp);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->lsize_r_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -244,16 +230,12 @@ lsize_prefs_changed_cb (glObjectEditor *editor)
         digits = gl_prefs_get_units_precision ();
 
        /* Update characteristics of r_spin */
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->lsize_r_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
        gtk_spin_button_set_digits (GTK_SPIN_BUTTON(editor->priv->lsize_r_spin),
                                    digits);
        gtk_spin_button_set_increments (GTK_SPIN_BUTTON(editor->priv->lsize_r_spin),
                                        climb_rate, 10.0*climb_rate);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->lsize_r_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        /* Update r_units_label */
        gtk_label_set_text (GTK_LABEL(editor->priv->lsize_r_units_label),
index 3f8a2da4a5bd693c8780f8def345d186a8d341ac..e72036e07d6f42ec1634dd7e2fa9b134767a1cce 100644 (file)
@@ -119,12 +119,7 @@ gl_object_editor_set_position (glObjectEditor      *editor,
 {
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->pos_x_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->pos_y_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        /* save a copy in internal units */
        editor->priv->x = x;
@@ -140,12 +135,7 @@ gl_object_editor_set_position (glObjectEditor      *editor,
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->pos_x_spin), x);
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->pos_y_spin), y);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->pos_x_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->pos_y_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -162,12 +152,7 @@ gl_object_editor_set_max_position (glObjectEditor      *editor,
 
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->pos_x_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->pos_y_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        /* save a copy in internal units */
        editor->priv->x_max = x_max;
@@ -189,12 +174,7 @@ gl_object_editor_set_max_position (glObjectEditor      *editor,
                                   -y_max, 2.0*y_max);
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->pos_y_spin), tmp);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->pos_x_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->pos_y_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -243,12 +223,7 @@ position_prefs_changed_cb (glObjectEditor *editor)
         digits = gl_prefs_get_units_precision ();
 
        /* Update characteristics of x_spin/y_spin */
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->pos_x_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->pos_y_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
        gtk_spin_button_set_digits (GTK_SPIN_BUTTON(editor->priv->pos_x_spin),
                                    digits);
        gtk_spin_button_set_digits (GTK_SPIN_BUTTON(editor->priv->pos_y_spin),
@@ -257,12 +232,7 @@ position_prefs_changed_cb (glObjectEditor *editor)
                                        climb_rate, 10.0*climb_rate);
        gtk_spin_button_set_increments (GTK_SPIN_BUTTON(editor->priv->pos_y_spin),
                                        climb_rate, 10.0*climb_rate);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->pos_x_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->pos_y_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        /* Update units_labels */
        gtk_label_set_text (GTK_LABEL(editor->priv->pos_x_units_label),
index 71a8a57211f87c1d368909d7777632414894b07a..3a69497b16ef60d35f684d479e6326af21ff6ed4 100644 (file)
@@ -151,6 +151,8 @@ struct _glObjectEditorPrivate {
        gdouble     shadow_x_max;
        gdouble     shadow_y_max;
 
+        /* Prevent recursion */
+       gboolean    stop_signals;
 };
 
 enum {
index 889c08e90bcd5ff4e0c389c6c1e6401d09c7f0d2..1396d36b34feeefdc763bef8599ed94d4bb815db 100644 (file)
@@ -166,17 +166,13 @@ gl_object_editor_set_shadow_state (glObjectEditor      *editor,
 {
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->shadow_enable_check),
-                                        shadow_enable_check_toggled_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->shadow_enable_check),
                                       state);
         gtk_widget_set_sensitive (editor->priv->shadow_controls_table, state);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->shadow_enable_check),
-                                          shadow_enable_check_toggled_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -188,12 +184,7 @@ gl_object_editor_set_shadow_offset (glObjectEditor      *editor,
 {
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->shadow_x_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->shadow_y_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        /* save a copy in internal units */
        editor->priv->shadow_x = x;
@@ -209,12 +200,7 @@ gl_object_editor_set_shadow_offset (glObjectEditor      *editor,
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->shadow_x_spin), x);
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->shadow_y_spin), y);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->shadow_x_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->shadow_y_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -228,12 +214,7 @@ gl_object_editor_set_shadow_color (glObjectEditor      *editor,
 
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->shadow_color_combo),
-                                        G_CALLBACK (gl_object_editor_changed_cb),
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->shadow_key_combo),
-                                        G_CALLBACK (gl_object_editor_changed_cb),
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        gtk_widget_set_sensitive (editor->priv->shadow_key_radio, merge_flag);
 
@@ -266,12 +247,7 @@ gl_object_editor_set_shadow_color (glObjectEditor      *editor,
                                                   color_node->key);
        }
        
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->shadow_color_combo),
-                                          G_CALLBACK (gl_object_editor_changed_cb),
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->shadow_key_combo),
-                                          G_CALLBACK (gl_object_editor_changed_cb),
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -282,16 +258,12 @@ gl_object_editor_set_shadow_opacity (glObjectEditor      *editor,
 {
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->shadow_opacity_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->shadow_opacity_spin),
                                   alpha * 100.0);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->shadow_opacity_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -309,12 +281,7 @@ gl_object_editor_set_max_shadow_offset (glObjectEditor      *editor,
 
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->shadow_x_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->shadow_y_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        /* save a copy in internal units */
        editor->priv->shadow_x_max = x_max;
@@ -336,12 +303,7 @@ gl_object_editor_set_max_shadow_offset (glObjectEditor      *editor,
                                   -y_max, y_max);
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->shadow_y_spin), tmp);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->shadow_x_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->shadow_y_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -450,12 +412,7 @@ shadow_prefs_changed_cb (glObjectEditor *editor)
         digits = gl_prefs_get_units_precision ();
 
        /* Update characteristics of x_spin/y_spin */
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->shadow_x_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->shadow_y_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
        gtk_spin_button_set_digits (GTK_SPIN_BUTTON(editor->priv->shadow_x_spin),
                                    digits);
        gtk_spin_button_set_digits (GTK_SPIN_BUTTON(editor->priv->shadow_y_spin),
@@ -464,12 +421,7 @@ shadow_prefs_changed_cb (glObjectEditor *editor)
                                        climb_rate, 10.0*climb_rate);
        gtk_spin_button_set_increments (GTK_SPIN_BUTTON(editor->priv->shadow_y_spin),
                                        climb_rate, 10.0*climb_rate);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->shadow_x_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->shadow_y_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        /* Update units_labels */
        gtk_label_set_text (GTK_LABEL(editor->priv->shadow_x_units_label),
@@ -496,6 +448,8 @@ shadow_enable_check_toggled_cb (glObjectEditor *editor)
 {
        gboolean state;
 
+        if (editor->priv->stop_signals) return;
+
         gl_debug (DEBUG_EDITOR, "START");
 
        state = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (editor->priv->shadow_enable_check));
@@ -515,12 +469,14 @@ shadow_enable_check_toggled_cb (glObjectEditor *editor)
 static void
 shadow_color_radio_toggled_cb (glObjectEditor *editor)
 {
-    gl_debug (DEBUG_EDITOR, "START");
+        if (editor->priv->stop_signals) return;
+
+        gl_debug (DEBUG_EDITOR, "START");
        
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (editor->priv->shadow_color_radio))) {
                 gtk_widget_set_sensitive (editor->priv->shadow_color_combo, TRUE);
                 gtk_widget_set_sensitive (editor->priv->shadow_key_combo, FALSE);
-    } else {
+        } else {
                 gtk_widget_set_sensitive (editor->priv->shadow_color_combo, FALSE);
                 gtk_widget_set_sensitive (editor->priv->shadow_key_combo, TRUE);
                
index cdf83e3995ebbd2c50572ae56598f090ba59c8cd..4d8b1700850a9be46c8e043db67c06e8d3a04a99 100644 (file)
@@ -143,6 +143,8 @@ aspect_toggle_cb (glObjectEditor *editor)
         glWdgtChainButton *toggle;
        gdouble            w, h;
 
+        if (editor->priv->stop_signals) return;
+
        gl_debug (DEBUG_EDITOR, "START");
 
        toggle = GL_WDGT_CHAIN_BUTTON (editor->priv->size_aspect_checkbutton);
@@ -168,6 +170,8 @@ w_spin_cb (glObjectEditor *editor)
        gdouble            w, h;
         glWdgtChainButton *toggle;
 
+        if (editor->priv->stop_signals) return;
+
        gl_debug (DEBUG_EDITOR, "START");
 
        toggle = GL_WDGT_CHAIN_BUTTON (editor->priv->size_aspect_checkbutton);
@@ -179,13 +183,9 @@ w_spin_cb (glObjectEditor *editor)
                 h = w * editor->priv->size_aspect_ratio;
                                                                                 
                 /* Update our sibling control, blocking recursion. */
-                g_signal_handlers_block_by_func (G_OBJECT (editor->priv->size_h_spin),
-                                                G_CALLBACK (h_spin_cb),
-                                                editor);
+                editor->priv->stop_signals = TRUE;
                 gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->size_h_spin), h);
-                g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->size_h_spin),
-                                                  G_CALLBACK (h_spin_cb),
-                                                  editor);
+                editor->priv->stop_signals = FALSE;
         }
                                                                                 
         /* Emit our "changed" signal */
@@ -204,6 +204,8 @@ h_spin_cb (glObjectEditor *editor)
        gdouble            w, h;
         glWdgtChainButton *toggle;
 
+        if (editor->priv->stop_signals) return;
+
        gl_debug (DEBUG_EDITOR, "START");
 
         toggle = GL_WDGT_CHAIN_BUTTON (editor->priv->size_aspect_checkbutton);
@@ -215,13 +217,9 @@ h_spin_cb (glObjectEditor *editor)
                 w = h / editor->priv->size_aspect_ratio;
                                                                                 
                 /* Update our sibling control, blocking recursion. */
-                g_signal_handlers_block_by_func (G_OBJECT (editor->priv->size_w_spin),
-                                                G_CALLBACK (w_spin_cb),
-                                                editor);
+                editor->priv->stop_signals = TRUE;
                 gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->size_w_spin), w);
-                g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->size_w_spin),
-                                                  G_CALLBACK (w_spin_cb),
-                                                  editor);
+                editor->priv->stop_signals = FALSE;
         }
                                                                                 
         /* Emit our "changed" signal */
@@ -241,14 +239,11 @@ size_reset_cb (glObjectEditor *editor)
        gdouble w_max, h_max;
        gdouble aspect_ratio;
 
+        if (editor->priv->stop_signals) return;
+
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT (editor->priv->size_w_spin),
-                                        G_CALLBACK (w_spin_cb),
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT (editor->priv->size_h_spin),
-                                        G_CALLBACK (h_spin_cb),
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        w_base = editor->priv->w_base;
        h_base = editor->priv->h_base;
@@ -278,16 +273,12 @@ size_reset_cb (glObjectEditor *editor)
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->size_h_spin),
                                   h_base);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->size_w_spin),
-                                          G_CALLBACK (w_spin_cb),
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT (editor->priv->size_h_spin),
-                                          G_CALLBACK (h_spin_cb),
-                                          editor);
         /* Emit our "changed" signal */
         g_signal_emit (G_OBJECT (editor), gl_object_editor_signals[CHANGED], 0);
         g_signal_emit (G_OBJECT (editor), gl_object_editor_signals[SIZE_CHANGED], 0);
 
+        editor->priv->stop_signals = FALSE;
+
        gl_debug (DEBUG_EDITOR, "END");
 }
 
@@ -301,12 +292,7 @@ gl_object_editor_set_size (glObjectEditor      *editor,
 {
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->size_w_spin),
-                                        w_spin_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->size_h_spin),
-                                        h_spin_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        /* save a copy in internal units */
        editor->priv->w = w;
@@ -322,16 +308,11 @@ gl_object_editor_set_size (glObjectEditor      *editor,
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->size_w_spin), w);
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->size_h_spin), h);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->size_w_spin),
-                                          w_spin_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->size_h_spin),
-                                          h_spin_cb,
-                                          editor);
-
        /* Update aspect ratio */
        editor->priv->size_aspect_ratio = h / w;
 
+        editor->priv->stop_signals = FALSE;
+
        gl_debug (DEBUG_EDITOR, "END");
 }
 
@@ -347,12 +328,7 @@ gl_object_editor_set_max_size (glObjectEditor      *editor,
 
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->size_w_spin),
-                                        w_spin_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->size_h_spin),
-                                        h_spin_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        /* save a copy in internal units */
        editor->priv->w_max = w_max;
@@ -374,12 +350,7 @@ gl_object_editor_set_max_size (glObjectEditor      *editor,
                                   0.0, 2.0*h_max);
        gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->size_h_spin), tmp);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->size_w_spin),
-                                          w_spin_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->size_h_spin),
-                                          h_spin_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -444,12 +415,7 @@ size_prefs_changed_cb (glObjectEditor *editor)
         digits = gl_prefs_get_units_precision ();
 
        /* Update characteristics of w_spin/h_spin */
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->size_w_spin),
-                                        w_spin_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->size_h_spin),
-                                        h_spin_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
        gtk_spin_button_set_digits (GTK_SPIN_BUTTON(editor->priv->size_w_spin),
                                    digits);
        gtk_spin_button_set_digits (GTK_SPIN_BUTTON(editor->priv->size_h_spin),
@@ -458,12 +424,7 @@ size_prefs_changed_cb (glObjectEditor *editor)
                                        climb_rate, 10.0*climb_rate);
        gtk_spin_button_set_increments (GTK_SPIN_BUTTON(editor->priv->size_h_spin),
                                        climb_rate, 10.0*climb_rate);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->size_w_spin),
-                                          w_spin_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->size_h_spin),
-                                          h_spin_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        /* Update units_labels */
        gtk_label_set_text (GTK_LABEL(editor->priv->size_w_units_label),
index 535feea904dff4e40975fe4c19aab312b0309b84..93aad0a47c0e8c6d1e79c2926054460b14920998 100644 (file)
@@ -185,6 +185,8 @@ static void
 align_toggle_cb (GtkToggleButton *toggle,
                 glObjectEditor  *editor)
 {
+        if (editor->priv->stop_signals) return;
+
         if (gtk_toggle_button_get_active (toggle)) {
  
                 if (GTK_WIDGET (toggle) == GTK_WIDGET (editor->priv->text_left_toggle)) {
@@ -230,9 +232,7 @@ gl_object_editor_set_font_family (glObjectEditor      *editor,
 
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->text_family_combo),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
         /* Make sure we have a valid font family.  if not provide a good default. */
         family_names = gl_util_get_font_family_list ();
@@ -249,9 +249,7 @@ gl_object_editor_set_font_family (glObjectEditor      *editor,
         gl_util_combo_box_set_active_text (GTK_COMBO_BOX (editor->priv->text_family_combo), good_font_family);
         g_free (good_font_family);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->text_family_combo),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -282,16 +280,12 @@ gl_object_editor_set_font_size (glObjectEditor      *editor,
 {
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->text_size_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
         gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->text_size_spin),
                                    font_size);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->text_size_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -323,16 +317,12 @@ gl_object_editor_set_font_weight (glObjectEditor      *editor,
 {
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->text_bold_toggle),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->text_bold_toggle),
                                       (font_weight == PANGO_WEIGHT_BOLD));
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->text_bold_toggle),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -368,17 +358,12 @@ gl_object_editor_set_font_italic_flag (glObjectEditor      *editor,
 {
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->text_italic_toggle),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->text_italic_toggle),
                                       font_italic_flag);
 
-
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->text_italic_toggle),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -411,15 +396,7 @@ gl_object_editor_set_text_alignment (glObjectEditor      *editor,
 {
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->text_left_toggle),
-                                        align_toggle_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->text_center_toggle),
-                                        align_toggle_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->text_right_toggle),
-                                        align_toggle_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->text_left_toggle),
                                       (align == PANGO_ALIGN_LEFT));
@@ -428,15 +405,7 @@ gl_object_editor_set_text_alignment (glObjectEditor      *editor,
         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->text_right_toggle),
                                       (align == PANGO_ALIGN_RIGHT));
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->text_left_toggle),
-                                          align_toggle_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->text_center_toggle),
-                                          align_toggle_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->text_right_toggle),
-                                          align_toggle_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -483,12 +452,7 @@ gl_object_editor_set_text_color (glObjectEditor      *editor,
 
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->text_color_combo),
-                                        gl_object_editor_changed_cb,
-                                        editor);
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->text_color_key_combo),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        gl_debug (DEBUG_EDITOR, "color field %s(%d) / %X", text_color_node->key, text_color_node->field_flag, text_color_node->color);
        
@@ -523,12 +487,7 @@ gl_object_editor_set_text_color (glObjectEditor      *editor,
                gl_debug (DEBUG_EDITOR, "color field true 2");
        }
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->text_color_combo),
-                                          gl_object_editor_changed_cb,
-                                          editor);
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->text_color_key_combo),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -580,16 +539,12 @@ gl_object_editor_set_text_line_spacing (glObjectEditor      *editor,
 {
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->text_line_spacing_spin),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
         gtk_spin_button_set_value (GTK_SPIN_BUTTON (editor->priv->text_line_spacing_spin),
                                    text_line_spacing);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->text_line_spacing_spin),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -621,16 +576,12 @@ gl_object_editor_set_text_auto_shrink (glObjectEditor      *editor,
 {
        gl_debug (DEBUG_EDITOR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(editor->priv->text_auto_shrink_check),
-                                        gl_object_editor_changed_cb,
-                                        editor);
+        editor->priv->stop_signals = TRUE;
 
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->text_auto_shrink_check),
                                       auto_shrink);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(editor->priv->text_auto_shrink_check),
-                                          gl_object_editor_changed_cb,
-                                          editor);
+        editor->priv->stop_signals = FALSE;
 
        gl_debug (DEBUG_EDITOR, "END");
 }
@@ -658,12 +609,14 @@ gboolean    gl_object_editor_get_text_auto_shrink (glObjectEditor      *editor)
 static void
 text_radio_toggled_cb (glObjectEditor *editor)
 {
-    gl_debug (DEBUG_EDITOR, "START");
+        if (editor->priv->stop_signals) return;
+
+        gl_debug (DEBUG_EDITOR, "START");
        
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (editor->priv->text_color_radio))) {
                 gtk_widget_set_sensitive (editor->priv->text_color_combo, TRUE);
                 gtk_widget_set_sensitive (editor->priv->text_color_key_combo, FALSE);
-    } else {
+        } else {
                 gtk_widget_set_sensitive (editor->priv->text_color_combo, FALSE);
                 gtk_widget_set_sensitive (editor->priv->text_color_key_combo, TRUE);
                
index 375a29586d835d8654eee0846599d0538e38c09d..1f8ab59e5bcc07d41ae400599fbf4b14354c97be 100644 (file)
@@ -321,6 +321,8 @@ gl_object_notebook_construct_valist (glObjectEditor       *editor,
 void
 gl_object_editor_changed_cb (glObjectEditor *editor)
 {
+        if (editor->priv->stop_signals) return;
+
        gl_debug (DEBUG_EDITOR, "START");
 
        /* Emit our "changed" signal */
@@ -335,6 +337,8 @@ gl_object_editor_changed_cb (glObjectEditor *editor)
 void
 gl_object_editor_size_changed_cb (glObjectEditor *editor)
 {
+        if (editor->priv->stop_signals) return;
+
        gl_debug (DEBUG_EDITOR, "START");
 
        /* Emit our "size_changed" signal */
index e9d3dec35ba8e2d19c03afff337f78355695c373..6823351062ffb56eade9fd2cbe3fa04fd5874142 100644 (file)
@@ -81,6 +81,9 @@ struct _glPrefsDialogPrivate
 
        /* Default fill properties */
        GtkWidget       *fill_color_combo;
+
+        /* Prevent recursion */
+       gboolean    stop_signals;
 };
 
 /*========================================================*/
@@ -140,7 +143,8 @@ gl_prefs_dialog_init (glPrefsDialog *dialog)
                                        "prefs_notebook",
                                        NULL);
 
-       if (!dialog->priv->gui) {
+       if (!dialog->priv->gui)
+        {
                g_critical ("Could not open prefs-dialog.glade. gLabels may not be installed correctly!");
                return;
        }
@@ -172,7 +176,8 @@ gl_prefs_dialog_finalize (GObject *object)
        g_return_if_fail (GL_IS_PREFS_DIALOG (dialog));
        g_return_if_fail (dialog->priv != NULL);
 
-       if (dialog->priv->gui) {
+       if (dialog->priv->gui)
+        {
                g_object_unref (G_OBJECT (dialog->priv->gui));
        }
        g_free (dialog->priv);
@@ -401,25 +406,29 @@ static void
 align_toggle_cb (GtkToggleButton *toggle,
                  glPrefsDialog   *dialog)
 {
-        if (gtk_toggle_button_get_active (toggle)) {
+        if (gtk_toggle_button_get_active (toggle))
+        {
   
-                if (GTK_WIDGET (toggle) == GTK_WIDGET (dialog->priv->text_left_toggle)) {
+                if (GTK_WIDGET (toggle) == GTK_WIDGET (dialog->priv->text_left_toggle))
+                {
                         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
                                                       (dialog->priv->text_center_toggle),
                                                       FALSE);
                         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
                                                       (dialog->priv->text_right_toggle),
                                                       FALSE);
-                } else if (GTK_WIDGET (toggle) ==
-                           GTK_WIDGET (dialog->priv->text_center_toggle)) {
+                }
+                else if (GTK_WIDGET (toggle) == GTK_WIDGET (dialog->priv->text_center_toggle))
+                {
                         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
                                                       (dialog->priv->text_left_toggle),
                                                       FALSE);
                         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
                                                       (dialog->priv->text_right_toggle),
                                                       FALSE);
-                } else if (GTK_WIDGET (toggle) ==
-                           GTK_WIDGET (dialog->priv->text_right_toggle)) {
+                }
+                else if (GTK_WIDGET (toggle) == GTK_WIDGET (dialog->priv->text_right_toggle))
+                {
                         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
                                                       (dialog->priv->text_left_toggle),
                                                       FALSE);
@@ -440,21 +449,7 @@ align_toggle_cb (GtkToggleButton *toggle,
 static void
 update_locale_page_from_prefs (glPrefsDialog *dialog)
 {
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->units_points_radio),
-               G_CALLBACK(update_prefs_from_locale_page), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->units_inches_radio),
-               G_CALLBACK(update_prefs_from_locale_page), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->units_mm_radio),
-               G_CALLBACK(update_prefs_from_locale_page), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->page_size_us_letter_radio),
-               G_CALLBACK(update_prefs_from_locale_page), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->page_size_a4_radio),
-               G_CALLBACK(update_prefs_from_locale_page), G_OBJECT(dialog));
+       dialog->priv->stop_signals = TRUE;
 
        switch (gl_prefs->units) {
        case GL_UNITS_POINT:
@@ -477,33 +472,22 @@ update_locale_page_from_prefs (glPrefsDialog *dialog)
                break;
        }
 
-       if ( g_strcasecmp(gl_prefs->default_page_size, US_LETTER_ID) == 0) {
+       if ( g_strcasecmp(gl_prefs->default_page_size, US_LETTER_ID) == 0)
+        {
                gtk_toggle_button_set_active (
-                       GTK_TOGGLE_BUTTON(dialog->priv->page_size_us_letter_radio),
-                       TRUE);
-       } else if ( g_strcasecmp(gl_prefs->default_page_size, A4_ID) == 0) {
+                       GTK_TOGGLE_BUTTON(dialog->priv->page_size_us_letter_radio), TRUE);
+       }
+        else if ( g_strcasecmp(gl_prefs->default_page_size, A4_ID) == 0)
+        {
                gtk_toggle_button_set_active (
-                       GTK_TOGGLE_BUTTON(dialog->priv->page_size_a4_radio),
-                       TRUE);
-       } else {
+                       GTK_TOGGLE_BUTTON(dialog->priv->page_size_a4_radio), TRUE);
+       }
+        else
+        {
                g_message ("Unknown default page size"); /* Shouldn't happen */
        }
 
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->units_points_radio),
-               G_CALLBACK(update_prefs_from_locale_page), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->units_inches_radio),
-               G_CALLBACK(update_prefs_from_locale_page), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->units_mm_radio),
-               G_CALLBACK(update_prefs_from_locale_page), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->page_size_us_letter_radio),
-               G_CALLBACK(update_prefs_from_locale_page), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->page_size_a4_radio),
-               G_CALLBACK(update_prefs_from_locale_page), G_OBJECT(dialog));
+       dialog->priv->stop_signals = FALSE;
 }
 
 /*--------------------------------------------------------------------------*/
@@ -516,54 +500,25 @@ update_object_page_from_prefs (glPrefsDialog *dialog)
         gchar    *good_font_family;
        GdkColor *gdk_color;
  
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->text_family_combo),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->text_size_spin),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->text_bold_toggle),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->text_italic_toggle),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->text_color_combo),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->text_left_toggle),
-               G_CALLBACK(align_toggle_cb), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->text_center_toggle),
-               G_CALLBACK(align_toggle_cb), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->text_right_toggle),
-               G_CALLBACK(align_toggle_cb), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->text_line_spacing_spin),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->line_width_spin),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->line_color_combo),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (
-               G_OBJECT(dialog->priv->fill_color_combo),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
+       dialog->priv->stop_signals = TRUE;
 
 
         /* Make sure we have a valid font family.  if not provide a good default. */
         family_names = gl_util_get_font_family_list ();
         if (g_list_find_custom (family_names,
                                gl_prefs->default_font_family,
-                               (GCompareFunc)g_utf8_collate)) {
+                               (GCompareFunc)g_utf8_collate))
+        {
                 good_font_family = g_strdup (gl_prefs->default_font_family);
-        } else {
-                if (family_names != NULL) {
+        }
+        else
+        {
+                if (family_names != NULL)
+                {
                         good_font_family = g_strdup (family_names->data); /* 1st entry */
-                } else {
+                }
+                else
+                {
                         good_font_family = NULL;
                 }
         }
@@ -608,42 +563,7 @@ update_object_page_from_prefs (glPrefsDialog *dialog)
         g_free (gdk_color);
 
 
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->text_family_combo),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->text_size_spin),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->text_bold_toggle),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->text_italic_toggle),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->text_color_combo),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->text_left_toggle),
-               G_CALLBACK(align_toggle_cb), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->text_center_toggle),
-               G_CALLBACK(align_toggle_cb), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->text_right_toggle),
-               G_CALLBACK(align_toggle_cb), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->text_line_spacing_spin),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->line_width_spin),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->line_color_combo),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (
-               G_OBJECT(dialog->priv->fill_color_combo),
-               G_CALLBACK(update_prefs_from_object_page), G_OBJECT(dialog));
+       dialog->priv->stop_signals = FALSE;
 }
 
 /*--------------------------------------------------------------------------*/
@@ -652,25 +572,32 @@ update_object_page_from_prefs (glPrefsDialog *dialog)
 static void
 update_prefs_from_locale_page (glPrefsDialog *dialog)
 {
+       if (dialog->priv->stop_signals) return;
+
        if (gtk_toggle_button_get_active (
-                   GTK_TOGGLE_BUTTON(dialog->priv->units_points_radio))) {
+                   GTK_TOGGLE_BUTTON(dialog->priv->units_points_radio)))
+        {
                gl_prefs->units = GL_UNITS_POINT;
        }
        if (gtk_toggle_button_get_active (
-                   GTK_TOGGLE_BUTTON(dialog->priv->units_inches_radio))) {
+                   GTK_TOGGLE_BUTTON(dialog->priv->units_inches_radio)))
+        {
                gl_prefs->units = GL_UNITS_INCH;
        }
        if (gtk_toggle_button_get_active (
-                   GTK_TOGGLE_BUTTON(dialog->priv->units_mm_radio))) {
+                   GTK_TOGGLE_BUTTON(dialog->priv->units_mm_radio)))
+        {
                gl_prefs->units = GL_UNITS_MM;
        }
 
        if (gtk_toggle_button_get_active (
-                   GTK_TOGGLE_BUTTON(dialog->priv->page_size_us_letter_radio))) {
+                   GTK_TOGGLE_BUTTON(dialog->priv->page_size_us_letter_radio)))
+        {
                gl_prefs->default_page_size = US_LETTER_ID;
        }
        if (gtk_toggle_button_get_active (
-                   GTK_TOGGLE_BUTTON(dialog->priv->page_size_a4_radio))) {
+                   GTK_TOGGLE_BUTTON(dialog->priv->page_size_a4_radio)))
+        {
                gl_prefs->default_page_size = A4_ID;
        }
 
@@ -686,6 +613,7 @@ update_prefs_from_object_page (glPrefsDialog *dialog)
        GdkColor *gdk_color;
        gboolean  is_default;
 
+       if (dialog->priv->stop_signals) return;
 
         g_free (gl_prefs->default_font_family);
         gl_prefs->default_font_family =
@@ -694,9 +622,12 @@ update_prefs_from_object_page (glPrefsDialog *dialog)
                 gtk_spin_button_get_value (GTK_SPIN_BUTTON(dialog->priv->text_size_spin));
 
         if (gtk_toggle_button_get_active
-            (GTK_TOGGLE_BUTTON (dialog->priv->text_bold_toggle))) {
+            (GTK_TOGGLE_BUTTON (dialog->priv->text_bold_toggle)))
+        {
                 gl_prefs->default_font_weight = PANGO_WEIGHT_BOLD;
-        } else {
+        }
+        else
+        {
                 gl_prefs->default_font_weight = PANGO_WEIGHT_NORMAL;
         }
 
@@ -706,22 +637,28 @@ update_prefs_from_object_page (glPrefsDialog *dialog)
 
         gdk_color = color_combo_get_color (COLOR_COMBO(dialog->priv->text_color_combo),
                                            &is_default);
-        if (!is_default) {
+        if (!is_default)
+        {
                 gl_prefs->default_text_color = gl_color_from_gdk_color (gdk_color);
         }
 
         if (gtk_toggle_button_get_active
-            (GTK_TOGGLE_BUTTON (dialog->priv->text_left_toggle))) {
+            (GTK_TOGGLE_BUTTON (dialog->priv->text_left_toggle)))
+        {
                 gl_prefs->default_text_alignment = GTK_JUSTIFY_LEFT;
-        } else
-            if (gtk_toggle_button_get_active
-                (GTK_TOGGLE_BUTTON (dialog->priv->text_right_toggle))) {
+        }
+        else if (gtk_toggle_button_get_active
+                 (GTK_TOGGLE_BUTTON (dialog->priv->text_right_toggle)))
+        {
                 gl_prefs->default_text_alignment = GTK_JUSTIFY_RIGHT;
-        } else
-            if (gtk_toggle_button_get_active
-                (GTK_TOGGLE_BUTTON (dialog->priv->text_center_toggle))) {
+        }
+        else if (gtk_toggle_button_get_active
+                 (GTK_TOGGLE_BUTTON (dialog->priv->text_center_toggle)))
+        {
                 gl_prefs->default_text_alignment = GTK_JUSTIFY_CENTER;
-        } else {
+        }
+        else
+        {
                /* Should not happen. */
                 gl_prefs->default_text_alignment = GTK_JUSTIFY_LEFT;
         }
@@ -735,14 +672,16 @@ update_prefs_from_object_page (glPrefsDialog *dialog)
 
         gdk_color = color_combo_get_color (COLOR_COMBO(dialog->priv->line_color_combo),
                                            &is_default);
-        if (!is_default) {
+        if (!is_default)
+        {
                 gl_prefs->default_line_color = gl_color_from_gdk_color (gdk_color);
         }
 
 
         gdk_color = color_combo_get_color (COLOR_COMBO(dialog->priv->fill_color_combo),
                                            &is_default);
-        if (!is_default) {
+        if (!is_default)
+        {
                 gl_prefs->default_fill_color = gl_color_from_gdk_color (gdk_color);
         }
 
index 490ea2daa1f18dd890b2fa28ab9f2acbca5af02a..301225870de126b18c1eb5a1c7007e7d186e20d5 100644 (file)
@@ -179,6 +179,8 @@ struct _glTemplateDesignerPrivate
        gdouble          climb_rate;
        gint             digits;
 
+        /* Prevent recursion */
+       gboolean    stop_signals;
 };
 
 /* Page numbers for traversing GtkAssistant */
@@ -1417,7 +1419,7 @@ cd_size_page_prepare_cb (glTemplateDesigner *dialog)
 }
 
 /*--------------------------------------------------------------------------*/
-/* PRIVATE.  Layout page widget changed cb.                                 */
+/* PRIVATE.  Prepare Layout page cb.                                        */
 /*--------------------------------------------------------------------------*/
 static void
 layout_page_prepare_cb (glTemplateDesigner *dialog)
@@ -1428,43 +1430,11 @@ layout_page_prepare_cb (glTemplateDesigner *dialog)
        gint    nlayouts;
        gdouble nx_1, ny_1, x0_1, y0_1, dx_1, dy_1;
        gdouble nx_2, ny_2, x0_2, y0_2, dx_2, dy_2;
+       glTemplate *template;
+
+       if (dialog->priv->stop_signals) return;
+       dialog->priv->stop_signals = TRUE;
 
-       g_signal_handlers_block_by_func (G_OBJECT(dialog->priv->layout1_nx_spin),
-                                        G_CALLBACK(layout_page_changed_cb),
-                                        G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (G_OBJECT(dialog->priv->layout1_ny_spin),
-                                        G_CALLBACK(layout_page_changed_cb),
-                                        G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (G_OBJECT(dialog->priv->layout1_x0_spin),
-                                        G_CALLBACK(layout_page_changed_cb),
-                                        G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (G_OBJECT(dialog->priv->layout1_y0_spin),
-                                        G_CALLBACK(layout_page_changed_cb),
-                                        G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (G_OBJECT(dialog->priv->layout1_dx_spin),
-                                        G_CALLBACK(layout_page_changed_cb),
-                                        G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (G_OBJECT(dialog->priv->layout1_dy_spin),
-                                        G_CALLBACK(layout_page_changed_cb),
-                                        G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (G_OBJECT(dialog->priv->layout2_nx_spin),
-                                        G_CALLBACK(layout_page_changed_cb),
-                                        G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (G_OBJECT(dialog->priv->layout2_ny_spin),
-                                        G_CALLBACK(layout_page_changed_cb),
-                                        G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (G_OBJECT(dialog->priv->layout2_x0_spin),
-                                        G_CALLBACK(layout_page_changed_cb),
-                                        G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (G_OBJECT(dialog->priv->layout2_y0_spin),
-                                        G_CALLBACK(layout_page_changed_cb),
-                                        G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (G_OBJECT(dialog->priv->layout2_dx_spin),
-                                        G_CALLBACK(layout_page_changed_cb),
-                                        G_OBJECT(dialog));
-       g_signal_handlers_block_by_func (G_OBJECT(dialog->priv->layout2_dy_spin),
-                                        G_CALLBACK(layout_page_changed_cb),
-                                        G_OBJECT(dialog));
 
        /* Limit ranges based on already chosen page and label sizes. */
        page_w = gtk_spin_button_get_value (GTK_SPIN_BUTTON(dialog->priv->pg_w_spin));
@@ -1543,8 +1513,8 @@ layout_page_prepare_cb (glTemplateDesigner *dialog)
 
        /* Set visibility of layout2 widgets as appropriate. */
        nlayouts = gtk_spin_button_get_value (GTK_SPIN_BUTTON (dialog->priv->nlayouts_spin));
-       if ( nlayouts == 1 ) {
-
+       if ( nlayouts == 1 )
+        {
                gtk_widget_hide (dialog->priv->layout1_head_label);
                gtk_widget_hide (dialog->priv->layout2_head_label);
                gtk_widget_hide (dialog->priv->layout2_nx_spin);
@@ -1553,9 +1523,9 @@ layout_page_prepare_cb (glTemplateDesigner *dialog)
                gtk_widget_hide (dialog->priv->layout2_y0_spin);
                gtk_widget_hide (dialog->priv->layout2_dx_spin);
                gtk_widget_hide (dialog->priv->layout2_dy_spin);
-
-       } else {
-
+       }
+        else
+        {
                gtk_widget_show (dialog->priv->layout1_head_label);
                gtk_widget_show (dialog->priv->layout2_head_label);
                gtk_widget_show (dialog->priv->layout2_nx_spin);
@@ -1564,47 +1534,15 @@ layout_page_prepare_cb (glTemplateDesigner *dialog)
                gtk_widget_show (dialog->priv->layout2_y0_spin);
                gtk_widget_show (dialog->priv->layout2_dx_spin);
                gtk_widget_show (dialog->priv->layout2_dy_spin);
-
        }
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(dialog->priv->layout1_nx_spin),
-                                          G_CALLBACK(layout_page_changed_cb),
-                                          G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (G_OBJECT(dialog->priv->layout1_ny_spin),
-                                          G_CALLBACK(layout_page_changed_cb),
-                                          G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (G_OBJECT(dialog->priv->layout1_x0_spin),
-                                          G_CALLBACK(layout_page_changed_cb),
-                                          G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (G_OBJECT(dialog->priv->layout1_y0_spin),
-                                          G_CALLBACK(layout_page_changed_cb),
-                                          G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (G_OBJECT(dialog->priv->layout1_dx_spin),
-                                          G_CALLBACK(layout_page_changed_cb),
-                                          G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (G_OBJECT(dialog->priv->layout1_dy_spin),
-                                          G_CALLBACK(layout_page_changed_cb),
-                                          G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (G_OBJECT(dialog->priv->layout2_nx_spin),
-                                          G_CALLBACK(layout_page_changed_cb),
-                                          G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (G_OBJECT(dialog->priv->layout2_ny_spin),
-                                          G_CALLBACK(layout_page_changed_cb),
-                                          G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (G_OBJECT(dialog->priv->layout2_x0_spin),
-                                          G_CALLBACK(layout_page_changed_cb),
-                                          G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (G_OBJECT(dialog->priv->layout2_y0_spin),
-                                          G_CALLBACK(layout_page_changed_cb),
-                                          G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (G_OBJECT(dialog->priv->layout2_dx_spin),
-                                          G_CALLBACK(layout_page_changed_cb),
-                                          G_OBJECT(dialog));
-       g_signal_handlers_unblock_by_func (G_OBJECT(dialog->priv->layout2_dy_spin),
-                                          G_CALLBACK(layout_page_changed_cb),
-                                          G_OBJECT(dialog));
-
-       layout_page_changed_cb (dialog);
+       template = build_template (dialog);
+       gl_wdgt_mini_preview_set_template (GL_WDGT_MINI_PREVIEW(dialog->priv->layout_mini_preview),
+                                          template);
+       gl_template_free (template);
+
+
+       dialog->priv->stop_signals = FALSE;
 }
 
 /*--------------------------------------------------------------------------*/
@@ -1615,12 +1553,17 @@ layout_page_changed_cb (glTemplateDesigner *dialog)
 {
        glTemplate *template;
 
+       if (dialog->priv->stop_signals) return;
+       dialog->priv->stop_signals = TRUE;
+
        template = build_template (dialog);
 
        gl_wdgt_mini_preview_set_template (GL_WDGT_MINI_PREVIEW(dialog->priv->layout_mini_preview),
                                           template);
 
        gl_template_free (template);
+
+       dialog->priv->stop_signals = FALSE;
 }
 
 /*--------------------------------------------------------------------------*/
index 2dfbf3f822bbadb7216f6f49ffac10737c5e09ac..ea2d10a497417e166db9a8b96e4823762ddf4fbf 100644 (file)
@@ -78,8 +78,8 @@ struct _glUIPropertyBarPrivate {
        /* Line width */
        GtkWidget  *line_width_spin;
 
+        /* Prevent recursion */
        gboolean    stop_signals;
-
 };
 
 
@@ -191,7 +191,8 @@ gl_ui_property_bar_finalize (GObject *object)
        g_return_if_fail (object != NULL);
        g_return_if_fail (GL_IS_UI_PROPERTY_BAR (object));
 
-       if (property_bar->priv->view) {
+       if (property_bar->priv->view)
+        {
                g_object_unref (G_OBJECT(property_bar->priv->view));
        }
         if (property_bar->priv->gui)
@@ -242,7 +243,8 @@ gl_ui_property_bar_construct (glUIPropertyBar   *property_bar)
        gui = glade_xml_new (GLABELS_GLADE_DIR "property-bar.glade",
                              "property_toolbar", NULL);
 
-       if (!gui) {
+       if (!gui)
+        {
                g_critical ("Could not open property-bar.glade. gLabels may not be installed correctly!");
                return;
        }
@@ -289,11 +291,14 @@ gl_ui_property_bar_construct (glUIPropertyBar   *property_bar)
        family_node = g_list_find_custom (family_names,
                                          gl_prefs->default_font_family,
                                          (GCompareFunc)g_utf8_collate);
-       if (family_node) {
+       if (family_node)
+        {
                gtk_combo_box_set_active (GTK_COMBO_BOX (property_bar->priv->font_family_combo),
                                          g_list_position (family_names,
                                                           family_node));
-       } else {
+       }
+        else
+        {
                gtk_combo_box_set_active (GTK_COMBO_BOX (property_bar->priv->font_family_combo), 0);
        }
        gl_util_font_family_list_free (family_names);
@@ -383,12 +388,18 @@ reset_to_default_properties (glView *view,
        family_names = gl_util_get_font_family_list ();
        if (g_list_find_custom (family_names,
                                view->default_font_family,
-                               (GCompareFunc)g_utf8_collate)) {
+                               (GCompareFunc)g_utf8_collate))
+        {
                good_font_family = g_strdup (view->default_font_family);
-       } else {
-               if (family_names != NULL) {
+       }
+        else
+        {
+               if (family_names != NULL)
+                {
                        good_font_family = g_strdup (family_names->data); /* 1st entry */
-               } else {
+               }
+                else
+                {
                        good_font_family = NULL;
                }
        }
@@ -475,9 +486,12 @@ gl_ui_property_bar_set_tooltips (glUIPropertyBar *property_bar,
        data = gtk_tooltips_data_get (property_bar->priv->font_size_spin);
        g_return_if_fail (data);
 
-       if (state) {
+       if (state)
+        {
                gtk_tooltips_enable (data->tooltips);
-       } else {
+       }
+        else
+        {
                gtk_tooltips_disable (data->tooltips);
        }
 
@@ -527,30 +541,41 @@ update_text_properties (glView *view,
         
        is_first_object = TRUE;
        
-       for (p = view->selected_object_list; p != NULL; p = p->next) {
+       for (p = view->selected_object_list; p != NULL; p = p->next)
+        {
 
                object = gl_view_object_get_object(GL_VIEW_OBJECT (p->data));
                if (!gl_label_object_can_text (object)) 
                        continue;
 
                font_family = gl_label_object_get_font_family (object);
-               if (font_family != NULL) {
+               if (font_family != NULL)
+                {
                        if (selection_font_family == NULL)
+                        {
                                selection_font_family = g_strdup (font_family);
+                        }
                        else 
-                               if (strcmp (font_family, selection_font_family) != 0) 
+                        {
+                               if (strcmp (font_family, selection_font_family) != 0)
+                                {
                                        is_same_font_family = FALSE;
+                                }
+                        }
                        g_free (font_family);
                }       
 
                font_size = gl_label_object_get_font_size (object);
                
                text_color_node = gl_label_object_get_text_color (object);
-               if (text_color_node->field_flag) {
+               if (text_color_node->field_flag)
+                {
                        /* If a merge field is set we use the default color for merged color*/
                        text_color = GL_COLOR_MERGE_DEFAULT;
                        
-               } else {
+               }
+                else
+                {
                        text_color = text_color_node->color;
                }
                gl_color_node_free (&text_color_node);
@@ -559,13 +584,16 @@ update_text_properties (glView *view,
                is_bold = gl_label_object_get_font_weight (object) == PANGO_WEIGHT_BOLD;
                align = gl_label_object_get_text_alignment (object);
 
-               if (is_first_object) {
+               if (is_first_object)
+                {
                        selection_font_size = font_size;
                        selection_text_color = text_color;
                        selection_is_italic = is_italic;
                        selection_is_bold = is_bold;
                        selection_align = align;
-               } else {
+               }
+                else
+                {
                        if (font_size != selection_font_size) 
                                is_same_font_size = FALSE;
                        if (text_color != selection_text_color)
@@ -587,16 +615,20 @@ update_text_properties (glView *view,
                                           is_same_font_family?selection_font_family:"");
        g_free (selection_font_family);
 
-       if (is_same_font_size) {
+       if (is_same_font_size)
+        {
                gl_debug (DEBUG_PROPERTY_BAR, "same font size = %g", 
                          selection_font_size);
                gtk_spin_button_set_value (GTK_SPIN_BUTTON (property_bar->priv->font_size_spin),
                                           selection_font_size);
-       } else {
+       }
+        else
+        {
                gtk_entry_set_text (GTK_ENTRY (property_bar->priv->font_size_spin), "");
        }
 
-       if (is_same_text_color) {
+       if (is_same_text_color)
+        {
                gl_debug (DEBUG_PROPERTY_BAR, "same text color = %08x", selection_text_color);
                gdk_color = gl_color_to_gdk_color (selection_text_color);
                color_combo_set_color (COLOR_COMBO (property_bar->priv->text_color_combo),
@@ -604,15 +636,19 @@ update_text_properties (glView *view,
                g_free (gdk_color);
        }
 
-       if (is_same_is_italic)  
+       if (is_same_is_italic)
+        {
                gl_debug (DEBUG_PROPERTY_BAR, "same italic flag = %d", 
                          selection_is_italic);
+        }
        gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (property_bar->priv->font_italic_toggle),
                                           selection_is_italic && is_same_is_italic);
 
-       if (is_same_is_bold)  
+       if (is_same_is_bold)
+        {
                gl_debug (DEBUG_PROPERTY_BAR, "same bold flag = %d",
                          selection_is_bold);
+        }
        gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (property_bar->priv->font_bold_toggle),
                                           selection_is_bold && is_same_is_bold);
 
@@ -651,32 +687,42 @@ update_fill_color (glView *view,
        is_first_object = TRUE;
         selection_fill_color = 0;
        
-       for (p = view->selected_object_list; p != NULL; p = p->next) {
+       for (p = view->selected_object_list; p != NULL; p = p->next)
+        {
 
                object = gl_view_object_get_object(GL_VIEW_OBJECT (p->data));
                if (!gl_label_object_can_fill (object)) 
                        continue;
 
                fill_color_node = gl_label_object_get_fill_color (object);
-               if (fill_color_node->field_flag) {
+               if (fill_color_node->field_flag)
+                {
                        /* If a merge field is set we use the default color for merged color*/
                        fill_color = GL_COLOR_FILL_MERGE_DEFAULT;
                        
-               } else {
+               }
+                else
+                {
                        fill_color = fill_color_node->color;
                }
                gl_color_node_free (&fill_color_node);
 
-               if (is_first_object) {
+               if (is_first_object)
+                {
                        selection_fill_color = fill_color;
-               } else {
+               }
+                else
+                {
                        if (fill_color != selection_fill_color)
+                        {
                                is_same_fill_color = FALSE;
+                        }
                }
                is_first_object = FALSE;
        }
 
-       if (is_same_fill_color) {
+       if (is_same_fill_color)
+        {
                gl_debug (DEBUG_PROPERTY_BAR, "same fill color = %08x", selection_fill_color);
                gdk_color = gl_color_to_gdk_color (selection_fill_color);
                color_combo_set_color (COLOR_COMBO (property_bar->priv->fill_color_combo),
@@ -707,32 +753,42 @@ update_line_color (glView *view,
        is_first_object = TRUE;
         selection_line_color = 0;
        
-       for (p = view->selected_object_list; p != NULL; p = p->next) {
+       for (p = view->selected_object_list; p != NULL; p = p->next)
+        {
 
                object = gl_view_object_get_object(GL_VIEW_OBJECT (p->data));
                if (!gl_label_object_can_line_color (object)) 
                        continue;
 
                line_color_node = gl_label_object_get_line_color (object);
-               if (line_color_node->field_flag) {
+               if (line_color_node->field_flag)
+                {
                        /* If a merge field is set we use the default color for merged color*/
                        line_color = GL_COLOR_MERGE_DEFAULT;
                        
-               } else {
+               }
+                else
+                {
                        line_color = line_color_node->color;
                }
                gl_color_node_free (&line_color_node);
 
-               if (is_first_object) {
+               if (is_first_object)
+                {
                        selection_line_color = line_color;
-               } else {
+               }
+                else
+                {
                        if (line_color != selection_line_color)
+                        {
                                is_same_line_color = FALSE;
+                        }
                }
                is_first_object = FALSE;
        }
 
-       if (is_same_line_color) {
+       if (is_same_line_color)
+        {
                gl_debug (DEBUG_PROPERTY_BAR, "same line color = %08x", selection_line_color);
                gdk_color = gl_color_to_gdk_color (selection_line_color);
                color_combo_set_color (COLOR_COMBO (property_bar->priv->line_color_combo),
@@ -761,7 +817,8 @@ update_line_width (glView *view,
        is_first_object = TRUE;
         selection_line_width = 0;
        
-       for (p = view->selected_object_list; p != NULL; p = p->next) {
+       for (p = view->selected_object_list; p != NULL; p = p->next)
+        {
 
                object = gl_view_object_get_object(GL_VIEW_OBJECT (p->data));
                if (!gl_label_object_can_line_width (object)) 
@@ -769,20 +826,28 @@ update_line_width (glView *view,
 
                line_width = gl_label_object_get_line_width (object);
 
-               if (is_first_object) {
+               if (is_first_object)
+                {
                        selection_line_width = line_width;
-               } else {
+               }
+                else
+                {
                        if (line_width != selection_line_width)
+                        {
                                is_same_line_width = FALSE;
+                        }
                }
                is_first_object = FALSE;
        }
 
-       if (is_same_line_width) {
+       if (is_same_line_width)
+        {
                gl_debug (DEBUG_PROPERTY_BAR, "same line width = %g", selection_line_width);
                gtk_spin_button_set_value (GTK_SPIN_BUTTON (property_bar->priv->line_width_spin),
                                           selection_line_width);
-       } else {
+       }
+        else
+        {
                gtk_entry_set_text (GTK_ENTRY (property_bar->priv->line_width_spin), "");
        }
 }
@@ -792,31 +857,31 @@ selection_changed_cb (glUIPropertyBar *property_bar)
 {
        glView *view = property_bar->priv->view;
        
-       gl_debug (DEBUG_PROPERTY_BAR, "START");
-
        g_return_if_fail (view && GL_IS_VIEW (view));
        g_return_if_fail (property_bar && GL_IS_UI_PROPERTY_BAR (property_bar));
 
+       if (property_bar->priv->stop_signals) return;
        property_bar->priv->stop_signals = TRUE;
 
-       if (gl_view_is_selection_empty (view)) {
+       gl_debug (DEBUG_PROPERTY_BAR, "START");
 
+       if (gl_view_is_selection_empty (view))
+        {
                /* No selection: make all controls active. */
                reset_to_default_properties (view, property_bar);
                set_doc_items_sensitive (property_bar, TRUE);
-
-       } else {
-
+       }
+        else
+        {
                update_text_properties (view, property_bar);
                update_fill_color (view, property_bar);
                update_line_color (view, property_bar);
                update_line_width (view, property_bar);
-
        }
 
-       property_bar->priv->stop_signals = FALSE;
-
        gl_debug (DEBUG_PROPERTY_BAR, "END");
+
+       property_bar->priv->stop_signals = FALSE;
 }
 
 /*--------------------------------------------------------------------------*/
@@ -828,17 +893,14 @@ font_family_changed_cb (GtkComboBox     *combo,
 {
        gchar *font_family;
 
-       if (property_bar->priv->stop_signals)
-               return;
+       if (property_bar->priv->stop_signals) return;
+       property_bar->priv->stop_signals = TRUE;
 
        gl_debug (DEBUG_PROPERTY_BAR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(property_bar->priv->view->label),
-                                        selection_changed_cb,
-                                        property_bar);
-
        font_family = gtk_combo_box_get_active_text (GTK_COMBO_BOX (combo));
-       if ( strlen(font_family) ) {
+       if ( strlen(font_family) )
+        {
                gl_view_set_selection_font_family (property_bar->priv->view,
                                                   font_family);
                gl_view_set_default_font_family   (property_bar->priv->view,
@@ -846,11 +908,9 @@ font_family_changed_cb (GtkComboBox     *combo,
        }
        g_free (font_family);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(property_bar->priv->view->label),
-                                          selection_changed_cb,
-                                          property_bar);
-
        gl_debug (DEBUG_PROPERTY_BAR, "END");
+
+       property_bar->priv->stop_signals = FALSE;
 }
 
 /*--------------------------------------------------------------------------*/
@@ -862,15 +922,11 @@ font_size_changed_cb (GtkSpinButton        *spin,
 {
        gdouble font_size;
 
-       if (property_bar->priv->stop_signals)
-               return;
+       if (property_bar->priv->stop_signals) return;
+       property_bar->priv->stop_signals = TRUE;
 
        gl_debug (DEBUG_PROPERTY_BAR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(property_bar->priv->view->label),
-                                        selection_changed_cb,
-                                        property_bar);
-
        font_size = gtk_spin_button_get_value (spin);
 
        gl_view_set_selection_font_size (property_bar->priv->view,
@@ -878,11 +934,9 @@ font_size_changed_cb (GtkSpinButton        *spin,
        gl_view_set_default_font_size   (property_bar->priv->view,
                                         font_size);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(property_bar->priv->view->label),
-                                          selection_changed_cb,
-                                          property_bar);
-
        gl_debug (DEBUG_PROPERTY_BAR, "END");
+
+       property_bar->priv->stop_signals = FALSE;
 }
 
 /*--------------------------------------------------------------------------*/
@@ -898,16 +952,12 @@ text_color_changed_cb (ColorCombo           *cc,
 {
        glColorNode *text_color_node;
 
-       if (property_bar->priv->stop_signals)
-               return;
-
        g_return_if_fail (property_bar && GL_IS_UI_PROPERTY_BAR (property_bar));
 
-       gl_debug (DEBUG_PROPERTY_BAR, "START");
+       if (property_bar->priv->stop_signals) return;
+       property_bar->priv->stop_signals = TRUE;
 
-       g_signal_handlers_block_by_func (G_OBJECT(property_bar->priv->view->label),
-                                        selection_changed_cb,
-                                        property_bar);
+       gl_debug (DEBUG_PROPERTY_BAR, "START");
 
        text_color_node = gl_color_node_new_default ();
        text_color_node->color = gl_color_from_gdk_color (gdk_color);
@@ -915,29 +965,27 @@ text_color_changed_cb (ColorCombo           *cc,
        gl_debug (DEBUG_PROPERTY_BAR, "Color=%08x, Custom=%d, By_User=%d, Is_default=%d",
                  text_color_node->color, custom, by_user, is_default);
 
-       if (is_default) {
+       if (is_default)
+        {
                text_color_node->color = gl_prefs->default_text_color;
                gl_view_set_selection_text_color (property_bar->priv->view,
                                                  text_color_node);
                gl_view_set_default_text_color   (property_bar->priv->view,
                                                  gl_prefs->default_text_color);
-
-       } else {
-
+       }
+        else
+        {
                gl_view_set_selection_text_color (property_bar->priv->view,
                                                  text_color_node);
                gl_view_set_default_text_color   (property_bar->priv->view,
                                                  text_color_node->color);
-
        }
 
        gl_color_node_free (&text_color_node);
        
-       g_signal_handlers_unblock_by_func (G_OBJECT(property_bar->priv->view->label),
-                                          selection_changed_cb,
-                                          property_bar);
-
        gl_debug (DEBUG_PROPERTY_BAR, "END");
+
+       property_bar->priv->stop_signals = FALSE;
 }
 
 /*--------------------------------------------------------------------------*/
@@ -953,16 +1001,12 @@ fill_color_changed_cb (ColorCombo           *cc,
 {
        glColorNode *fill_color_node;
 
-       if (property_bar->priv->stop_signals)
-               return;
-
        g_return_if_fail (property_bar && GL_IS_UI_PROPERTY_BAR (property_bar));
 
-       gl_debug (DEBUG_PROPERTY_BAR, "START");
+       if (property_bar->priv->stop_signals) return;
+       property_bar->priv->stop_signals = TRUE;
 
-       g_signal_handlers_block_by_func (G_OBJECT(property_bar->priv->view->label),
-                                        selection_changed_cb,
-                                        property_bar);
+       gl_debug (DEBUG_PROPERTY_BAR, "START");
 
        fill_color_node = gl_color_node_new_default ();
 
@@ -971,29 +1015,27 @@ fill_color_changed_cb (ColorCombo           *cc,
        gl_debug (DEBUG_PROPERTY_BAR, "Color=%08x, Custom=%d, By_User=%d, Is_default=%d",
                  fill_color_node->color, custom, by_user, is_default);
 
-       if (is_default) {
+       if (is_default)
+        {
 
                fill_color_node->color = GL_COLOR_NONE;
                gl_view_set_selection_fill_color (property_bar->priv->view,
                                                  fill_color_node);
                gl_view_set_default_fill_color   (property_bar->priv->view,
                                                  fill_color_node->color);
-
-       } else {
-
+       }
+        else
+        {
                gl_view_set_selection_fill_color (property_bar->priv->view,
                                                  fill_color_node);
                gl_view_set_default_fill_color   (property_bar->priv->view,
                                                  fill_color_node->color);
-
        }
        gl_color_node_free (&fill_color_node);
        
-       g_signal_handlers_unblock_by_func (G_OBJECT(property_bar->priv->view->label),
-                                          selection_changed_cb,
-                                          property_bar);
-
        gl_debug (DEBUG_PROPERTY_BAR, "END");
+
+       property_bar->priv->stop_signals = FALSE;
 }
 
 /*--------------------------------------------------------------------------*/
@@ -1009,16 +1051,12 @@ line_color_changed_cb (ColorCombo           *cc,
 {
        glColorNode *line_color_node;
 
-       if (property_bar->priv->stop_signals)
-               return;
-
        g_return_if_fail (property_bar && GL_IS_UI_PROPERTY_BAR (property_bar));
 
-       gl_debug (DEBUG_PROPERTY_BAR, "START");
+       if (property_bar->priv->stop_signals) return;
+       property_bar->priv->stop_signals = TRUE;
 
-       g_signal_handlers_block_by_func (G_OBJECT(property_bar->priv->view->label),
-                                        selection_changed_cb,
-                                        property_bar);
+       gl_debug (DEBUG_PROPERTY_BAR, "START");
 
        line_color_node = gl_color_node_new_default ();
        line_color_node->color = gl_color_from_gdk_color (gdk_color);
@@ -1026,28 +1064,26 @@ line_color_changed_cb (ColorCombo           *cc,
        gl_debug (DEBUG_PROPERTY_BAR, "Color=%08x, Custom=%d, By_User=%d, Is_default=%d",
                  line_color_node->color, custom, by_user, is_default);
 
-       if (is_default) {
+       if (is_default)
+        {
                line_color_node->color = GL_COLOR_NONE;
                gl_view_set_selection_line_color (property_bar->priv->view,
                                                  line_color_node);
                gl_view_set_default_line_color   (property_bar->priv->view,
                                                  line_color_node->color);
-
-       } else {
-
+       }
+        else
+        {
                gl_view_set_selection_line_color (property_bar->priv->view,
                                                  line_color_node);
                gl_view_set_default_line_color   (property_bar->priv->view,
                                                  line_color_node->color);
-
        }
        gl_color_node_free (&line_color_node);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(property_bar->priv->view->label),
-                                          selection_changed_cb,
-                                          property_bar);
-
        gl_debug (DEBUG_PROPERTY_BAR, "END");
+
+       property_bar->priv->stop_signals = FALSE;
 }
 
 /*--------------------------------------------------------------------------*/
@@ -1059,31 +1095,24 @@ line_width_changed_cb (GtkSpinButton        *spin,
 {
        gdouble line_width;
 
-       if (property_bar->priv->stop_signals)
-               return;
+       if (property_bar->priv->stop_signals) return;
+       property_bar->priv->stop_signals = TRUE;
 
        gl_debug (DEBUG_PROPERTY_BAR, "START");
 
-       if (property_bar->priv->view) {
-
-               g_signal_handlers_block_by_func (G_OBJECT(property_bar->priv->view->label),
-                                                selection_changed_cb,
-                                                property_bar);
-
+       if (property_bar->priv->view)
+        {
                line_width = gtk_spin_button_get_value (spin);
 
                gl_view_set_selection_line_width (property_bar->priv->view,
                                                  line_width);
                gl_view_set_default_line_width   (property_bar->priv->view,
                                                  line_width);
-
-               g_signal_handlers_unblock_by_func (G_OBJECT(property_bar->priv->view->label),
-                                                  selection_changed_cb,
-                                                  property_bar);
-
        }
 
        gl_debug (DEBUG_PROPERTY_BAR, "END");
+
+       property_bar->priv->stop_signals = FALSE;
 }
 
 /*---------------------------------------------------------------------------*/
@@ -1097,15 +1126,11 @@ font_bold_toggled_cb (GtkToggleToolButton  *toggle,
        PangoWeight     weight;
 
 
-       if (property_bar->priv->stop_signals)
-               return;
+       if (property_bar->priv->stop_signals) return;
+       property_bar->priv->stop_signals = TRUE;
 
        gl_debug (DEBUG_PROPERTY_BAR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(property_bar->priv->view->label),
-                                        selection_changed_cb,
-                                        property_bar);
-
        state = gtk_toggle_tool_button_get_active (toggle);
 
        weight = state ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL;
@@ -1113,11 +1138,9 @@ font_bold_toggled_cb (GtkToggleToolButton  *toggle,
        gl_view_set_selection_font_weight (property_bar->priv->view, weight);
        gl_view_set_default_font_weight   (property_bar->priv->view, weight);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(property_bar->priv->view->label),
-                                          selection_changed_cb,
-                                          property_bar);
-
        gl_debug (DEBUG_PROPERTY_BAR, "END");
+
+       property_bar->priv->stop_signals = FALSE;
 }
                                                  
 /*---------------------------------------------------------------------------*/
@@ -1129,25 +1152,19 @@ font_italic_toggled_cb (GtkToggleToolButton  *toggle,
 {
        gboolean state;
 
-       if (property_bar->priv->stop_signals)
-               return;
+       if (property_bar->priv->stop_signals) return;
+       property_bar->priv->stop_signals = TRUE;
 
        gl_debug (DEBUG_PROPERTY_BAR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(property_bar->priv->view->label),
-                                        selection_changed_cb,
-                                        property_bar);
-
        state = gtk_toggle_tool_button_get_active (toggle);
 
        gl_view_set_selection_font_italic_flag (property_bar->priv->view, state);
        gl_view_set_default_font_italic_flag   (property_bar->priv->view, state);
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(property_bar->priv->view->label),
-                                          selection_changed_cb,
-                                          property_bar);
-
        gl_debug (DEBUG_PROPERTY_BAR, "END");
+
+       property_bar->priv->stop_signals = FALSE;
 }
                                                  
 /*---------------------------------------------------------------------------*/
@@ -1157,15 +1174,11 @@ static void
 text_align_toggled_cb (GtkToggleToolButton  *toggle,
                       glUIPropertyBar      *property_bar)
 {
-       if (property_bar->priv->stop_signals)
-               return;
+       if (property_bar->priv->stop_signals) return;
+       property_bar->priv->stop_signals = TRUE;
 
        gl_debug (DEBUG_PROPERTY_BAR, "START");
 
-       g_signal_handlers_block_by_func (G_OBJECT(property_bar->priv->view->label),
-                                        selection_changed_cb,
-                                        property_bar);
-
        if (gtk_toggle_tool_button_get_active (GTK_TOGGLE_TOOL_BUTTON (property_bar->priv->text_align_left_radio)))
        {               
                gl_view_set_selection_text_alignment (property_bar->priv->view,
@@ -1190,11 +1203,9 @@ text_align_toggled_cb (GtkToggleToolButton  *toggle,
                                                      PANGO_ALIGN_RIGHT);
        }
 
-       g_signal_handlers_unblock_by_func (G_OBJECT(property_bar->priv->view->label),
-                                          selection_changed_cb,
-                                          property_bar);
-
        gl_debug (DEBUG_PROPERTY_BAR, "END");
+
+       property_bar->priv->stop_signals = FALSE;
 }
 
 
index 9babee7d93c261e1d646320566d2d3cfe026b79a..8674273cf3b9d8dc7a2403716ab5d586d0b8c836 100644 (file)
@@ -68,6 +68,9 @@ struct _glWdgtMediaSelectPrivate {
 
         GtkWidget    *template_treeview;
         GtkListStore *template_store;
+
+        /* Prevent recursion */
+       gboolean    stop_signals;
 };
 
 enum {
@@ -293,6 +296,8 @@ filter_changed_cb (GtkComboBox *combo,
         gl_debug (DEBUG_MEDIA_SELECT, "START");
 
 
+       media_select->priv->stop_signals = TRUE;
+
         /* Update template selections for new page size */
         page_size_name = gtk_combo_box_get_active_text (GTK_COMBO_BOX (media_select->priv->page_size_combo));
         category_name = gtk_combo_box_get_active_text (GTK_COMBO_BOX (media_select->priv->category_combo));
@@ -307,13 +312,7 @@ filter_changed_cb (GtkComboBox *combo,
                 gl_debug (DEBUG_MEDIA_SELECT, "category_id = \"%s\"", category_id);
                 template_names = gl_template_get_name_list_all (page_size_id, category_id);
                 selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (media_select->priv->template_treeview));
-                g_signal_handlers_block_by_func (G_OBJECT (selection),
-                                                 template_selection_changed_cb,
-                                                 media_select);
                 load_list (media_select->priv->template_store, selection, template_names);
-                g_signal_handlers_unblock_by_func (G_OBJECT (selection),
-                                                   template_selection_changed_cb,
-                                                   media_select);
                 gl_template_free_name_list (template_names);
                 g_free (page_size_id);
 
@@ -323,6 +322,9 @@ filter_changed_cb (GtkComboBox *combo,
         }
         g_free (page_size_name);
 
+
+       media_select->priv->stop_signals = FALSE;
+
         gl_debug (DEBUG_MEDIA_SELECT, "END");
 }
 
@@ -333,6 +335,10 @@ static void
 template_selection_changed_cb (GtkTreeSelection       *selection,
                                gpointer                user_data)
 {
+        glWdgtMediaSelect *media_select = GL_WDGT_MEDIA_SELECT (user_data);
+
+       if (media_select->priv->stop_signals) return;
+
         gl_debug (DEBUG_MEDIA_SELECT, "START");
 
         /* Emit our "changed" signal */