[gnome-terminal/scrollbar-bg-fix: 1/3] TerminalScreen: add bg-color and fg-color properties
- From: Marco Trevisan <marcotrevi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-terminal/scrollbar-bg-fix: 1/3] TerminalScreen: add bg-color and fg-color properties
- Date: Wed, 9 Sep 2015 17:49:36 +0000 (UTC)
commit a6920baa5ccd112be95c8aff62b064621b16d518
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Wed Sep 9 19:09:58 2015 +0200
TerminalScreen: add bg-color and fg-color properties
And relative getters.
src/terminal-screen.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++-
src/terminal-screen.h | 2 +
2 files changed, 57 insertions(+), 1 deletions(-)
---
diff --git a/src/terminal-screen.c b/src/terminal-screen.c
index a48de10..f7ec7d8 100644
--- a/src/terminal-screen.c
+++ b/src/terminal-screen.c
@@ -88,6 +88,8 @@ struct _TerminalScreenPrivate
int child_pid;
GSList *match_tags;
guint launch_child_source_id;
+ GdkRGBA bg_color;
+ GdkRGBA fg_color;
};
enum
@@ -105,7 +107,9 @@ enum {
PROP_ICON_TITLE,
PROP_ICON_TITLE_SET,
PROP_TITLE,
- PROP_INITIAL_ENVIRONMENT
+ PROP_INITIAL_ENVIRONMENT,
+ PROP_BG_COLOR,
+ PROP_FG_COLOR
};
enum
@@ -401,6 +405,12 @@ terminal_screen_get_property (GObject *object,
case PROP_TITLE:
g_value_set_string (value, terminal_screen_get_title (screen));
break;
+ case PROP_BG_COLOR:
+ g_value_set_boxed (value, terminal_screen_get_bg_color (screen));
+ break;
+ case PROP_FG_COLOR:
+ g_value_set_boxed (value, terminal_screen_get_bg_color (screen));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -426,6 +436,8 @@ terminal_screen_set_property (GObject *object,
case PROP_ICON_TITLE:
case PROP_ICON_TITLE_SET:
case PROP_TITLE:
+ case PROP_FG_COLOR:
+ case PROP_BG_COLOR:
/* not writable */
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -532,6 +544,20 @@ terminal_screen_class_init (TerminalScreenClass *klass)
G_TYPE_STRV,
G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK |
G_PARAM_STATIC_BLURB));
+ g_object_class_install_property
+ (object_class,
+ PROP_BG_COLOR,
+ g_param_spec_boxed ("bg-color", NULL, NULL,
+ GDK_TYPE_RGBA,
+ G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK |
G_PARAM_STATIC_BLURB));
+
+ g_object_class_install_property
+ (object_class,
+ PROP_FG_COLOR,
+ g_param_spec_boxed ("fg-color", NULL, NULL,
+ GDK_TYPE_RGBA,
+ G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK |
G_PARAM_STATIC_BLURB));
+
g_type_class_add_private (object_class, sizeof (TerminalScreenPrivate));
/* Precompile the regexes */
@@ -710,6 +736,22 @@ terminal_screen_get_icon_title_set (TerminalScreen *screen)
return vte_terminal_get_icon_title (VTE_TERMINAL (screen)) != NULL;
}
+GdkRGBA*
+terminal_screen_get_bg_color (TerminalScreen *screen)
+{
+ g_return_val_if_fail (TERMINAL_IS_SCREEN (screen), NULL);
+
+ return &screen->priv->bg_color;
+}
+
+GdkRGBA*
+terminal_screen_get_fg_color (TerminalScreen *screen)
+{
+ g_return_val_if_fail (TERMINAL_IS_SCREEN (screen), NULL);
+
+ return &screen->priv->fg_color;
+}
+
static void
terminal_screen_profile_changed_cb (GSettings *profile,
const char *prop_name,
@@ -854,6 +896,18 @@ update_color_scheme (TerminalScreen *screen)
vte_terminal_set_colors (VTE_TERMINAL (screen), &fg, &bg,
colors, n_colors);
vte_terminal_set_color_bold (VTE_TERMINAL (screen), boldp);
+
+ if (gdk_rgba_hash (&priv->bg_color) != gdk_rgba_hash (&bg))
+ {
+ priv->bg_color = bg;
+ g_object_notify (G_OBJECT (screen), "bg-color");
+ }
+
+ if (gdk_rgba_hash (&priv->fg_color) != gdk_rgba_hash (&fg))
+ {
+ priv->fg_color = fg;
+ g_object_notify (G_OBJECT (screen), "fg-color");
+ }
}
static void
diff --git a/src/terminal-screen.h b/src/terminal-screen.h
index a168e57..9148af7 100644
--- a/src/terminal-screen.h
+++ b/src/terminal-screen.h
@@ -103,6 +103,8 @@ char ** terminal_screen_get_initial_environment (TerminalScreen *screen);
const char* terminal_screen_get_title (TerminalScreen *screen);
const char* terminal_screen_get_icon_title (TerminalScreen *screen);
gboolean terminal_screen_get_icon_title_set (TerminalScreen *screen);
+GdkRGBA* terminal_screen_get_bg_color (TerminalScreen *screen);
+GdkRGBA* terminal_screen_get_fg_color (TerminalScreen *screen);
char *terminal_screen_get_current_dir (TerminalScreen *screen);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]