[gitg] Color working ref orange
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gitg] Color working ref orange
- Date: Sat, 9 Jan 2010 23:58:33 +0000 (UTC)
commit 31a578bbc43f425586012959ef73923a7768eaa8
Author: Jesse van den Kieboom <jessevdk gnome org>
Date: Sun Jan 10 00:58:21 2010 +0100
Color working ref orange
gitg/gitg-label-renderer.c | 20 ++++++++++++++++++--
gitg/gitg-ref.c | 16 ++++++++++++++++
gitg/gitg-ref.h | 4 ++++
gitg/gitg-repository.c | 8 ++++++++
4 files changed, 46 insertions(+), 2 deletions(-)
---
diff --git a/gitg/gitg-label-renderer.c b/gitg/gitg-label-renderer.c
index 1b20495..2cb8a84 100644
--- a/gitg/gitg-label-renderer.c
+++ b/gitg/gitg-label-renderer.c
@@ -122,6 +122,22 @@ get_type_color (GitgRefType type, gdouble *r, gdouble *g, gdouble *b)
}
static void
+get_ref_color (GitgRef *ref, gdouble *r, gdouble *g, gdouble *b)
+{
+ if (gitg_ref_get_working (ref))
+ {
+ /* Orange */
+ *r = 1;
+ *g = 0.7;
+ *b = 0;
+ }
+ else
+ {
+ get_type_color (gitg_ref_get_ref_type (ref), r, g, b);
+ }
+}
+
+static void
set_source_for_ref_type(cairo_t *context, GitgRef *ref, gboolean use_state)
{
if (use_state)
@@ -136,7 +152,7 @@ set_source_for_ref_type(cairo_t *context, GitgRef *ref, gboolean use_state)
else if (state == GITG_REF_STATE_PRELIGHT)
{
gdouble r, g, b;
- get_type_color (gitg_ref_get_ref_type (ref), &r, &g, &b);
+ get_ref_color (ref, &r, &g, &b);
cairo_set_source_rgba(context, r, g, b, 0.3);
return;
@@ -144,7 +160,7 @@ set_source_for_ref_type(cairo_t *context, GitgRef *ref, gboolean use_state)
}
gdouble r, g, b;
- get_type_color (gitg_ref_get_ref_type (ref), &r, &g, &b);
+ get_ref_color (ref, &r, &g, &b);
cairo_set_source_rgb (context, r, g, b);
}
diff --git a/gitg/gitg-ref.c b/gitg/gitg-ref.c
index 169183c..22ed171 100644
--- a/gitg/gitg-ref.c
+++ b/gitg/gitg-ref.c
@@ -40,6 +40,8 @@ struct _GitgRef
gchar *prefix;
GitgRefState state;
+
+ gboolean working;
};
GType
@@ -125,6 +127,7 @@ gitg_ref_copy(GitgRef *ref)
ret->name = g_strdup(ref->name);
ret->shortname = g_strdup(ref->shortname);
ret->prefix = g_strdup(ref->prefix);
+ ret->working = ref->working;
int i;
for (i = 0; i < HASH_BINARY_SIZE; ++i)
@@ -228,3 +231,16 @@ gitg_ref_get_local_name (GitgRef *ref)
return g_strdup (shortname);
}
}
+
+void
+gitg_ref_set_working (GitgRef *ref,
+ gboolean working)
+{
+ ref->working = working;
+}
+
+gboolean
+gitg_ref_get_working (GitgRef *ref)
+{
+ return ref->working;
+}
diff --git a/gitg/gitg-ref.h b/gitg/gitg-ref.h
index a9f19be..3744d5d 100644
--- a/gitg/gitg-ref.h
+++ b/gitg/gitg-ref.h
@@ -68,6 +68,10 @@ GitgRefState gitg_ref_get_state (GitgRef *ref);
void gitg_ref_set_state (GitgRef *ref,
GitgRefState state);
+void gitg_ref_set_working (GitgRef *ref,
+ gboolean working);
+gboolean gitg_ref_get_working (GitgRef *ref);
+
GitgRef *gitg_ref_copy (GitgRef *ref);
void gitg_ref_free (GitgRef *ref);
diff --git a/gitg/gitg-repository.c b/gitg/gitg-repository.c
index 67213c8..068ea10 100644
--- a/gitg/gitg-repository.c
+++ b/gitg/gitg-repository.c
@@ -459,6 +459,7 @@ get_current_working_ref(GitgRepository *repository)
if (hash && name)
{
ret = gitg_ref_new (hash, name);
+ gitg_ref_set_working (ret, TRUE);
}
g_free (hash);
@@ -1141,6 +1142,8 @@ load_refs(GitgRepository *self)
gchar *buf;
gchar *current = load_current_ref(self);
+ GitgRef *working = gitg_repository_get_current_working_ref (self);
+
while ((buf = *buffer++) != NULL)
{
// each line will look like <name> <hash>
@@ -1156,6 +1159,11 @@ load_refs(GitgRepository *self)
{
self->priv->current_ref = gitg_ref_copy(ref);
}
+
+ if (working != NULL && gitg_ref_equal (working, ref))
+ {
+ gitg_ref_set_working (ref, TRUE);
+ }
}
g_strfreev(components);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]