Call gtk_widget_modify_* less often
This commit is contained in:
parent
fecf057047
commit
29f36c1fe4
@ -113,3 +113,6 @@ gtksourceview/%-mangled.c: gtksourceview/upstream/%.c gtksourceview/upstream/man
|
|||||||
gtksourceview/%-mangled.h: gtksourceview/upstream/%.h gtksourceview/upstream/mangle.sh
|
gtksourceview/%-mangled.h: gtksourceview/upstream/%.h gtksourceview/upstream/mangle.sh
|
||||||
@mkdir -p gtksourceview
|
@mkdir -p gtksourceview
|
||||||
$(SHELL) $(srcdir)/gtksourceview/upstream/mangle.sh $(srcdir)/gtksourceview/upstream/$*.h > $@.tmp && mv $@.tmp $@
|
$(SHELL) $(srcdir)/gtksourceview/upstream/mangle.sh $(srcdir)/gtksourceview/upstream/$*.h > $@.tmp && mv $@.tmp $@
|
||||||
|
|
||||||
|
UGLY_SUBDIRS += gtksourceview gtksourceview/upstream
|
||||||
|
%.lo: %-mangled.lo ; @true
|
||||||
|
@ -574,7 +574,41 @@ _gtk_source_style_scheme_get_current_line_color (GtkSourceStyleScheme *scheme,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_text_style (GtkWidget *widget,
|
set_rc_style_color (GtkRcStyle *rc_style,
|
||||||
|
GtkRcFlags component,
|
||||||
|
GtkStateType state,
|
||||||
|
const GdkColor *color)
|
||||||
|
{
|
||||||
|
if (color)
|
||||||
|
{
|
||||||
|
switch (component)
|
||||||
|
{
|
||||||
|
case GTK_RC_FG:
|
||||||
|
rc_style->fg[state] = *color;
|
||||||
|
break;
|
||||||
|
case GTK_RC_BG:
|
||||||
|
rc_style->bg[state] = *color;
|
||||||
|
break;
|
||||||
|
case GTK_RC_TEXT:
|
||||||
|
rc_style->text[state] = *color;
|
||||||
|
break;
|
||||||
|
case GTK_RC_BASE:
|
||||||
|
rc_style->base[state] = *color;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
g_assert_not_reached();
|
||||||
|
}
|
||||||
|
|
||||||
|
rc_style->color_flags[state] |= component;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rc_style->color_flags[state] &= ~component;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_text_style (GtkRcStyle *rc_style,
|
||||||
GtkSourceStyle *style,
|
GtkSourceStyle *style,
|
||||||
GtkStateType state)
|
GtkStateType state)
|
||||||
{
|
{
|
||||||
@ -586,18 +620,18 @@ set_text_style (GtkWidget *widget,
|
|||||||
else
|
else
|
||||||
color_ptr = NULL;
|
color_ptr = NULL;
|
||||||
|
|
||||||
gtk_widget_modify_base (widget, state, color_ptr);
|
set_rc_style_color (rc_style, GTK_RC_BASE, state, color_ptr);
|
||||||
|
|
||||||
if (get_color (style, TRUE, &color))
|
if (get_color (style, TRUE, &color))
|
||||||
color_ptr = &color;
|
color_ptr = &color;
|
||||||
else
|
else
|
||||||
color_ptr = NULL;
|
color_ptr = NULL;
|
||||||
|
|
||||||
gtk_widget_modify_text (widget, state, color_ptr);
|
set_rc_style_color (rc_style, GTK_RC_TEXT, state, color_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_line_numbers_style (GtkWidget *widget,
|
set_line_numbers_style (GtkRcStyle *rc_style,
|
||||||
GtkSourceStyle *style)
|
GtkSourceStyle *style)
|
||||||
{
|
{
|
||||||
gint i;
|
gint i;
|
||||||
@ -613,8 +647,8 @@ set_line_numbers_style (GtkWidget *widget,
|
|||||||
|
|
||||||
for (i = 0; i < 5; ++i)
|
for (i = 0; i < 5; ++i)
|
||||||
{
|
{
|
||||||
gtk_widget_modify_fg (widget, i, fg_ptr);
|
set_rc_style_color (rc_style, GTK_RC_FG, i, fg_ptr);
|
||||||
gtk_widget_modify_bg (widget, i, bg_ptr);
|
set_rc_style_color (rc_style, GTK_RC_BG, i, bg_ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -648,28 +682,30 @@ set_cursor_colors (GtkWidget *widget,
|
|||||||
if (strcmp (widget_name, gtk_widget_get_name (widget)) != 0)
|
if (strcmp (widget_name, gtk_widget_get_name (widget)) != 0)
|
||||||
gtk_widget_set_name (widget, widget_name);
|
gtk_widget_set_name (widget, widget_name);
|
||||||
|
|
||||||
g_object_set_data (G_OBJECT (widget),
|
|
||||||
"gtk-source-view-cursor-color-set",
|
|
||||||
GINT_TO_POINTER (TRUE));
|
|
||||||
|
|
||||||
g_free (rc_string);
|
g_free (rc_string);
|
||||||
g_free (widget_name);
|
g_free (widget_name);
|
||||||
#else
|
#else
|
||||||
gtk_widget_modify_cursor (widget, primary, secondary);
|
gtk_widget_modify_cursor (widget, primary, secondary);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
g_object_set_data (G_OBJECT (widget),
|
||||||
|
"gtk-source-view-cursor-color-set",
|
||||||
|
GINT_TO_POINTER (TRUE));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
unset_cursor_colors (GtkWidget *widget)
|
unset_cursor_colors (GtkWidget *widget)
|
||||||
{
|
{
|
||||||
#if !GTK_CHECK_VERSION(2,11,3)
|
|
||||||
if (g_object_get_data (G_OBJECT (widget), "gtk-source-view-cursor-color-set") != NULL)
|
if (g_object_get_data (G_OBJECT (widget), "gtk-source-view-cursor-color-set") != NULL)
|
||||||
|
{
|
||||||
|
#if !GTK_CHECK_VERSION(2,11,3)
|
||||||
set_cursor_colors (widget,
|
set_cursor_colors (widget,
|
||||||
&widget->style->text[GTK_STATE_NORMAL],
|
&widget->style->text[GTK_STATE_NORMAL],
|
||||||
&widget->style->text_aa[GTK_STATE_NORMAL]);
|
&widget->style->text_aa[GTK_STATE_NORMAL]);
|
||||||
#else
|
#else
|
||||||
gtk_widget_modify_cursor (widget, NULL, NULL);
|
gtk_widget_modify_cursor (widget, NULL, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -714,9 +750,13 @@ void
|
|||||||
_gtk_source_style_scheme_apply (GtkSourceStyleScheme *scheme,
|
_gtk_source_style_scheme_apply (GtkSourceStyleScheme *scheme,
|
||||||
GtkWidget *widget)
|
GtkWidget *widget)
|
||||||
{
|
{
|
||||||
|
GtkRcStyle *rc_style;
|
||||||
|
|
||||||
g_return_if_fail (!scheme || GTK_IS_SOURCE_STYLE_SCHEME (scheme));
|
g_return_if_fail (!scheme || GTK_IS_SOURCE_STYLE_SCHEME (scheme));
|
||||||
g_return_if_fail (GTK_IS_WIDGET (widget));
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
||||||
|
|
||||||
|
rc_style = gtk_widget_get_modifier_style (widget);
|
||||||
|
|
||||||
if (scheme != NULL)
|
if (scheme != NULL)
|
||||||
{
|
{
|
||||||
GtkSourceStyle *style, *style2;
|
GtkSourceStyle *style, *style2;
|
||||||
@ -724,20 +764,20 @@ _gtk_source_style_scheme_apply (GtkSourceStyleScheme *scheme,
|
|||||||
gtk_widget_ensure_style (widget);
|
gtk_widget_ensure_style (widget);
|
||||||
|
|
||||||
style = gtk_source_style_scheme_get_style (scheme, STYLE_TEXT);
|
style = gtk_source_style_scheme_get_style (scheme, STYLE_TEXT);
|
||||||
set_text_style (widget, style, GTK_STATE_NORMAL);
|
set_text_style (rc_style, style, GTK_STATE_NORMAL);
|
||||||
set_text_style (widget, style, GTK_STATE_PRELIGHT);
|
set_text_style (rc_style, style, GTK_STATE_PRELIGHT);
|
||||||
set_text_style (widget, style, GTK_STATE_INSENSITIVE);
|
set_text_style (rc_style, style, GTK_STATE_INSENSITIVE);
|
||||||
|
|
||||||
style = gtk_source_style_scheme_get_style (scheme, STYLE_SELECTED);
|
style = gtk_source_style_scheme_get_style (scheme, STYLE_SELECTED);
|
||||||
set_text_style (widget, style, GTK_STATE_SELECTED);
|
set_text_style (rc_style, style, GTK_STATE_SELECTED);
|
||||||
|
|
||||||
style2 = gtk_source_style_scheme_get_style (scheme, STYLE_SELECTED_UNFOCUSED);
|
style2 = gtk_source_style_scheme_get_style (scheme, STYLE_SELECTED_UNFOCUSED);
|
||||||
if (style2 == NULL)
|
if (style2 == NULL)
|
||||||
style2 = style;
|
style2 = style;
|
||||||
set_text_style (widget, style2, GTK_STATE_ACTIVE);
|
set_text_style (rc_style, style2, GTK_STATE_ACTIVE);
|
||||||
|
|
||||||
style = gtk_source_style_scheme_get_style (scheme, STYLE_LINE_NUMBERS);
|
style = gtk_source_style_scheme_get_style (scheme, STYLE_LINE_NUMBERS);
|
||||||
set_line_numbers_style (widget, style);
|
set_line_numbers_style (rc_style, style);
|
||||||
|
|
||||||
style = gtk_source_style_scheme_get_style (scheme, STYLE_CURSOR);
|
style = gtk_source_style_scheme_get_style (scheme, STYLE_CURSOR);
|
||||||
style2 = gtk_source_style_scheme_get_style (scheme, STYLE_SECONDARY_CURSOR);
|
style2 = gtk_source_style_scheme_get_style (scheme, STYLE_SECONDARY_CURSOR);
|
||||||
@ -745,14 +785,16 @@ _gtk_source_style_scheme_apply (GtkSourceStyleScheme *scheme,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
set_text_style (widget, NULL, GTK_STATE_NORMAL);
|
set_text_style (rc_style, NULL, GTK_STATE_NORMAL);
|
||||||
set_text_style (widget, NULL, GTK_STATE_ACTIVE);
|
set_text_style (rc_style, NULL, GTK_STATE_ACTIVE);
|
||||||
set_text_style (widget, NULL, GTK_STATE_PRELIGHT);
|
set_text_style (rc_style, NULL, GTK_STATE_PRELIGHT);
|
||||||
set_text_style (widget, NULL, GTK_STATE_INSENSITIVE);
|
set_text_style (rc_style, NULL, GTK_STATE_INSENSITIVE);
|
||||||
set_text_style (widget, NULL, GTK_STATE_SELECTED);
|
set_text_style (rc_style, NULL, GTK_STATE_SELECTED);
|
||||||
set_line_numbers_style (widget, NULL);
|
set_line_numbers_style (rc_style, NULL);
|
||||||
unset_cursor_colors (widget);
|
unset_cursor_colors (widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gtk_widget_modify_style (widget, rc_style);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- PARSER ---------------------------------------------------------------- */
|
/* --- PARSER ---------------------------------------------------------------- */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user