mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-09-29 18:47:38 +00:00
GtkHeaderBar: Make labels creation available privately
So it can be reused in subclasses https://bugzilla.gnome.org/show_bug.cgi?id=701345
This commit is contained in:
parent
419b25b643
commit
8a45cb5762
@ -484,6 +484,7 @@ gtk_private_h_sources = \
|
||||
gtkfilesystemmodel.h \
|
||||
gtkfontchooserprivate.h \
|
||||
gtkfontchooserutils.h \
|
||||
gtkheaderbarprivate.h \
|
||||
gtkhslaprivate.h \
|
||||
gtkiconcache.h \
|
||||
gtkiconhelperprivate.h \
|
||||
|
@ -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
|
||||
|
28
gtk/gtkheaderbarprivate.h
Normal file
28
gtk/gtkheaderbarprivate.h
Normal file
@ -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__ */
|
Loading…
Reference in New Issue
Block a user