[gnome-terminal] Finish Bug 595841 - Allow setting color for bold text



commit b2bf7008dc2edeaf09020a248853587c86626ad8
Author: Behdad Esfahbod <behdad behdad org>
Date:   Mon Dec 14 02:57:27 2009 -0500

    Finish Bug 595841 - Allow setting color for bold text
    
    Add a "Bold color same as text color" checkbox.

 src/profile-editor.c          |   33 ++++++++++++++++++++++-----------
 src/profile-preferences.glade |   17 ++++++++++++++++-
 src/terminal-profile.c        |    4 ++++
 src/terminal-profile.h        |    1 +
 src/terminal-screen.c         |    5 ++++-
 5 files changed, 47 insertions(+), 13 deletions(-)
---
diff --git a/src/profile-editor.c b/src/profile-editor.c
index a5b5755..2e7541b 100644
--- a/src/profile-editor.c
+++ b/src/profile-editor.c
@@ -175,19 +175,22 @@ profile_notify_sensitivity_cb (TerminalProfile *profile,
       prop_name == I_(TERMINAL_PROFILE_FOREGROUND_COLOR) ||
       prop_name == I_(TERMINAL_PROFILE_BACKGROUND_COLOR) ||
       prop_name == I_(TERMINAL_PROFILE_BOLD_COLOR) ||
+      prop_name == I_(TERMINAL_PROFILE_BOLD_COLOR_SAME_AS_FG) ||
       prop_name == I_(TERMINAL_PROFILE_USE_THEME_COLORS))
     {
-      gboolean fg_locked, bg_locked, use_theme_colors;
+      gboolean fg_locked, bg_locked, use_theme_colors, bold_same_as_fg;
 
       fg_locked = terminal_profile_property_locked (profile, TERMINAL_PROFILE_FOREGROUND_COLOR);
       bg_locked = terminal_profile_property_locked (profile, TERMINAL_PROFILE_BACKGROUND_COLOR);
       use_theme_colors = terminal_profile_get_property_boolean (profile, TERMINAL_PROFILE_USE_THEME_COLORS);
+      bold_same_as_fg = terminal_profile_get_property_boolean (profile, TERMINAL_PROFILE_BOLD_COLOR_SAME_AS_FG);
 
       SET_SENSITIVE ("foreground-colorpicker", !use_theme_colors && !fg_locked);
       SET_SENSITIVE ("foreground-colorpicker-label", !use_theme_colors && !fg_locked);
       SET_SENSITIVE ("background-colorpicker", !use_theme_colors && !bg_locked);
       SET_SENSITIVE ("background-colorpicker-label", !use_theme_colors && !bg_locked);
-      SET_SENSITIVE ("bold-colorpicker", !use_theme_colors && !fg_locked);
+      SET_SENSITIVE ("bold-color-same-as-fg-checkbox", !use_theme_colors && !fg_locked);
+      SET_SENSITIVE ("bold-colorpicker", !use_theme_colors && !fg_locked && !bold_same_as_fg);
       SET_SENSITIVE ("bold-colorpicker-label", !use_theme_colors && !fg_locked);
       SET_SENSITIVE ("color-scheme-combobox", !use_theme_colors && !fg_locked && !bg_locked);
       SET_SENSITIVE ("color-scheme-combobox-label", !use_theme_colors && !fg_locked && !bg_locked);
@@ -290,7 +293,7 @@ color_scheme_combo_changed_cb (GtkWidget *combo,
       g_object_set (profile,
                     TERMINAL_PROFILE_FOREGROUND_COLOR, &color_schemes[i].foreground,
                     TERMINAL_PROFILE_BACKGROUND_COLOR, &color_schemes[i].background,
-                    TERMINAL_PROFILE_BOLD_COLOR, &color_schemes[i].bold,
+                    TERMINAL_PROFILE_BOLD_COLOR_SAME_AS_FG, TRUE,
                     NULL);
       g_signal_handlers_unblock_by_func (profile, G_CALLBACK (profile_colors_notify_scheme_combo_cb), combo);
     }
@@ -305,19 +308,26 @@ profile_colors_notify_scheme_combo_cb (TerminalProfile *profile,
                                        GParamSpec *pspec,
                                        GtkComboBox *combo)
 {
-  const GdkColor *fg, *bg, *bold;
+  const GdkColor *fg, *bg;
   guint i;
+  gboolean bold_same_as_fg;
 
   fg = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_FOREGROUND_COLOR);
   bg = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_BACKGROUND_COLOR);
-  bold = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_BOLD_COLOR);
+  bold_same_as_fg = terminal_profile_get_property_boolean (profile, TERMINAL_PROFILE_BOLD_COLOR_SAME_AS_FG);
 
-  for (i = 0; i < G_N_ELEMENTS (color_schemes); ++i)
+  if (fg && bg && bold_same_as_fg)
     {
-      if (fg && gdk_color_equal (fg, &color_schemes[i].foreground) &&
-          bg && gdk_color_equal (bg, &color_schemes[i].background) &&
-          bold && gdk_color_equal (bold, &color_schemes[i].bold))
-        break;
+      for (i = 0; i < G_N_ELEMENTS (color_schemes); ++i)
+	{
+	  if (gdk_color_equal (fg, &color_schemes[i].foreground) &&
+	      gdk_color_equal (bg, &color_schemes[i].background))
+	    break;
+	}
+    }
+  else
+    {
+      i = G_N_ELEMENTS (color_schemes);
     }
   /* If we didn't find a match, then we get the last combo box item which is "custom" */
 
@@ -763,7 +773,7 @@ terminal_profile_edit (TerminalProfile *profile,
   g_signal_connect (profile, "notify::" TERMINAL_PROFILE_BACKGROUND_COLOR,
                     G_CALLBACK (profile_colors_notify_scheme_combo_cb),
                     w);
-  g_signal_connect (profile, "notify::" TERMINAL_PROFILE_BOLD_COLOR,
+  g_signal_connect (profile, "notify::" TERMINAL_PROFILE_BOLD_COLOR_SAME_AS_FG,
                     G_CALLBACK (profile_colors_notify_scheme_combo_cb),
                     w);
 
@@ -790,6 +800,7 @@ terminal_profile_edit (TerminalProfile *profile,
   CONNECT ("background-colorpicker", TERMINAL_PROFILE_BACKGROUND_COLOR);
   CONNECT ("background-image-filechooser", TERMINAL_PROFILE_BACKGROUND_IMAGE_FILE);
   CONNECT ("backspace-binding-combobox", TERMINAL_PROFILE_BACKSPACE_BINDING);
+  CONNECT ("bold-color-same-as-fg-checkbox", TERMINAL_PROFILE_BOLD_COLOR_SAME_AS_FG);
   CONNECT ("bold-colorpicker", TERMINAL_PROFILE_BOLD_COLOR);
   CONNECT ("cursor-shape-combobox", TERMINAL_PROFILE_CURSOR_SHAPE);
   CONNECT ("custom-command-entry", TERMINAL_PROFILE_CUSTOM_COMMAND);
diff --git a/src/profile-preferences.glade b/src/profile-preferences.glade
index 73056fb..2976fc2 100644
--- a/src/profile-preferences.glade
+++ b/src/profile-preferences.glade
@@ -1210,7 +1210,22 @@ Hold the terminal open</property>
 			      </child>
 
 			      <child>
-				<placeholder/>
+				<widget class="GtkCheckButton" id="bold-color-same-as-fg-checkbox">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="label" translatable="yes">_Same as text color</property>
+				  <property name="use_underline">True</property>
+				  <property name="relief">GTK_RELIEF_NORMAL</property>
+				  <property name="focus_on_click">True</property>
+				  <property name="active">True</property>
+				  <property name="inconsistent">False</property>
+				  <property name="draw_indicator">True</property>
+				</widget>
+				<packing>
+				  <property name="padding">8</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
 			      </child>
 			    </widget>
 			    <packing>
diff --git a/src/terminal-profile.c b/src/terminal-profile.c
index 5e8b340..1b9ca35 100644
--- a/src/terminal-profile.c
+++ b/src/terminal-profile.c
@@ -55,6 +55,7 @@ enum
   PROP_BACKGROUND_TYPE,
   PROP_BACKSPACE_BINDING,
   PROP_BOLD_COLOR,
+  PROP_BOLD_COLOR_SAME_AS_FG,
   PROP_CURSOR_BLINK_MODE,
   PROP_CURSOR_SHAPE,
   PROP_CUSTOM_COMMAND,
@@ -91,6 +92,7 @@ enum
 #define KEY_BACKGROUND_TYPE "background_type"
 #define KEY_BACKSPACE_BINDING "backspace_binding"
 #define KEY_BOLD_COLOR "bold_color"
+#define KEY_BOLD_COLOR_SAME_AS_FG "bold_color_same_as_fg"
 #define KEY_CURSOR_BLINK_MODE "cursor_blink_mode"
 #define KEY_CURSOR_SHAPE "cursor_shape"
 #define KEY_CUSTOM_COMMAND "custom_command"
@@ -120,6 +122,7 @@ enum
 /* Keep these in sync with the GConf schema! */
 #define DEFAULT_ALLOW_BOLD            (TRUE)
 #define DEFAULT_BACKGROUND_COLOR      ("#FFFFDD")
+#define DEFAULT_BOLD_COLOR_SAME_AS_FG (TRUE)
 #define DEFAULT_BACKGROUND_DARKNESS   (0.5)
 #define DEFAULT_BACKGROUND_IMAGE_FILE ("")
 #define DEFAULT_BACKGROUND_IMAGE      (NULL)
@@ -1279,6 +1282,7 @@ terminal_profile_class_init (TerminalProfileClass *klass)
     propGConf)
 
   TERMINAL_PROFILE_PROPERTY_BOOLEAN (ALLOW_BOLD, DEFAULT_ALLOW_BOLD, KEY_ALLOW_BOLD);
+  TERMINAL_PROFILE_PROPERTY_BOOLEAN (BOLD_COLOR_SAME_AS_FG, DEFAULT_BOLD_COLOR_SAME_AS_FG, KEY_BOLD_COLOR_SAME_AS_FG);
   TERMINAL_PROFILE_PROPERTY_BOOLEAN (DEFAULT_SHOW_MENUBAR, DEFAULT_DEFAULT_SHOW_MENUBAR, KEY_DEFAULT_SHOW_MENUBAR);
   TERMINAL_PROFILE_PROPERTY_BOOLEAN (LOGIN_SHELL, DEFAULT_LOGIN_SHELL, KEY_LOGIN_SHELL);
   TERMINAL_PROFILE_PROPERTY_BOOLEAN (SCROLL_BACKGROUND, DEFAULT_SCROLL_BACKGROUND, KEY_SCROLL_BACKGROUND);
diff --git a/src/terminal-profile.h b/src/terminal-profile.h
index 087859b..ab72827 100644
--- a/src/terminal-profile.h
+++ b/src/terminal-profile.h
@@ -73,6 +73,7 @@ typedef enum
 #define TERMINAL_PROFILE_BACKGROUND_TYPE        "background-type"
 #define TERMINAL_PROFILE_BACKSPACE_BINDING      "backspace-binding"
 #define TERMINAL_PROFILE_BOLD_COLOR             "bold-color"
+#define TERMINAL_PROFILE_BOLD_COLOR_SAME_AS_FG  "bold-color-same-as-fg"
 #define TERMINAL_PROFILE_CURSOR_BLINK_MODE      "cursor-blink-mode"
 #define TERMINAL_PROFILE_CURSOR_SHAPE           "cursor-shape"
 #define TERMINAL_PROFILE_CUSTOM_COMMAND         "custom-command"
diff --git a/src/terminal-screen.c b/src/terminal-screen.c
index 353ecb1..66dac2b 100644
--- a/src/terminal-screen.c
+++ b/src/terminal-screen.c
@@ -966,6 +966,7 @@ terminal_screen_profile_notify_cb (TerminalProfile *profile,
       prop_name == I_(TERMINAL_PROFILE_USE_THEME_COLORS) ||
       prop_name == I_(TERMINAL_PROFILE_FOREGROUND_COLOR) ||
       prop_name == I_(TERMINAL_PROFILE_BACKGROUND_COLOR) ||
+      prop_name == I_(TERMINAL_PROFILE_BOLD_COLOR_SAME_AS_FG) ||
       prop_name == I_(TERMINAL_PROFILE_BOLD_COLOR) ||
       prop_name == I_(TERMINAL_PROFILE_PALETTE))
     update_color_scheme (screen);
@@ -1097,7 +1098,9 @@ update_color_scheme (TerminalScreen *screen)
     {
       fg_color = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_FOREGROUND_COLOR);
       bg_color = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_BACKGROUND_COLOR);
-      bold_color = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_BOLD_COLOR);
+
+      if (!terminal_profile_get_property_boolean (profile, TERMINAL_PROFILE_BOLD_COLOR_SAME_AS_FG))
+	bold_color = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_BOLD_COLOR);
 
       if (fg_color)
         fg = *fg_color;



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