[nautilus/path-bar-discoverability: 2/2] toolbar: Improve pathbar discoverability
- From: Carlos Soriano <csoriano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus/path-bar-discoverability: 2/2] toolbar: Improve pathbar discoverability
- Date: Tue, 5 Feb 2019 12:23:18 +0000 (UTC)
commit 8569ee66fc822268a1894cf69d99c431591eb870
Author: Carlos Soriano <csoriano redhat com>
Date: Mon Jan 14 17:45:00 2019 +0100
toolbar: Improve pathbar discoverability
For 3.30 Nautilus implemented a new path bar design that provided a
the view background menu in the path bar labels that was usually
unavailable in list view.
While this is a good step forward, the discoverability of the path bar
buttons was not good, users didn't figure out those are actual buttons
and they can click in them.
This work tries to fix that by buttinizing again the path bar, while
matching better with the new gtk stylesheet.
Changes are the style of the path bar buttons and adding a "New Folder"
to the hamburguer menu.
Fixes: https://gitlab.gnome.org/GNOME/nautilus/issues/734
src/nautilus-pathbar.c | 143 ++++++++++----------------
src/resources/css/Adwaita.css | 22 ++--
src/resources/ui/nautilus-toolbar.ui | 192 +++++++++++++++++++++++++++++++----
3 files changed, 242 insertions(+), 115 deletions(-)
---
diff --git a/src/nautilus-pathbar.c b/src/nautilus-pathbar.c
index 2723ab62c..3abf165b4 100644
--- a/src/nautilus-pathbar.c
+++ b/src/nautilus-pathbar.c
@@ -71,7 +71,6 @@ typedef struct
GtkWidget *image;
GtkWidget *label;
- GtkWidget *bold_label;
GtkWidget *separator;
GtkWidget *disclosure_arrow;
GtkWidget *container;
@@ -110,7 +109,8 @@ struct _NautilusPathBar
G_DEFINE_TYPE (NautilusPathBar, nautilus_path_bar, GTK_TYPE_CONTAINER);
static void nautilus_path_bar_check_icon_theme (NautilusPathBar *self);
-static void nautilus_path_bar_update_button_appearance (ButtonData *button_data);
+static void nautilus_path_bar_update_button_appearance (ButtonData *button_data,
+ gboolean current_dir);
static void nautilus_path_bar_update_button_state (ButtonData *button_data,
gboolean current_dir);
static void nautilus_path_bar_update_path (NautilusPathBar *self,
@@ -222,12 +222,9 @@ nautilus_path_bar_init (NautilusPathBar *self)
gtk_widget_set_has_window (GTK_WIDGET (self), FALSE);
gtk_widget_set_redraw_on_allocate (GTK_WIDGET (self), FALSE);
- /* Ideally this would be in CSS, but not worth it adding CSS support to
- * the container's logic...
- */
- gtk_widget_set_margin_start (GTK_WIDGET (self), 6);
- gtk_widget_set_margin_end (GTK_WIDGET (self), 6);
+ gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (self)),
+ GTK_STYLE_CLASS_LINKED);
gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (self)),
"nautilus-path-bar");
@@ -335,8 +332,8 @@ get_dir_name (ButtonData *button_data)
static void
set_label_size_request (ButtonData *button_data)
{
- gint width, height;
- GtkRequisition nat_req, bold_req;
+ gint width;
+ GtkRequisition nat_req;
if (button_data->label == NULL)
{
@@ -344,13 +341,10 @@ set_label_size_request (ButtonData *button_data)
}
gtk_widget_get_preferred_size (button_data->label, NULL, &nat_req);
- gtk_widget_get_preferred_size (button_data->bold_label, &bold_req, NULL);
- width = MAX (nat_req.width, bold_req.width);
- width = MIN (width, NAUTILUS_PATH_BAR_BUTTON_MAX_WIDTH);
- height = MAX (nat_req.height, bold_req.height);
+ width = MIN (nat_req.width, NAUTILUS_PATH_BAR_BUTTON_MAX_WIDTH);
- gtk_widget_set_size_request (button_data->label, width, height);
+ gtk_widget_set_size_request (button_data->label, width, nat_req.height);
}
/* Size requisition:
@@ -380,8 +374,8 @@ nautilus_path_bar_get_preferred_width (GtkWidget *widget,
button_data = BUTTON_DATA (list->data);
set_label_size_request (button_data);
- gtk_widget_get_preferred_width (button_data->container, &child_min, &child_nat);
- gtk_widget_get_preferred_height (button_data->container, &child_height, NULL);
+ gtk_widget_get_preferred_width (button_data->button, &child_min, &child_nat);
+ gtk_widget_get_preferred_height (button_data->button, &child_height, NULL);
height = MAX (height, child_height);
if (button_data->type == NORMAL_BUTTON)
@@ -415,7 +409,7 @@ nautilus_path_bar_get_preferred_height (GtkWidget *widget,
button_data = BUTTON_DATA (list->data);
set_label_size_request (button_data);
- gtk_widget_get_preferred_height (button_data->container, &child_min, &child_nat);
+ gtk_widget_get_preferred_height (button_data->button, &child_min, &child_nat);
*minimum = MAX (*minimum, child_min);
*natural = MAX (*natural, child_nat);
@@ -512,7 +506,7 @@ nautilus_path_bar_size_allocate (GtkWidget *widget,
width = 0;
- gtk_widget_get_preferred_size (BUTTON_DATA (self->button_list->data)->container,
+ gtk_widget_get_preferred_size (BUTTON_DATA (self->button_list->data)->button,
&child_requisition, NULL);
width += child_requisition.width;
@@ -539,13 +533,13 @@ nautilus_path_bar_size_allocate (GtkWidget *widget,
* button, then count backwards.
*/
/* Count down the path chain towards the end. */
- gtk_widget_get_preferred_size (BUTTON_DATA (first_button->data)->container,
+ gtk_widget_get_preferred_size (BUTTON_DATA (first_button->data)->button,
&child_requisition, NULL);
width = child_requisition.width;
list = first_button->prev;
while (list && !reached_end)
{
- child = BUTTON_DATA (list->data)->container;
+ child = BUTTON_DATA (list->data)->button;
gtk_widget_get_preferred_size (child, &child_requisition, NULL);
if (width + child_requisition.width > allocation->width)
@@ -596,7 +590,7 @@ nautilus_path_bar_size_allocate (GtkWidget *widget,
largest_width = allocation->width;
for (list = first_button; list; list = list->prev)
{
- child = BUTTON_DATA (list->data)->container;
+ child = BUTTON_DATA (list->data)->button;
gtk_widget_get_preferred_size (child, &child_requisition, NULL);
child_allocation.width = MIN (child_requisition.width, largest_width);
@@ -617,13 +611,13 @@ nautilus_path_bar_size_allocate (GtkWidget *widget,
/* Now we go hide all the widgets that don't fit */
while (list)
{
- child = BUTTON_DATA (list->data)->container;
+ child = BUTTON_DATA (list->data)->button;
gtk_widget_set_child_visible (child, FALSE);
list = list->prev;
}
for (list = first_button->next; list; list = list->next)
{
- child = BUTTON_DATA (list->data)->container;
+ child = BUTTON_DATA (list->data)->button;
gtk_widget_set_child_visible (child, FALSE);
}
@@ -754,7 +748,7 @@ nautilus_path_bar_remove (GtkContainer *container,
children = self->button_list;
while (children != NULL)
{
- if (widget == BUTTON_DATA (children->data)->container)
+ if (widget == BUTTON_DATA (children->data)->button)
{
nautilus_path_bar_remove_1 (container, widget);
self->button_list = g_list_remove_link (self->button_list, children);
@@ -782,7 +776,7 @@ nautilus_path_bar_forall (GtkContainer *container,
while (children != NULL)
{
GtkWidget *child;
- child = BUTTON_DATA (children->data)->container;
+ child = BUTTON_DATA (children->data)->button;
children = children->next;
(*callback)(child, callback_data);
}
@@ -817,10 +811,10 @@ nautilus_path_bar_get_path_for_child (GtkContainer *container,
{
ButtonData *data = l->data;
- if (gtk_widget_get_visible (data->container) &&
- gtk_widget_get_child_visible (data->container))
+ if (gtk_widget_get_visible (data->button) &&
+ gtk_widget_get_child_visible (data->button))
{
- visible_children = g_list_prepend (visible_children, data->container);
+ visible_children = g_list_prepend (visible_children, data->button);
}
}
@@ -994,7 +988,8 @@ reload_icons (NautilusPathBar *self)
button_data = BUTTON_DATA (list->data);
if (button_data->type != NORMAL_BUTTON || button_data->is_root)
{
- nautilus_path_bar_update_button_appearance (button_data);
+ nautilus_path_bar_update_button_appearance (button_data,
+ list->next == NULL);
}
}
}
@@ -1041,7 +1036,7 @@ nautilus_path_bar_clear_buttons (NautilusPathBar *self)
button_data = BUTTON_DATA (self->button_list->data);
- gtk_container_remove (GTK_CONTAINER (self), button_data->container);
+ gtk_container_remove (GTK_CONTAINER (self), button_data->button);
}
}
@@ -1295,28 +1290,15 @@ get_gicon (ButtonData *button_data)
}
static void
-nautilus_path_bar_update_button_appearance (ButtonData *button_data)
+nautilus_path_bar_update_button_appearance (ButtonData *button_data,
+ gboolean current_dir)
{
const gchar *dir_name = get_dir_name (button_data);
GIcon *icon;
if (button_data->label != NULL)
{
- char *markup;
-
- markup = g_markup_printf_escaped ("<b>%s</b>", dir_name);
-
- if (gtk_label_get_use_markup (GTK_LABEL (button_data->label)))
- {
- gtk_label_set_markup (GTK_LABEL (button_data->label), markup);
- }
- else
- {
- gtk_label_set_text (GTK_LABEL (button_data->label), dir_name);
- }
-
- gtk_label_set_markup (GTK_LABEL (button_data->bold_label), markup);
- g_free (markup);
+ gtk_label_set_text (GTK_LABEL (button_data->label), dir_name);
}
icon = get_gicon (button_data);
@@ -1331,8 +1313,11 @@ nautilus_path_bar_update_button_appearance (ButtonData *button_data)
else
{
gtk_widget_hide (GTK_WIDGET (button_data->image));
- gtk_style_context_remove_class (gtk_widget_get_style_context (button_data->button),
- "image-button");
+ if (!current_dir)
+ {
+ gtk_style_context_remove_class (gtk_widget_get_style_context (button_data->button),
+ "image-button");
+ }
}
}
@@ -1343,18 +1328,10 @@ nautilus_path_bar_update_button_state (ButtonData *button_data,
if (button_data->label != NULL)
{
gtk_label_set_label (GTK_LABEL (button_data->label), NULL);
- gtk_label_set_label (GTK_LABEL (button_data->bold_label), NULL);
gtk_label_set_use_markup (GTK_LABEL (button_data->label), current_dir);
}
- nautilus_path_bar_update_button_appearance (button_data);
-
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button_data->button)) != current_dir)
- {
- button_data->ignore_changes = TRUE;
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button_data->button), current_dir);
- button_data->ignore_changes = FALSE;
- }
+ nautilus_path_bar_update_button_appearance (button_data, current_dir);
}
static void
@@ -1425,6 +1402,7 @@ button_data_file_changed (NautilusFile *file,
NautilusPathBar *self;
gboolean renamed;
gboolean child;
+ gboolean current_dir;
ancestor = gtk_widget_get_ancestor (button_data->button, NAUTILUS_TYPE_PATH_BAR);
if (ancestor == NULL)
@@ -1519,7 +1497,7 @@ button_data_file_changed (NautilusFile *file,
data = BUTTON_DATA (self->button_list->data);
- gtk_container_remove (GTK_CONTAINER (self), data->container);
+ gtk_container_remove (GTK_CONTAINER (self), data->button);
}
}
}
@@ -1542,7 +1520,8 @@ button_data_file_changed (NautilusFile *file,
g_free (display_name);
}
- nautilus_path_bar_update_button_appearance (button_data);
+ current_dir = g_file_equal (self->current_path, button_data->path);
+ nautilus_path_bar_update_button_appearance (button_data, current_dir);
}
static ButtonData *
@@ -1551,23 +1530,20 @@ make_button_data (NautilusPathBar *self,
gboolean current_dir)
{
GFile *path;
- GtkWidget *child;
ButtonData *button_data;
GtkStyleContext *style_context;
path = nautilus_file_get_location (file);
- child = NULL;
/* Is it a special button? */
button_data = g_new0 (ButtonData, 1);
setup_button_type (button_data, self, path);
- button_data->button = gtk_toggle_button_new ();
+ button_data->button = gtk_button_new ();
gtk_widget_set_focus_on_click (button_data->button, FALSE);
style_context = gtk_widget_get_style_context (button_data->button);
gtk_style_context_add_class (style_context, "text-button");
- gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_FLAT);
/* TODO update button type when xdg directories change */
button_data->image = gtk_image_new ();
@@ -1584,15 +1560,15 @@ make_button_data (NautilusPathBar *self,
case OTHER_LOCATIONS_BUTTON:
{
button_data->label = gtk_label_new (NULL);
- child = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);
button_data->disclosure_arrow = gtk_image_new_from_icon_name ("pan-down-symbolic",
GTK_ICON_SIZE_MENU);
+ gtk_widget_set_margin_start (button_data->disclosure_arrow, 0);
button_data->container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- gtk_box_pack_start (GTK_BOX (button_data->container), button_data->button, FALSE, FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (button_data->button), button_data->container);
- gtk_box_pack_start (GTK_BOX (child), button_data->image, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (child), button_data->label, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (child), button_data->disclosure_arrow, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (button_data->container), button_data->image, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (button_data->container), button_data->label, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (button_data->container), button_data->disclosure_arrow, FALSE,
FALSE, 0);
}
break;
@@ -1600,20 +1576,15 @@ make_button_data (NautilusPathBar *self,
/* Fall through */
default:
{
- GtkWidget *separator_label;
-
- separator_label = gtk_label_new (G_DIR_SEPARATOR_S);
- gtk_style_context_add_class (gtk_widget_get_style_context (separator_label), "dim-label");
button_data->label = gtk_label_new (NULL);
- child = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);
button_data->disclosure_arrow = gtk_image_new_from_icon_name ("pan-down-symbolic",
GTK_ICON_SIZE_MENU);
- button_data->container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_box_pack_start (GTK_BOX (button_data->container), separator_label, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (button_data->container), button_data->button, FALSE, FALSE, 0);
+ gtk_widget_set_margin_start (button_data->disclosure_arrow, 0);
+ button_data->container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ gtk_container_add (GTK_CONTAINER (button_data->button), button_data->container);
- gtk_box_pack_start (GTK_BOX (child), button_data->label, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (child), button_data->disclosure_arrow, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (button_data->container), button_data->label, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (button_data->container), button_data->disclosure_arrow, FALSE,
FALSE, 0);
}
break;
}
@@ -1623,17 +1594,14 @@ make_button_data (NautilusPathBar *self,
{
gtk_widget_show (button_data->disclosure_arrow);
gtk_popover_set_relative_to (self->current_view_menu_popover, button_data->button);
+ gtk_style_context_add_class (gtk_widget_get_style_context (button_data->button),
+ "image-button");
}
if (button_data->label != NULL)
{
gtk_label_set_ellipsize (GTK_LABEL (button_data->label), PANGO_ELLIPSIZE_MIDDLE);
gtk_label_set_single_line_mode (GTK_LABEL (button_data->label), TRUE);
-
- button_data->bold_label = gtk_label_new (NULL);
- gtk_widget_set_no_show_all (button_data->bold_label, TRUE);
- gtk_label_set_single_line_mode (GTK_LABEL (button_data->bold_label), TRUE);
- gtk_box_pack_start (GTK_BOX (child), button_data->bold_label, FALSE, FALSE, 0);
}
if (button_data->path == NULL)
@@ -1655,8 +1623,7 @@ make_button_data (NautilusPathBar *self,
button_data);
}
- gtk_container_add (GTK_CONTAINER (button_data->button), child);
- gtk_widget_show_all (button_data->container);
+ gtk_widget_show_all (button_data->button);
nautilus_path_bar_update_button_state (button_data, current_dir);
@@ -1728,9 +1695,9 @@ nautilus_path_bar_update_path (NautilusPathBar *self,
for (l = self->button_list; l; l = l->next)
{
- GtkWidget *container;
- container = BUTTON_DATA (l->data)->container;
- gtk_container_add (GTK_CONTAINER (self), container);
+ GtkWidget *button;
+ button = BUTTON_DATA (l->data)->button;
+ gtk_container_add (GTK_CONTAINER (self), button);
}
}
diff --git a/src/resources/css/Adwaita.css b/src/resources/css/Adwaita.css
index 1dc10768b..9232ba803 100644
--- a/src/resources/css/Adwaita.css
+++ b/src/resources/css/Adwaita.css
@@ -45,30 +45,32 @@
/* Path bar */
.nautilus-path-bar button { /* undecorate the buttons */
- background-image: none;
- border-radius: 0;
- border-width: 0px;
margin: 0px;
}
.nautilus-path-bar button:not(:checked) image { opacity: 0.8; } /* dim the icon when not checked */
-.nautilus-path-bar button:not(:backdrop):hover { box-shadow: inset 0 -3px @borders; }
-
-.nautilus-path-bar button:drop(active) { box-shadow: inset 0 -3px; }
-
.path-bar-box {
transition: border 200ms;
transition: background-color 200ms;
+ border-radius: 5px;
}
+
.path-bar-box.width-maximized {
border: 1px @borders solid;
- border-radius: 3px;
-}
-.path-bar-box.width-maximized:not(:backdrop) {
background-color: @theme_bg_color;
}
+.path-bar-box.width-maximized button:first-child {
+ border-radius: 5px 0px 0px 5px;
+ border-width: 0px 1px 0px 0px;
+}
+
+.path-bar-box.width-maximized button:not(:first-child) {
+ border-width: 0px 1px 0px 1px;
+ border-radius: 0px 0px 0px 0px;
+}
+
/* Make the tags fit into the box */
entry.search > * {
margin: 5px;
diff --git a/src/resources/ui/nautilus-toolbar.ui b/src/resources/ui/nautilus-toolbar.ui
index 3ba4e949a..46af3e2b1 100644
--- a/src/resources/ui/nautilus-toolbar.ui
+++ b/src/resources/ui/nautilus-toolbar.ui
@@ -14,12 +14,74 @@
<property name="margin_bottom">10</property>
<property name="orientation">vertical</property>
<child>
- <object class="GtkModelButton">
+ <object class="GtkBox">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="action_name">app.new-window</property>
- <property name="text" translatable="yes">New _Window</property>
+ <property name="can_focus">False</property>
+ <property name="margin_bottom">6</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="hexpand">True</property>
+ <property name="action_name">app.new-window</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">window-new-symbolic</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="hexpand">True</property>
+ <property name="action_name">win.new-tab</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">tab-new-symbolic</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="hexpand">True</property>
+ <property name="action_name">view.new-folder</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">folder-new-symbolic</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
@@ -28,12 +90,9 @@
</packing>
</child>
<child>
- <object class="GtkModelButton">
+ <object class="GtkSeparator">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="action_name">win.new-tab</property>
- <property name="text" translatable="yes">_New Tab</property>
+ <property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
@@ -42,9 +101,94 @@
</packing>
</child>
<child>
- <object class="GtkSeparator">
+ <object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="margin_start">6</property>
+ <property name="margin_top">6</property>
+ <property name="margin_bottom">6</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_end">24</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Edit</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="action_name">view.cut</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">edit-cut-symbolic</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">center</property>
+ <property name="hexpand">True</property>
+ <property name="action_name">view.copy</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">edit-copy-symbolic</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">center</property>
+ <property name="hexpand">True</property>
+ <property name="action_name">view.paste</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">edit-paste-symbolic</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
@@ -52,18 +196,31 @@
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
<child>
<object class="GtkModelButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
+ <property name="margin_top">6</property>
+ <property name="margin_bottom">6</property>
<property name="action_name">app.show-hide-sidebar</property>
<property name="text" translatable="yes">_Sidebar</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">3</property>
+ <property name="position">4</property>
</packing>
</child>
<child>
@@ -74,7 +231,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">4</property>
+ <property name="position">5</property>
</packing>
</child>
<child>
@@ -82,13 +239,14 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
+ <property name="margin_top">6</property>
<property name="action_name">app.preferences</property>
<property name="text" translatable="yes">_Preferences</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">5</property>
+ <property name="position">6</property>
</packing>
</child>
<child>
@@ -102,7 +260,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">6</property>
+ <property name="position">10</property>
</packing>
</child>
<child>
@@ -116,7 +274,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">7</property>
+ <property name="position">11</property>
</packing>
</child>
<child>
@@ -130,7 +288,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">8</property>
+ <property name="position">12</property>
</packing>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]