[nautilus] toolbar: Port to GtkHeaderBar
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] toolbar: Port to GtkHeaderBar
- Date: Sun, 16 Feb 2014 02:05:59 +0000 (UTC)
commit 94dc4d65344498d62432bd44e7aca45fcbdf1540
Author: Yosef Or Boczko <yoseforb gmail com>
Date: Sun Jan 19 14:28:34 2014 +0200
toolbar: Port to GtkHeaderBar
https://bugzilla.gnome.org/show_bug.cgi?id=722542
configure.ac | 2 +-
src/nautilus-location-entry.c | 2 +-
src/nautilus-toolbar.c | 104 +++++++++++++---------------------------
src/nautilus-toolbar.h | 4 +-
4 files changed, 38 insertions(+), 74 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 62f6809..85c2cb8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@ dnl ===========================================================================
m4_define(glib_minver, 2.35.3)
m4_define(gnome_desktop_minver, 3.0.0)
m4_define(pango_minver, 1.28.3)
-m4_define(gtk_minver, 3.9.11)
+m4_define(gtk_minver, 3.11.6)
m4_define(xml_minver, 2.7.8)
m4_define(exif_minver, 0.6.20)
m4_define(exempi_minver, 2.1.0)
diff --git a/src/nautilus-location-entry.c b/src/nautilus-location-entry.c
index a5f23f8..e10ee8b 100644
--- a/src/nautilus-location-entry.c
+++ b/src/nautilus-location-entry.c
@@ -752,7 +752,7 @@ nautilus_location_entry_new (void)
{
GtkWidget *entry;
- entry = gtk_widget_new (NAUTILUS_TYPE_LOCATION_ENTRY, NULL);
+ entry = gtk_widget_new (NAUTILUS_TYPE_LOCATION_ENTRY, "max-width-chars", 350, NULL);
return entry;
}
diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c
index d44ba37..424050e 100644
--- a/src/nautilus-toolbar.c
+++ b/src/nautilus-toolbar.c
@@ -44,7 +44,6 @@ typedef enum {
} NautilusNavigationDirection;
struct _NautilusToolbarPriv {
- GtkWidget *toolbar;
NautilusWindow *window;
GtkWidget *path_bar;
@@ -63,7 +62,7 @@ enum {
static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
-G_DEFINE_TYPE (NautilusToolbar, nautilus_toolbar, GTK_TYPE_FRAME);
+G_DEFINE_TYPE (NautilusToolbar, nautilus_toolbar, GTK_TYPE_HEADER_BAR);
static void unschedule_menu_popup_timeout (NautilusToolbar *self);
@@ -398,6 +397,7 @@ nautilus_toolbar_constructed (GObject *obj)
GtkWidget *box;
GtkWidget *separator;
GtkUIManager *ui_manager;
+ GtkSizeGroup *size_group;
gboolean rtl;
G_OBJECT_CLASS (nautilus_toolbar_parent_class)->constructed (obj);
@@ -405,8 +405,7 @@ nautilus_toolbar_constructed (GObject *obj)
gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (self)),
"header-bar");
- self->priv->toolbar = toolbar = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_container_add (GTK_CONTAINER (self), toolbar);
+ toolbar = GTK_WIDGET (obj);
rtl = gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL;
@@ -415,6 +414,8 @@ nautilus_toolbar_constructed (GObject *obj)
gtk_style_context_set_junction_sides (gtk_widget_get_style_context (GTK_WIDGET (self)),
GTK_JUNCTION_BOTTOM);
+ size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL);
+
/* Back and Forward */
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
@@ -439,35 +440,31 @@ nautilus_toolbar_constructed (GObject *obj)
gtk_style_context_add_class (gtk_widget_get_style_context (box),
GTK_STYLE_CLASS_LINKED);
- gtk_box_pack_start (GTK_BOX (toolbar), box, FALSE, FALSE, 0);
-
- if (rtl) {
- gtk_widget_set_margin_left (box, 6);
- } else {
- gtk_widget_set_margin_right (box, 6);
- }
-
- /* regular path bar */
- box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+ gtk_header_bar_pack_start (GTK_HEADER_BAR (toolbar), box);
+ gtk_size_group_add_widget (size_group, box);
self->priv->path_bar = g_object_new (NAUTILUS_TYPE_PATH_BAR, NULL);
- gtk_box_pack_start (GTK_BOX (box), self->priv->path_bar, TRUE, TRUE, 0);
+ gtk_header_bar_pack_start (GTK_HEADER_BAR (toolbar), self->priv->path_bar);
+
+ gtk_size_group_add_widget (size_group, self->priv->path_bar);
/* entry-like location bar */
self->priv->location_entry = nautilus_location_entry_new ();
- gtk_box_pack_start (GTK_BOX (box), self->priv->location_entry, TRUE, TRUE, 0);
+ gtk_header_bar_pack_start (GTK_HEADER_BAR (toolbar), self->priv->location_entry);
- gtk_box_pack_start (GTK_BOX (toolbar), box, TRUE, TRUE, 0);
+ gtk_size_group_add_widget (size_group, self->priv->location_entry);
- /* search */
- button = toolbar_create_toolbutton (self, FALSE, TRUE, NAUTILUS_ACTION_SEARCH, NULL);
+ /* Action Menu */
+ button = toolbar_create_toolbutton (self, TRUE, FALSE, "emblem-system-symbolic", _("Location
options"));
gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
- gtk_container_add (GTK_CONTAINER (toolbar), button);
- if (rtl) {
- gtk_widget_set_margin_right (button, 76);
- } else {
- gtk_widget_set_margin_left (button, 76);
- }
+ menu = gtk_ui_manager_get_widget (ui_manager, "/ActionMenu");
+ gtk_widget_set_halign (menu, GTK_ALIGN_END);
+ gtk_menu_button_set_popup (GTK_MENU_BUTTON (button), menu);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (button), "win.gear-menu");
+ g_signal_connect (menu, "key-press-event", G_CALLBACK (gear_menu_key_press), self);
+
+ gtk_header_bar_pack_end (GTK_HEADER_BAR (toolbar), button);
+ gtk_size_group_add_widget (size_group, button);
/* View buttons */
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
@@ -489,53 +486,15 @@ nautilus_toolbar_constructed (GObject *obj)
gtk_style_context_add_class (gtk_widget_get_style_context (box),
GTK_STYLE_CLASS_LINKED);
- gtk_container_add (GTK_CONTAINER (toolbar), box);
- if (rtl) {
- gtk_widget_set_margin_right (box, 6);
- } else {
- gtk_widget_set_margin_left (box, 6);
- }
+ gtk_header_bar_pack_end (GTK_HEADER_BAR (toolbar), box);
+ gtk_size_group_add_widget (size_group, box);
- /* Action Menu */
- button = toolbar_create_toolbutton (self, TRUE, FALSE, "emblem-system-symbolic", _("Location
options"));
+ /* search */
+ button = toolbar_create_toolbutton (self, FALSE, TRUE, NAUTILUS_ACTION_SEARCH, NULL);
gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
- menu = gtk_ui_manager_get_widget (ui_manager, "/ActionMenu");
- gtk_widget_set_halign (menu, GTK_ALIGN_END);
- gtk_menu_button_set_popup (GTK_MENU_BUTTON (button), menu);
- gtk_actionable_set_action_name (GTK_ACTIONABLE (button), "win.gear-menu");
- g_signal_connect (menu, "key-press-event", G_CALLBACK (gear_menu_key_press), self);
-
- gtk_container_add (GTK_CONTAINER (toolbar), button);
- if (rtl) {
- gtk_widget_set_margin_right (button, 6);
- } else {
- gtk_widget_set_margin_left (button, 6);
- }
-
- /* Separator and Close */
- separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
- gtk_container_add (GTK_CONTAINER (toolbar), separator);
-
- if (rtl) {
- gtk_widget_set_margin_right (separator, 6);
- } else {
- gtk_widget_set_margin_left (separator, 6);
- }
-
- button = gtk_button_new_from_icon_name ("window-close-symbolic",
- GTK_ICON_SIZE_MENU);
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
- gtk_style_context_add_class (gtk_widget_get_style_context (button),
- "titlebutton");
- g_signal_connect (button, "clicked",
- G_CALLBACK (close_button_clicked), self);
- gtk_container_add (GTK_CONTAINER (toolbar), button);
-
- if (rtl) {
- gtk_widget_set_margin_right (button, 6);
- } else {
- gtk_widget_set_margin_left (button, 6);
- }
+ gtk_widget_set_margin_start (button, 76);
+ gtk_header_bar_pack_end (GTK_HEADER_BAR (toolbar), button);
+ gtk_size_group_add_widget (size_group, button);
g_signal_connect_swapped (nautilus_preferences,
"changed::" NAUTILUS_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY,
@@ -543,6 +502,8 @@ nautilus_toolbar_constructed (GObject *obj)
gtk_widget_show_all (toolbar);
toolbar_update_appearance (self);
+
+ g_object_unref (size_group);
}
static void
@@ -637,6 +598,9 @@ nautilus_toolbar_new (NautilusWindow *window)
{
return g_object_new (NAUTILUS_TYPE_TOOLBAR,
"window", window,
+ "show-close-button", TRUE,
+ "custom-title", gtk_label_new (NULL),
+ "valign", GTK_ALIGN_CENTER,
NULL);
}
diff --git a/src/nautilus-toolbar.h b/src/nautilus-toolbar.h
index c3ca8e3..cbb265c 100644
--- a/src/nautilus-toolbar.h
+++ b/src/nautilus-toolbar.h
@@ -52,14 +52,14 @@ typedef enum {
} NautilusToolbarMode;
struct _NautilusToolbar {
- GtkFrame parent;
+ GtkHeaderBar parent;
/* private */
NautilusToolbarPriv *priv;
};
struct _NautilusToolbarClass {
- GtkFrameClass parent_class;
+ GtkHeaderBarClass parent_class;
};
GType nautilus_toolbar_get_type (void);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]