[libdazzle] tree-node: add support for setting foreground color
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libdazzle] tree-node: add support for setting foreground color
- Date: Tue, 12 Dec 2017 01:36:36 +0000 (UTC)
commit 8226d617fa4fba32b1fc747015187c46ca9d41b0
Author: Christian Hergert <chergert redhat com>
Date: Sun Dec 10 23:59:04 2017 -0800
tree-node: add support for setting foreground color
This allows specifying a foreground color for a row. Currently,
that only supports the text field. We may want something in the
future that allows more control over the pango attr list, but
I'd prefer to avoid the attr lists for now.
src/tree/dzl-tree-node.c | 62 ++++++++++++++++++++++++++++++++++++++++++---
src/tree/dzl-tree-node.h | 5 +++
src/tree/dzl-tree.c | 4 ++-
3 files changed, 65 insertions(+), 6 deletions(-)
---
diff --git a/src/tree/dzl-tree-node.c b/src/tree/dzl-tree-node.c
index 7f033aa..16f4e18 100644
--- a/src/tree/dzl-tree-node.c
+++ b/src/tree/dzl-tree-node.c
@@ -19,6 +19,7 @@
#define G_LOG_DOMAIN "dzl-tree-node"
#include <glib/gi18n.h>
+#include <string.h>
#include "tree/dzl-tree.h"
#include "tree/dzl-tree-node.h"
@@ -34,18 +35,21 @@ struct _DzlTreeNode
GObject *item;
gchar *text;
DzlTree *tree;
+
GIcon *gicon;
GList *emblems;
-
GQuark icon_name;
GQuark expanded_icon_name;
- guint use_markup : 1;
- guint needs_build_children : 1;
- guint is_dummy : 1;
+ GdkRGBA foreground_rgba;
+
guint children_possible : 1;
- guint use_dim_label : 1;
+ guint is_dummy : 1;
+ guint foreground_rgba_set : 1;
+ guint needs_build_children : 1;
guint reset_on_collapse : 1;
+ guint use_dim_label : 1;
+ guint use_markup : 1;
};
typedef struct
@@ -1312,3 +1316,51 @@ dzl_tree_node_nth_child (DzlTreeNode *self,
return NULL;
}
+
+/**
+ * dzl_tree_node_get_foreground_rgba:
+ * @self: a #DzlTreeNode
+ *
+ * Gets the foreground-rgba to use for row text.
+ *
+ * If %NULL, the default foreground color should be used.
+ *
+ * Returns: (nullable) (transfer none): A #GdkRGBA or %NULL
+ *
+ * Since: 3.28
+ */
+const GdkRGBA *
+dzl_tree_node_get_foreground_rgba (DzlTreeNode *self)
+{
+ g_return_val_if_fail (DZL_IS_TREE_NODE (self), NULL);
+
+ if (self->foreground_rgba_set)
+ return &self->foreground_rgba;
+
+ return NULL;
+}
+
+/**
+ * dzl_tree_node_set_foreground_rgba:
+ * @self: a #DzlTreeNode
+ * @foreground_rgba: (nullable): A #GdkRGBA or %NULL
+ *
+ * Sets the foreground-rgba to be used by the row text.
+ *
+ * If @foreground_rgba is %NULL, the value is reset to the default.
+ *
+ * Since: 3.28
+ */
+void
+dzl_tree_node_set_foreground_rgba (DzlTreeNode *self,
+ const GdkRGBA *foreground_rgba)
+{
+ g_return_if_fail (DZL_IS_TREE_NODE (self));
+
+ if (foreground_rgba != NULL)
+ self->foreground_rgba = *foreground_rgba;
+ else
+ memset (&self->foreground_rgba, 0, sizeof self->foreground_rgba);
+
+ self->foreground_rgba_set = !!foreground_rgba;
+}
diff --git a/src/tree/dzl-tree-node.h b/src/tree/dzl-tree-node.h
index 096b12c..40d39f0 100644
--- a/src/tree/dzl-tree-node.h
+++ b/src/tree/dzl-tree-node.h
@@ -128,6 +128,11 @@ gboolean dzl_tree_node_get_reset_on_collapse (DzlTreeNode *sel
DZL_AVAILABLE_IN_3_28
void dzl_tree_node_set_reset_on_collapse (DzlTreeNode *self,
gboolean reset_on_collapse);
+DZL_AVAILABLE_IN_3_28
+const GdkRGBA *dzl_tree_node_get_foreground_rgba (DzlTreeNode *self);
+DZL_AVAILABLE_IN_3_28
+void dzl_tree_node_set_foreground_rgba (DzlTreeNode *self,
+ const GdkRGBA *foreground_rgba);
G_END_DECLS
diff --git a/src/tree/dzl-tree.c b/src/tree/dzl-tree.c
index 3cbe798..6662687 100644
--- a/src/tree/dzl-tree.c
+++ b/src/tree/dzl-tree.c
@@ -460,7 +460,7 @@ text_func (GtkCellLayout *cell_layout,
if (node)
{
- GdkRGBA *rgba = NULL;
+ const GdkRGBA *rgba = NULL;
const gchar *text;
gboolean use_markup;
@@ -469,6 +469,8 @@ text_func (GtkCellLayout *cell_layout,
if (dzl_tree_node_get_use_dim_label (node))
rgba = &priv->dim_foreground;
+ else
+ rgba = dzl_tree_node_get_foreground_rgba (node);
g_object_set (cell,
use_markup ? "markup" : "text", text,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]