[bijiben] mainToolbar: Make headerbar a titlebar and add close button



commit 52a235f59a2a3a9f132700063a6f2d212a68acd7
Author: Yosef Or Boczko <yosefor3 walla com>
Date:   Sun Jun 23 21:48:12 2013 +0200

    mainToolbar: Make headerbar a titlebar and add close button

 src/bjb-main-toolbar.c |   36 ++++++++++++++++++++++++++++++++++++
 src/bjb-window-base.c  |    3 +--
 2 files changed, 37 insertions(+), 2 deletions(-)
---
diff --git a/src/bjb-main-toolbar.c b/src/bjb-main-toolbar.c
index 410d5b1..cb0c623 100644
--- a/src/bjb-main-toolbar.c
+++ b/src/bjb-main-toolbar.c
@@ -56,6 +56,8 @@ struct _BjbMainToolbarPrivate
   GtkWidget        *grid;
   GtkWidget        *select;
   GtkWidget        *search;
+  GtkWidget        *separator;
+  GtkWidget        *close;
   gulong            finish_sig;
   gulong            update_selection;
   gulong            search_handler;
@@ -100,6 +102,8 @@ bjb_main_toolbar_clear (BjbMainToolbar *self)
   g_clear_pointer (&self->priv->search   ,gtk_widget_destroy);
   g_clear_pointer (&self->priv->select   ,gtk_widget_destroy);
   g_clear_pointer (&self->priv->share    ,gtk_widget_destroy);
+  g_clear_pointer (&self->priv->separator,gtk_widget_destroy);
+  g_clear_pointer (&self->priv->close    ,gtk_widget_destroy);
 }
 
 /* Callbacks */
@@ -240,6 +244,13 @@ on_search_button_clicked (BjbMainToolbarPrivate *priv)
 }
 
 static void
+on_close_clicked (GtkButton *button,
+                  gpointer   user_data)
+{
+  gtk_widget_destroy (GTK_WIDGET (BJB_MAIN_TOOLBAR (user_data)->priv->window));
+}
+
+static void
 add_search_button (BjbMainToolbar *self)
 {
   BjbMainToolbarPrivate *priv = self->priv;
@@ -260,6 +271,25 @@ add_search_button (BjbMainToolbar *self)
                             G_CALLBACK (on_search_button_clicked), priv);
 }
 
+static void
+add_close_button (BjbMainToolbar *self)
+{
+  BjbMainToolbarPrivate *priv = self->priv;
+  GtkWidget *close_image;
+
+  /* Close button */
+  priv->separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
+  gtk_header_bar_pack_end (GTK_HEADER_BAR (self), priv->separator);
+
+  priv->close = gtk_button_new ();
+  gtk_button_set_relief (GTK_BUTTON (priv->close), GTK_RELIEF_NONE);
+  close_image = gtk_image_new_from_icon_name ("window-close-symbolic", GTK_ICON_SIZE_MENU);
+  gtk_button_set_image (GTK_BUTTON (priv->close), close_image);
+  gtk_header_bar_pack_end (GTK_HEADER_BAR (self), priv->close);
+  g_signal_connect (priv->close,"clicked",
+                    G_CALLBACK(on_close_clicked), self);
+}
+
 
 static void
 update_selection_buttons (BjbController *controller,
@@ -419,6 +449,9 @@ populate_bar_for_standard(BjbMainToolbar *self)
   g_signal_connect (priv->select,"clicked",
                     G_CALLBACK(on_selection_mode_clicked),self);
 
+  /* Close button */
+  add_close_button (self);
+
   /* Watch for main view changing */
   connect_main_view_handlers (self);
 }
@@ -780,6 +813,9 @@ populate_bar_for_note_view (BjbMainToolbar *self)
   gtk_header_bar_pack_end (bar, priv->menu);
   gtk_widget_set_tooltip_text (priv->menu, _("More options…"));
 
+  /* Close button */
+  add_close_button (self);
+
   gtk_menu_button_set_popup (GTK_MENU_BUTTON (priv->menu),
                              bjb_note_menu_new (self));
 }
diff --git a/src/bjb-window-base.c b/src/bjb-window-base.c
index 32cc62a..2a1ba56 100644
--- a/src/bjb-window-base.c
+++ b/src/bjb-window-base.c
@@ -150,7 +150,7 @@ bjb_window_base_constructed (GObject *obj)
   /* Shared toolbar */
   priv->view = bjb_main_view_new (GTK_WIDGET (obj), priv->controller);
   priv->main_toolbar = bjb_main_toolbar_new (priv->view, priv->controller);
-  gtk_box_pack_start (GTK_BOX (priv->vbox), GTK_WIDGET (priv->main_toolbar), FALSE, FALSE, 0);
+  gtk_window_set_titlebar (GTK_WINDOW (self), GTK_WIDGET (priv->main_toolbar));
 
   /* Search entry toolbar */
   priv->search_bar = bjb_search_toolbar_new (GTK_WIDGET (obj), priv->controller);
@@ -221,7 +221,6 @@ bjb_window_base_new(void)
 {
   return g_object_new (BJB_TYPE_WINDOW_BASE,
                        "application", g_application_get_default(),
-                       "hide-titlebar-when-maximized", TRUE,
                        NULL);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]