[gtk+] box gadget: Make it possible to draw focus
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] box gadget: Make it possible to draw focus
- Date: Sat, 20 Feb 2016 15:55:19 +0000 (UTC)
commit ebff86d6f69ba3af6c847eb254d230db9ddad347
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Feb 20 10:43:54 2016 -0500
box gadget: Make it possible to draw focus
There are widgets which use a box gadget and take focus,
like GtkCheckButton.
gtk/gtkboxgadget.c | 25 ++++++++++++++++---------
gtk/gtkboxgadgetprivate.h | 2 ++
2 files changed, 18 insertions(+), 9 deletions(-)
---
diff --git a/gtk/gtkboxgadget.c b/gtk/gtkboxgadget.c
index e16ddbd..c5657a9 100644
--- a/gtk/gtkboxgadget.c
+++ b/gtk/gtkboxgadget.c
@@ -36,6 +36,7 @@
typedef struct _GtkBoxGadgetPrivate GtkBoxGadgetPrivate;
struct _GtkBoxGadgetPrivate {
GtkOrientation orientation;
+ gboolean draw_focus;
GArray *children;
};
@@ -448,6 +449,7 @@ gtk_box_gadget_draw (GtkCssGadget *gadget,
int height)
{
GtkBoxGadgetPrivate *priv = gtk_box_gadget_get_instance_private (GTK_BOX_GADGET (gadget));
+ GtkWidget *owner = gtk_css_gadget_get_owner (gadget);
guint i;
for (i = 0 ; i < priv->children->len; i++)
@@ -455,18 +457,14 @@ gtk_box_gadget_draw (GtkCssGadget *gadget,
GtkBoxGadgetChild *child = &g_array_index (priv->children, GtkBoxGadgetChild, i);
if (GTK_IS_WIDGET (child->object))
- {
- gtk_container_propagate_draw (GTK_CONTAINER (gtk_css_gadget_get_owner (gadget)),
- GTK_WIDGET (child->object),
- cr);
- }
+ gtk_container_propagate_draw (GTK_CONTAINER (owner), GTK_WIDGET (child->object), cr);
else
- {
- gtk_css_gadget_draw (GTK_CSS_GADGET (child->object),
- cr);
- }
+ gtk_css_gadget_draw (GTK_CSS_GADGET (child->object), cr);
}
+ if (priv->draw_focus && gtk_widget_has_visible_focus (owner))
+ return TRUE;
+
return FALSE;
}
@@ -552,6 +550,15 @@ gtk_box_gadget_set_orientation (GtkBoxGadget *gadget,
priv->orientation = orientation;
}
+void
+gtk_box_gadget_set_draw_focus (GtkBoxGadget *gadget,
+ gboolean draw_focus)
+{
+ GtkBoxGadgetPrivate *priv = gtk_box_gadget_get_instance_private (gadget);
+
+ priv->draw_focus = draw_focus;
+}
+
static GtkCssNode *
get_css_node (GObject *child)
{
diff --git a/gtk/gtkboxgadgetprivate.h b/gtk/gtkboxgadgetprivate.h
index 3662124..e59ab9a 100644
--- a/gtk/gtkboxgadgetprivate.h
+++ b/gtk/gtkboxgadgetprivate.h
@@ -56,6 +56,8 @@ GtkCssGadget * gtk_box_gadget_new_for_node (GtkCssNode
void gtk_box_gadget_set_orientation (GtkBoxGadget *gadget,
GtkOrientation orientation);
+void gtk_box_gadget_set_draw_focus (GtkBoxGadget *gadget,
+ gboolean draw_focus);
void gtk_box_gadget_insert_widget (GtkBoxGadget *gadget,
int pos,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]