[libdazzle] dockbin: implement draw vfunc
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libdazzle] dockbin: implement draw vfunc
- Date: Tue, 4 Dec 2018 00:33:17 +0000 (UTC)
commit bc8fad5184c964038293cc491319e7fc6cb42415
Author: Christian Hergert <chergert redhat com>
Date: Mon Dec 3 16:32:52 2018 -0800
dockbin: implement draw vfunc
We can avoid an array allocation here and avoid calling widget children
that do not have gtk_widget_child_visible() set (which is done when we
hide the widgets).
src/panel/dzl-dock-bin.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
---
diff --git a/src/panel/dzl-dock-bin.c b/src/panel/dzl-dock-bin.c
index b04d8d4..894f8fc 100644
--- a/src/panel/dzl-dock-bin.c
+++ b/src/panel/dzl-dock-bin.c
@@ -1736,6 +1736,31 @@ dzl_dock_bin_init_child (DzlDockBin *self,
child->pre_anim_pinned = TRUE;
}
+static gboolean
+dzl_dock_bin_draw (GtkWidget *widget,
+ cairo_t *cr)
+{
+ DzlDockBin *self = (DzlDockBin *)widget;
+ DzlDockBinPrivate *priv = dzl_dock_bin_get_instance_private (self);
+
+ g_assert (DZL_IS_DOCK_BIN (self));
+ g_assert (cr != NULL);
+
+ for (guint i = 0; i < LAST_DZL_DOCK_BIN_CHILD; i++)
+ {
+ const DzlDockBinChild *child = &priv->children[i];
+
+ if (!GTK_IS_WIDGET (child->widget) ||
+ !gtk_widget_get_visible (child->widget) ||
+ !gtk_widget_get_child_visible (child->widget))
+ continue;
+
+ gtk_container_propagate_draw (GTK_CONTAINER (self), child->widget, cr);
+ }
+
+ return FALSE;
+}
+
static void
dzl_dock_bin_destroy (GtkWidget *widget)
{
@@ -1884,6 +1909,7 @@ dzl_dock_bin_class_init (DzlDockBinClass *klass)
widget_class->destroy = dzl_dock_bin_destroy;
widget_class->drag_leave = dzl_dock_bin_drag_leave;
widget_class->drag_motion = dzl_dock_bin_drag_motion;
+ widget_class->draw = dzl_dock_bin_draw;
widget_class->focus = dzl_dock_bin_focus;
widget_class->get_preferred_height = dzl_dock_bin_get_preferred_height;
widget_class->get_preferred_width = dzl_dock_bin_get_preferred_width;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]