[gedit] Add a gsettings for the last wrapping split -mode



commit f08678b7a7f343d6db671745cec89087af2000f4
Author: Sebastien Lafargue <slafargue gnome org>
Date:   Wed Apr 16 19:16:20 2014 +0200

    Add a gsettings for the last wrapping split -mode
    
    https://bugzilla.gnome.org/show_bug.cgi?id=726739
    
    The last split mode is store in a static var
    but if we set wrapping mode off, this state is lost.
    
    So, we add a gsettings named 'wrap-last-split-mode',
    under org.gnome.gedit.WrapMode,
    who can take GTK_WRAP_WORD or GTK_WRAP_CHAR value
    to keep track of it.

 data/org.gnome.gedit.gschema.xml.in |    9 +++++++++
 gedit/gedit-preferences-dialog.c    |   27 +++++++++++++++++++++------
 gedit/gedit-settings.h              |    1 +
 3 files changed, 31 insertions(+), 6 deletions(-)
---
diff --git a/data/org.gnome.gedit.gschema.xml.in b/data/org.gnome.gedit.gschema.xml.in
index 0550259..d078323 100644
--- a/data/org.gnome.gedit.gschema.xml.in
+++ b/data/org.gnome.gedit.gschema.xml.in
@@ -70,6 +70,15 @@
       <summary>Line Wrapping Mode</summary>
       <description>Specifies how to wrap long lines in the editing area. Use "none" for no wrapping, "word" 
for wrapping at word boundaries, and "char" for wrapping at individual character boundaries. Note that the 
values are case-sensitive, so make sure they appear exactly as mentioned here.</description>
     </key>
+    <key name="wrap-last-split-mode" enum="org.gnome.gedit.WrapMode">
+      <aliases>
+        <alias value='GTK_WRAP_WORD' target='word'/>
+        <alias value='GTK_WRAP_CHAR' target='char'/>
+      </aliases>
+      <default>'word'</default>
+      <summary>Last split mode choice for line wrapping mode</summary>
+      <description>Specifies the last split mode used with line wrapping mode, so that when wrapping mode is 
off we still remember the split mode choice. Use "word" for wrapping at word boundaries, and "char" for 
wrapping at individual character boundaries.</description>
+    </key>
     <key name="tabs-size" type="u">
       <default>8</default>
       <summary>Tab Size</summary>
diff --git a/gedit/gedit-preferences-dialog.c b/gedit/gedit-preferences-dialog.c
index 2cd97b7..4e6b4f5 100644
--- a/gedit/gedit-preferences-dialog.c
+++ b/gedit/gedit-preferences-dialog.c
@@ -217,8 +217,6 @@ setup_editor_page (GeditPreferencesDialog *dlg)
                         G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET);
 }
 
-static gboolean split_button_state = TRUE;
-
 static void
 wrap_mode_checkbutton_toggled (GtkToggleButton        *button,
                               GeditPreferencesDialog *dlg)
@@ -245,13 +243,17 @@ wrap_mode_checkbutton_toggled (GtkToggleButton        *button,
 
                if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dlg->priv->split_checkbutton)))
                {
-                       split_button_state = TRUE;
+                       g_settings_set_enum (dlg->priv->editor,
+                                            GEDIT_SETTINGS_WRAP_LAST_SPLIT_MODE,
+                                            GTK_WRAP_WORD);
 
                        mode = GTK_WRAP_WORD;
                }
                else
                {
-                       split_button_state = FALSE;
+                       g_settings_set_enum (dlg->priv->editor,
+                                            GEDIT_SETTINGS_WRAP_LAST_SPLIT_MODE,
+                                            GTK_WRAP_CHAR);
 
                        mode = GTK_WRAP_CHAR;
                }
@@ -266,6 +268,7 @@ static void
 setup_view_page (GeditPreferencesDialog *dlg)
 {
        GtkWrapMode wrap_mode;
+       GtkWrapMode last_split_mode;
        gboolean display_right_margin;
        guint right_margin_position;
 
@@ -288,18 +291,30 @@ setup_view_page (GeditPreferencesDialog *dlg)
                                GTK_TOGGLE_BUTTON (dlg->priv->wrap_text_checkbutton), TRUE);
                        gtk_toggle_button_set_active (
                                GTK_TOGGLE_BUTTON (dlg->priv->split_checkbutton), TRUE);
+
+                       g_settings_set_enum (dlg->priv->editor,
+                                            GEDIT_SETTINGS_WRAP_LAST_SPLIT_MODE,
+                                            GTK_WRAP_WORD);
                        break;
                case GTK_WRAP_CHAR:
                        gtk_toggle_button_set_active (
                                GTK_TOGGLE_BUTTON (dlg->priv->wrap_text_checkbutton), TRUE);
                        gtk_toggle_button_set_active (
                                GTK_TOGGLE_BUTTON (dlg->priv->split_checkbutton), FALSE);
+
+                       g_settings_set_enum (dlg->priv->editor,
+                                            GEDIT_SETTINGS_WRAP_LAST_SPLIT_MODE,
+                                            GTK_WRAP_CHAR);
                        break;
                default:
                        gtk_toggle_button_set_active (
                                GTK_TOGGLE_BUTTON (dlg->priv->wrap_text_checkbutton), FALSE);
-                       gtk_toggle_button_set_active (
-                               GTK_TOGGLE_BUTTON (dlg->priv->split_checkbutton), split_button_state);
+
+                       last_split_mode = g_settings_get_enum (dlg->priv->editor,
+                                                              GEDIT_SETTINGS_WRAP_LAST_SPLIT_MODE);
+                       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->split_checkbutton),
+                                                     last_split_mode == GTK_WRAP_WORD);
+
                        gtk_toggle_button_set_inconsistent (
                                GTK_TOGGLE_BUTTON (dlg->priv->split_checkbutton), TRUE);
        }
diff --git a/gedit/gedit-settings.h b/gedit/gedit-settings.h
index 706a5dc..cb9bedc 100644
--- a/gedit/gedit-settings.h
+++ b/gedit/gedit-settings.h
@@ -80,6 +80,7 @@ void                   gedit_settings_set_list                        (GSettings     
*settings,
 #define GEDIT_SETTINGS_AUTO_SAVE_INTERVAL              "auto-save-interval"
 #define GEDIT_SETTINGS_MAX_UNDO_ACTIONS                        "max-undo-actions"
 #define GEDIT_SETTINGS_WRAP_MODE                       "wrap-mode"
+#define GEDIT_SETTINGS_WRAP_LAST_SPLIT_MODE            "wrap-last-split-mode"
 #define GEDIT_SETTINGS_TABS_SIZE                       "tabs-size"
 #define GEDIT_SETTINGS_INSERT_SPACES                   "insert-spaces"
 #define GEDIT_SETTINGS_AUTO_INDENT                     "auto-indent"


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]