[gtksourceview] Completion: avoid two fields in the private struct
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview] Completion: avoid two fields in the private struct
- Date: Wed, 21 Aug 2013 20:46:56 +0000 (UTC)
commit 91ce8f23016b2ab195c9d46a598f41d197cc5d8d
Author: Sébastien Wilmet <swilmet gnome org>
Date: Wed Aug 21 22:07:27 2013 +0200
Completion: avoid two fields in the private struct
Instead of keeping these fields in the private struct, it's simpler to
bind properties or connect to a signal.
gtksourceview/gtksourcecompletion.c | 65 ++++++++++++++++------------------
1 files changed, 31 insertions(+), 34 deletions(-)
---
diff --git a/gtksourceview/gtksourcecompletion.c b/gtksourceview/gtksourcecompletion.c
index 27ee997..3c47c6e 100644
--- a/gtksourceview/gtksourcecompletion.c
+++ b/gtksourceview/gtksourcecompletion.c
@@ -150,8 +150,6 @@ struct _GtkSourceCompletionPrivate
/* List of proposals */
GtkTreeView *tree_view_proposals;
- GtkTreeViewColumn *tree_view_column_accelerator;
- GtkCellRenderer *cell_renderer_icon;
/* Completion management */
@@ -464,17 +462,6 @@ update_window_position (GtkSourceCompletion *completion)
}
static void
-update_tree_view_visibility (GtkSourceCompletion *completion)
-{
- gtk_tree_view_column_set_visible (completion->priv->tree_view_column_accelerator,
- completion->priv->num_accelerators > 0);
-
- g_object_set (completion->priv->cell_renderer_icon,
- "visible", completion->priv->show_icons,
- NULL);
-}
-
-static void
set_info_widget (GtkSourceCompletion *completion,
GtkWidget *new_widget)
{
@@ -1680,13 +1667,9 @@ gtk_source_completion_set_property (GObject *object,
break;
case PROP_SHOW_ICONS:
completion->priv->show_icons = g_value_get_boolean (value);
-
- update_tree_view_visibility (completion);
break;
case PROP_ACCELERATORS:
completion->priv->num_accelerators = g_value_get_uint (value);
-
- update_tree_view_visibility (completion);
break;
case PROP_AUTO_COMPLETE_DELAY:
completion->priv->auto_complete_delay = g_value_get_uint (value);
@@ -2144,13 +2127,20 @@ selection_func (GtkTreeSelection *selection,
}
static void
+accelerators_notify_cb (GtkSourceCompletion *completion,
+ GParamSpec *pspec,
+ GtkTreeViewColumn *column)
+{
+ gtk_tree_view_column_set_visible (column, completion->priv->num_accelerators > 0);
+}
+
+static void
init_tree_view (GtkSourceCompletion *completion,
GtkBuilder *builder)
{
GtkTreeSelection *selection;
GtkTreeViewColumn *column;
- GtkCellRenderer *cell_renderer_proposal;
- GtkCellRenderer *cell_renderer_accelerator;
+ GtkCellRenderer *cell_renderer;
GtkStyleContext *style_context;
GdkRGBA background_color;
GdkRGBA foreground_color;
@@ -2178,11 +2168,11 @@ init_tree_view (GtkSourceCompletion *completion,
/* Icon cell renderer */
- completion->priv->cell_renderer_icon = GTK_CELL_RENDERER (gtk_builder_get_object (builder,
"cell_renderer_icon"));
+ cell_renderer = GTK_CELL_RENDERER (gtk_builder_get_object (builder, "cell_renderer_icon"));
column = GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (builder, "tree_view_column_proposal"));
- gtk_tree_view_column_set_attributes (column, completion->priv->cell_renderer_icon,
+ gtk_tree_view_column_set_attributes (column, cell_renderer,
"pixbuf", GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON,
"cell-background-set",
GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER,
NULL);
@@ -2192,15 +2182,19 @@ init_tree_view (GtkSourceCompletion *completion,
GTK_STATE_FLAG_INSENSITIVE,
&background_color);
- g_object_set (completion->priv->cell_renderer_icon,
+ g_object_set (cell_renderer,
"cell-background-rgba", &background_color,
NULL);
+ g_object_bind_property (completion, "show-icons",
+ cell_renderer, "visible",
+ G_BINDING_SYNC_CREATE);
+
/* Proposal text cell renderer */
- cell_renderer_proposal = GTK_CELL_RENDERER (gtk_builder_get_object (builder,
"cell_renderer_proposal"));
+ cell_renderer = GTK_CELL_RENDERER (gtk_builder_get_object (builder, "cell_renderer_proposal"));
- gtk_tree_view_column_set_attributes (column, cell_renderer_proposal,
+ gtk_tree_view_column_set_attributes (column, cell_renderer,
"markup", GTK_SOURCE_COMPLETION_MODEL_COLUMN_MARKUP,
"cell-background-set",
GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER,
"foreground-set", GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER,
@@ -2210,35 +2204,38 @@ init_tree_view (GtkSourceCompletion *completion,
GTK_STATE_FLAG_INSENSITIVE,
&foreground_color);
- g_object_set (cell_renderer_proposal,
+ g_object_set (cell_renderer,
"foreground-rgba", &foreground_color,
"cell-background-rgba", &background_color,
NULL);
/* Accelerators cell renderer */
- completion->priv->tree_view_column_accelerator =
- GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (builder, "tree_view_column_accelerator"));
+ column = GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (builder, "tree_view_column_accelerator"));
- cell_renderer_accelerator = GTK_CELL_RENDERER (gtk_builder_get_object (builder,
"cell_renderer_accelerator"));
+ cell_renderer = GTK_CELL_RENDERER (gtk_builder_get_object (builder, "cell_renderer_accelerator"));
- gtk_tree_view_column_set_attributes (completion->priv->tree_view_column_accelerator,
- cell_renderer_accelerator,
+ gtk_tree_view_column_set_attributes (column,
+ cell_renderer,
"cell-background-set",
GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER,
NULL);
- g_object_set (cell_renderer_accelerator,
+ g_object_set (cell_renderer,
"foreground-rgba", &foreground_color,
"cell-background-rgba", &background_color,
NULL);
- gtk_tree_view_column_set_cell_data_func (completion->priv->tree_view_column_accelerator,
- cell_renderer_accelerator,
+ gtk_tree_view_column_set_cell_data_func (column,
+ cell_renderer,
(GtkTreeCellDataFunc)render_proposal_accelerator_func,
completion,
NULL);
- update_tree_view_visibility (completion);
+ g_signal_connect_object (completion,
+ "notify::accelerators",
+ G_CALLBACK (accelerators_notify_cb),
+ column,
+ 0);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]