[Xfce4-commits] [apps/xfce4-terminal] 01/01: Add option for ambigouos-width characters

noreply at xfce.org noreply at xfce.org
Tue Dec 13 11:49:26 CET 2016


This is an automated email from the git hooks/post-receive script.

f2404 pushed a commit to branch master
in repository apps/xfce4-terminal.

commit 57d5d0d1a51d3095a5e40697a82b666c2fe753b0
Author: Igor <f2404 at yandex.ru>
Date:   Tue Dec 13 13:49:17 2016 +0300

    Add option for ambigouos-width characters
---
 terminal/terminal-preferences-dialog.c | 16 ++++++------
 terminal/terminal-preferences.c        | 14 +++++++++++
 terminal/terminal-preferences.glade    | 46 +++++++++++++++++++++++++++++++++-
 terminal/terminal-preferences.h        |  6 +++++
 terminal/terminal-screen.c             | 16 ++++++++++++
 5 files changed, 89 insertions(+), 9 deletions(-)

diff --git a/terminal/terminal-preferences-dialog.c b/terminal/terminal-preferences-dialog.c
index 1ee26b7..4bad43b 100644
--- a/terminal/terminal-preferences-dialog.c
+++ b/terminal/terminal-preferences-dialog.c
@@ -144,13 +144,13 @@ terminal_preferences_dialog_init (TerminalPreferencesDialog *dialog)
                                        "scrolling-bar", "scrolling-unlimited",
                                        "misc-cursor-shape", "misc-cursor-blinks",
                                        "font-allow-bold", "font-use-system",
-                                       "misc-menubar-default",
-                                       "misc-toolbar-default", "misc-borders-default",
-                                       "misc-tab-close-middle-click", "misc-mouse-autohide",
-                                       "misc-rewrap-on-resize", "misc-copy-on-select",
-                                       "shortcuts-no-helpkey", "shortcuts-no-mnemonics",
-                                       "shortcuts-no-menukey", "binding-backspace",
-                                       "binding-delete", "background-mode",
+                                       "misc-menubar-default", "misc-toolbar-default",
+                                       "misc-borders-default", "misc-tab-close-middle-click",
+                                       "misc-mouse-autohide", "misc-rewrap-on-resize",
+                                       "misc-copy-on-select", "shortcuts-no-helpkey",
+                                       "shortcuts-no-mnemonics", "shortcuts-no-menukey",
+                                       "binding-backspace", "binding-delete",
+                                       "binding-ambiguous-width", "background-mode",
                                        "background-image-style", "color-background-vary",
                                        "dropdown-keep-open-default", "dropdown-keep-above",
                                        "dropdown-toggle-focus", "dropdown-status-icon",
@@ -810,7 +810,7 @@ terminal_preferences_dialog_reset_compat (GtkWidget                 *button,
 {
   GParamSpec  *spec;
   GValue       value = { 0, };
-  const gchar *properties[] = { "binding-backspace", "binding-delete" };
+  const gchar *properties[] = { "binding-backspace", "binding-delete", "binding-ambiguous-width" };
   guint        i;
 
   for (i = 0; i < G_N_ELEMENTS (properties); i++)
diff --git a/terminal/terminal-preferences.c b/terminal/terminal-preferences.c
index 42cb4fb..30ad359 100644
--- a/terminal/terminal-preferences.c
+++ b/terminal/terminal-preferences.c
@@ -50,6 +50,7 @@ enum
   PROP_BACKGROUND_IMAGE_SHADING,
   PROP_BINDING_BACKSPACE,
   PROP_BINDING_DELETE,
+  PROP_BINDING_AMBIGUOUS_WIDTH,
   PROP_COLOR_FOREGROUND,
   PROP_COLOR_BACKGROUND,
   PROP_COLOR_BACKGROUND_VARY,
@@ -286,6 +287,8 @@ terminal_preferences_class_init (TerminalPreferencesClass *klass)
     g_value_register_transform_func (G_TYPE_STRING, TERMINAL_TYPE_TITLE, transform_string_to_enum);
   if (!g_value_type_transformable (G_TYPE_STRING, TERMINAL_TYPE_ERASE_BINDING))
     g_value_register_transform_func (G_TYPE_STRING, TERMINAL_TYPE_ERASE_BINDING, transform_string_to_enum);
+  if (!g_value_type_transformable (G_TYPE_STRING, TERMINAL_TYPE_AMBIGUOUS_WIDTH_BINDING))
+    g_value_register_transform_func (G_TYPE_STRING, TERMINAL_TYPE_AMBIGUOUS_WIDTH_BINDING, transform_string_to_enum);
   if (!g_value_type_transformable (G_TYPE_STRING, TERMINAL_TYPE_CURSOR_SHAPE))
     g_value_register_transform_func (G_TYPE_STRING, TERMINAL_TYPE_CURSOR_SHAPE, transform_string_to_enum);
 
@@ -369,6 +372,17 @@ terminal_preferences_class_init (TerminalPreferencesClass *klass)
                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
+   * TerminalPreferences:binding-ambiguous-width:
+   **/
+  preferences_props[PROP_BINDING_AMBIGUOUS_WIDTH] =
+      g_param_spec_enum ("binding-ambiguous-width",
+                         NULL,
+                         "BindingAmbiguousWidth",
+                         TERMINAL_TYPE_AMBIGUOUS_WIDTH_BINDING,
+                         TERMINAL_AMBIGUOUS_WIDTH_BINDING_NARROW,
+                         G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
+  /**
    * TerminalPreferences:color-foreground:
    **/
   preferences_props[PROP_COLOR_FOREGROUND] =
diff --git a/terminal/terminal-preferences.glade b/terminal/terminal-preferences.glade
index e119dea..faa85a2 100644
--- a/terminal/terminal-preferences.glade
+++ b/terminal/terminal-preferences.glade
@@ -192,6 +192,20 @@
       </row>
     </data>
   </object>
+  <object class="GtkListStore" id="liststore8">
+    <columns>
+      <!-- column-name title -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Narrow</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Wide</col>
+      </row>
+    </data>
+  </object>
   <object class="GtkAdjustment" id="scrolling-line">
     <property name="lower">1</property>
     <property name="upper">5242880</property>
@@ -2729,10 +2743,40 @@ different terminal behavior.</property>
                               </object>
                               <packing>
                                 <property name="left_attach">0</property>
-                                <property name="top_attach">2</property>
+                                <property name="top_attach">3</property>
                                 <property name="width">2</property>
                               </packing>
                             </child>
+                            <child>
+                              <object class="GtkLabel" id="label33">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="halign">start</property>
+                                <property name="label" translatable="yes">_Ambiguous-width characters:</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="top_attach">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkComboBox" id="binding-ambiguous-width">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="model">liststore8</property>
+                                <child>
+                                  <object class="GtkCellRendererText" id="cellrenderertext10"/>
+                                  <attributes>
+                                    <attribute name="text">0</attribute>
+                                  </attributes>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="top_attach">2</property>
+                              </packing>
+                            </child>
                           </object>
                           <packing>
                             <property name="expand">False</property>
diff --git a/terminal/terminal-preferences.h b/terminal/terminal-preferences.h
index 392586c..26ca2f5 100644
--- a/terminal/terminal-preferences.h
+++ b/terminal/terminal-preferences.h
@@ -73,6 +73,12 @@ typedef enum /*< enum,prefix=TERMINAL_ERASE_BINDING >*/
   TERMINAL_ERASE_BINDING_ERASE_TTY        /* TTY Erase */
 } TerminalEraseBinding;
 
+typedef enum /*< enum,prefix=TERMINAL_AMBIGUOUS_WIDTH_BINDING >*/
+{
+  TERMINAL_AMBIGUOUS_WIDTH_BINDING_NARROW,
+  TERMINAL_AMBIGUOUS_WIDTH_BINDING_WIDE
+} TerminalAmbiguousWidthBinding;
+
 typedef enum /*< enum,prefix=TERMINAL_CURSOR_SHAPE >*/
 {
   TERMINAL_CURSOR_SHAPE_BLOCK,
diff --git a/terminal/terminal-screen.c b/terminal/terminal-screen.c
index fd203f5..c7ca0ce 100644
--- a/terminal/terminal-screen.c
+++ b/terminal/terminal-screen.c
@@ -108,6 +108,7 @@ static gchar    **terminal_screen_get_child_environment         (TerminalScreen
 static void       terminal_screen_update_background             (TerminalScreen        *screen);
 static void       terminal_screen_update_binding_backspace      (TerminalScreen        *screen);
 static void       terminal_screen_update_binding_delete         (TerminalScreen        *screen);
+static void       terminal_screen_update_binding_ambiguous_width(TerminalScreen        *screen);
 static void       terminal_screen_update_encoding               (TerminalScreen        *screen);
 static void       terminal_screen_update_colors                 (TerminalScreen        *screen);
 static void       terminal_screen_update_misc_bell              (TerminalScreen        *screen);
@@ -286,6 +287,7 @@ terminal_screen_init (TerminalScreen *screen)
   /* apply current settings */
   terminal_screen_update_binding_backspace (screen);
   terminal_screen_update_binding_delete (screen);
+  terminal_screen_update_binding_ambiguous_width (screen);
   terminal_screen_update_encoding (screen);
   terminal_screen_update_font (screen);
   terminal_screen_update_misc_bell (screen);
@@ -537,6 +539,8 @@ terminal_screen_preferences_changed (TerminalPreferences *preferences,
     terminal_screen_update_binding_backspace (screen);
   else if (strcmp ("binding-delete", name) == 0)
     terminal_screen_update_binding_delete (screen);
+  else if (strcmp ("binding-ambiguous-width", name) == 0)
+    terminal_screen_update_binding_ambiguous_width (screen);
   else if (strncmp ("color-", name, strlen ("color-")) == 0)
     terminal_screen_update_colors (screen);
   else if (strncmp ("font-", name, strlen ("font-")) == 0)
@@ -889,6 +893,18 @@ terminal_screen_update_binding_delete (TerminalScreen *screen)
 
 
 static void
+terminal_screen_update_binding_ambiguous_width (TerminalScreen *screen)
+{
+  TerminalAmbiguousWidthBinding binding;
+
+  g_object_get (G_OBJECT (screen->preferences), "binding-ambiguous-width", &binding, NULL);
+  vte_terminal_set_cjk_ambiguous_width (VTE_TERMINAL (screen->terminal),
+      binding == TERMINAL_AMBIGUOUS_WIDTH_BINDING_NARROW ? 1 : 2);
+}
+
+
+
+static void
 terminal_screen_update_encoding (TerminalScreen *screen)
 {
   gchar *encoding;

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list