[gtksourceview] Completion: simplify accelerator cell renderer
- From: SÃbastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview] Completion: simplify accelerator cell renderer
- Date: Sat, 16 Feb 2013 22:48:00 +0000 (UTC)
commit f7ef5b47c953b37f9e81f9ad472383a42fe60127
Author: SÃbastien Wilmet <swilmet gnome org>
Date: Sat Feb 16 22:51:16 2013 +0100
Completion: simplify accelerator cell renderer
gtksourceview/gtksourcecompletion.c | 87 ++++++++++++++--------------------
1 files changed, 36 insertions(+), 51 deletions(-)
---
diff --git a/gtksourceview/gtksourcecompletion.c b/gtksourceview/gtksourcecompletion.c
index 9126bf3..c884d8e 100644
--- a/gtksourceview/gtksourcecompletion.c
+++ b/gtksourceview/gtksourcecompletion.c
@@ -2509,34 +2509,44 @@ update_transient_for_info (GObject *window,
gtk_window_get_transient_for (GTK_WINDOW
(completion->priv->main_window)));
}
+/* Begins at 0. Returns -1 if no accelerators available for @iter. */
static gint
-iter_accelerator (GtkSourceCompletion *completion,
- GtkTreeIter *iter)
+get_accel_at_iter (GtkSourceCompletion *completion,
+ GtkTreeIter *iter)
{
- GtkTreeIter it;
+ GtkTreeIter cur_iter;
GtkTreeModel *model = GTK_TREE_MODEL (completion->priv->model_proposals);
gint ret = 0;
- if (!gtk_tree_model_get_iter_first (model, &it))
+ if (gtk_source_completion_model_iter_is_header (completion->priv->model_proposals, iter))
{
return -1;
}
- do
+ if (!gtk_tree_model_get_iter_first (model, &cur_iter))
{
- if (!gtk_source_completion_model_iter_is_header (completion->priv->model_proposals,
- &it))
+ g_return_val_if_reached (-1);
+ }
+
+ while (ret < completion->priv->num_accelerators)
+ {
+ if (!gtk_source_completion_model_iter_is_header (completion->priv->model_proposals,
&cur_iter))
{
if (gtk_source_completion_model_iter_equal (completion->priv->model_proposals,
- iter,
- &it))
+ iter,
+ &cur_iter))
{
return ret;
}
- ++ret;
+ ret++;
+ }
+
+ if (!gtk_tree_model_iter_next (model, &cur_iter))
+ {
+ break;
}
- } while (ret < completion->priv->num_accelerators && gtk_tree_model_iter_next (model, &it));
+ }
return -1;
}
@@ -2548,48 +2558,16 @@ render_proposal_accelerator_func (GtkTreeViewColumn *column,
GtkTreeIter *iter,
GtkSourceCompletion *completion)
{
- gboolean isheader;
- GtkStyleContext *context;
- GdkRGBA color;
-
- isheader = gtk_source_completion_model_iter_is_header (completion->priv->model_proposals,
- iter);
+ gint accel = get_accel_at_iter (completion, iter);
+ gchar *text = NULL;
- context = gtk_widget_get_style_context (completion->priv->tree_view_proposals);
-
- if (isheader)
+ if (accel != -1)
{
- gtk_style_context_get_background_color (context,
- GTK_STATE_FLAG_INSENSITIVE,
- &color);
-
- g_object_set (cell,
- "cell-background-rgba", &color,
- "text", NULL,
- NULL);
+ text = g_strdup_printf ("<small><b>%d</b></small>", (accel + 1) % 10);
}
- else
- {
- gtk_style_context_get_color (context,
- GTK_STATE_FLAG_INSENSITIVE,
- &color);
-
- gint accel = iter_accelerator (completion, iter);
- gchar *text = NULL;
- if (accel != -1)
- {
- text = g_strdup_printf ("<small><b>%d</b></small>",
- accel == 9 ? 0 : accel + 1);
- }
-
- g_object_set (cell,
- "foreground-rgba", &color,
- "cell-background-set", FALSE,
- "markup", text,
- NULL);
- g_free (text);
- }
+ g_object_set (cell, "markup", text, NULL);
+ g_free (text);
}
static gboolean
@@ -2723,8 +2701,15 @@ initialize_tree_view (GtkSourceCompletion *completion,
completion->priv->cell_renderer_accelerator =
GTK_CELL_RENDERER (gtk_builder_get_object (builder, "cell_renderer_accelerator"));
- gtk_tree_view_column_set_visible (completion->priv->tree_view_column_accelerator,
- completion->priv->num_accelerators > 0);
+ gtk_tree_view_column_set_attributes (completion->priv->tree_view_column_accelerator,
+ completion->priv->cell_renderer_accelerator,
+ "cell-background-set",
GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER,
+ NULL);
+
+ g_object_set (completion->priv->cell_renderer_accelerator,
+ "foreground-rgba", &foreground_color,
+ "cell-background-rgba", &background_color,
+ NULL);
gtk_tree_view_column_set_cell_data_func (completion->priv->tree_view_column_accelerator,
completion->priv->cell_renderer_accelerator,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]