[gtk+] GtkHeaderBar: Make labels creation available privately
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] GtkHeaderBar: Make labels creation available privately
- Date: Fri, 14 Jun 2013 17:11:00 +0000 (UTC)
commit 8a45cb576264565f5dbe991cb9b77cafb3919999
Author: Bastien Nocera <hadess hadess net>
Date: Fri May 24 15:07:16 2013 +0200
GtkHeaderBar: Make labels creation available privately
So it can be reused in subclasses
https://bugzilla.gnome.org/show_bug.cgi?id=701345
gtk/Makefile.am | 1 +
gtk/gtkheaderbar.c | 61 +++++++++++++++++++++++++++++++-------------
gtk/gtkheaderbarprivate.h | 28 ++++++++++++++++++++
3 files changed, 72 insertions(+), 18 deletions(-)
---
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index 0b3de0a..f5fc3d1 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -484,6 +484,7 @@ gtk_private_h_sources = \
gtkfilesystemmodel.h \
gtkfontchooserprivate.h \
gtkfontchooserutils.h \
+ gtkheaderbarprivate.h \
gtkhslaprivate.h \
gtkiconcache.h \
gtkiconhelperprivate.h \
diff --git a/gtk/gtkheaderbar.c b/gtk/gtkheaderbar.c
index b15fd0b..d08fbc6 100644
--- a/gtk/gtkheaderbar.c
+++ b/gtk/gtkheaderbar.c
@@ -20,6 +20,7 @@
#include "config.h"
#include "gtkheaderbar.h"
+#include "gtkheaderbarprivate.h"
#include "gtkintl.h"
#include "gtkprivate.h"
#include "gtktypebuiltins.h"
@@ -162,6 +163,44 @@ init_sizing_box (GtkHeaderBar *bar)
gtk_widget_show_all (priv->label_sizing_box);
}
+GtkWidget *
+_gtk_header_bar_create_title_box (const char *title,
+ const char *subtitle,
+ GtkWidget **ret_title_label,
+ GtkWidget **ret_subtitle_label)
+{
+ GtkWidget *label_box;
+ GtkWidget *title_label;
+ GtkWidget *subtitle_label;
+
+ label_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_widget_set_valign (label_box, GTK_ALIGN_CENTER);
+ gtk_widget_show (label_box);
+
+ title_label = gtk_label_new (title);
+ boldify_label (title_label);
+ gtk_label_set_line_wrap (GTK_LABEL (title_label), FALSE);
+ gtk_label_set_single_line_mode (GTK_LABEL (title_label), TRUE);
+ gtk_label_set_ellipsize (GTK_LABEL (title_label), PANGO_ELLIPSIZE_END);
+ gtk_box_pack_start (GTK_BOX (label_box), title_label, FALSE, FALSE, 0);
+ gtk_widget_show (title_label);
+
+ subtitle_label = gtk_label_new (subtitle);
+ smallify_label (subtitle_label);
+ gtk_label_set_line_wrap (GTK_LABEL (subtitle_label), FALSE);
+ gtk_label_set_single_line_mode (GTK_LABEL (subtitle_label), TRUE);
+ gtk_label_set_ellipsize (GTK_LABEL (subtitle_label), PANGO_ELLIPSIZE_END);
+ gtk_box_pack_start (GTK_BOX (label_box), subtitle_label, FALSE, FALSE, 0);
+ gtk_widget_set_no_show_all (subtitle_label, TRUE);
+
+ if (ret_title_label)
+ *ret_title_label = title_label;
+ if (ret_subtitle_label)
+ *ret_subtitle_label = subtitle_label;
+
+ return label_box;
+}
+
static void
construct_label_box (GtkHeaderBar *bar)
{
@@ -169,25 +208,11 @@ construct_label_box (GtkHeaderBar *bar)
g_assert (priv->label_box == NULL);
- priv->label_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ priv->label_box = _gtk_header_bar_create_title_box (priv->title,
+ priv->subtitle,
+ &priv->title_label,
+ &priv->subtitle_label);
gtk_widget_set_parent (priv->label_box, GTK_WIDGET (bar));
- gtk_widget_set_valign (priv->label_box, GTK_ALIGN_CENTER);
- gtk_widget_show (priv->label_box);
-
- priv->title_label = gtk_label_new (priv->title);
- boldify_label (priv->title_label);
- gtk_label_set_line_wrap (GTK_LABEL (priv->title_label), FALSE);
- gtk_label_set_single_line_mode (GTK_LABEL (priv->title_label), TRUE);
- gtk_label_set_ellipsize (GTK_LABEL (priv->title_label), PANGO_ELLIPSIZE_END);
- gtk_box_pack_start (GTK_BOX (priv->label_box), priv->title_label, FALSE, FALSE, 0);
- gtk_widget_show (priv->title_label);
-
- priv->subtitle_label = gtk_label_new (priv->subtitle);
- smallify_label (priv->subtitle_label);
- gtk_label_set_line_wrap (GTK_LABEL (priv->subtitle_label), FALSE);
- gtk_label_set_single_line_mode (GTK_LABEL (priv->subtitle_label), TRUE);
- gtk_label_set_ellipsize (GTK_LABEL (priv->subtitle_label), PANGO_ELLIPSIZE_END);
- gtk_box_pack_start (GTK_BOX (priv->label_box), priv->subtitle_label, FALSE, FALSE, 0);
}
static void
diff --git a/gtk/gtkheaderbarprivate.h b/gtk/gtkheaderbarprivate.h
new file mode 100644
index 0000000..bd75166
--- /dev/null
+++ b/gtk/gtkheaderbarprivate.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2013 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifndef __GTK_HEADER_BAR_PRIVATE_H__
+#define __GTK_HEADER_BAR_PRIVATE_H__
+
+GtkWidget * _gtk_header_bar_create_title_box (const char *title,
+ const char *subtitle,
+ GtkWidget **ret_title_label,
+ GtkWidget **ret_subtitle_label);
+
+#endif /* __GTK_HEADER_BAR_PRIVATE_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]