toolbar: Revamp the main toolbar style

Get rid of the text and switch all icons to slightly smaller symoblic icons.
This will allow it to behave much better with dark gtk themes. Replace the
recent documents button with a button for file open. Changing the style of
the buttons on the main toolbar also effects the fullscreen toolbar so
update this as well to use a matching layout.
This commit is contained in:
JosephMcc 2016-10-03 23:48:20 -07:00
parent bafaeaca98
commit 94dae95b95
4 changed files with 172 additions and 157 deletions

View File

@ -1316,8 +1316,8 @@ xed_prefs_manager_source_style_scheme_changed (GSettings *settings,
static void static void
xed_prefs_manager_max_recents_changed (GSettings *settings, xed_prefs_manager_max_recents_changed (GSettings *settings,
gchar *key, gchar *key,
gpointer user_data) gpointer user_data)
{ {
xed_debug (DEBUG_PREFS); xed_debug (DEBUG_PREFS);
@ -1328,21 +1328,11 @@ xed_prefs_manager_max_recents_changed (GSettings *settings,
max = g_settings_get_int (settings, key); max = g_settings_get_int (settings, key);
if (max < 0) { if (max < 0)
{
max = GPM_DEFAULT_MAX_RECENTS; max = GPM_DEFAULT_MAX_RECENTS;
} }
windows = xed_app_get_windows (xed_app_get_default ());
while (windows != NULL)
{
XedWindow *w = windows->data;
gtk_recent_chooser_set_limit (GTK_RECENT_CHOOSER (w->priv->toolbar_recent_menu),
max);
windows = g_list_next (windows);
}
/* FIXME: we have no way at the moment to trigger the /* FIXME: we have no way at the moment to trigger the
* update of the inline recents in the File menu */ * update of the inline recents in the File menu */
} }

View File

@ -53,9 +53,9 @@ static const GtkActionEntry xed_always_sensitive_menu_entries[] =
{ "Help", NULL, N_("_Help") }, { "Help", NULL, N_("_Help") },
/* File menu */ /* File menu */
{ "FileNew", GTK_STOCK_NEW, NULL, "<control>N", { "FileNew", "document-new-symbolic", N_("_New"), "<control>N",
N_("Create a new document"), G_CALLBACK (_xed_cmd_file_new) }, N_("Create a new document"), G_CALLBACK (_xed_cmd_file_new) },
{ "FileOpen", GTK_STOCK_OPEN, N_("_Open..."), "<control>O", { "FileOpen", "document-open-symbolic", N_("_Open..."), "<control>O",
N_("Open a file"), G_CALLBACK (_xed_cmd_file_open) }, N_("Open a file"), G_CALLBACK (_xed_cmd_file_open) },
/* Edit menu */ /* Edit menu */
@ -69,7 +69,7 @@ static const GtkActionEntry xed_always_sensitive_menu_entries[] =
N_("About this application"), G_CALLBACK (_xed_cmd_help_about) }, N_("About this application"), G_CALLBACK (_xed_cmd_help_about) },
/* Fullscreen toolbar */ /* Fullscreen toolbar */
{ "LeaveFullscreen", GTK_STOCK_LEAVE_FULLSCREEN, NULL, { "LeaveFullscreen", "view-restore-symbolic", NULL,
NULL, N_("Leave fullscreen mode"), NULL, N_("Leave fullscreen mode"),
G_CALLBACK (_xed_cmd_view_leave_fullscreen_mode) } G_CALLBACK (_xed_cmd_view_leave_fullscreen_mode) }
}; };
@ -77,7 +77,7 @@ static const GtkActionEntry xed_always_sensitive_menu_entries[] =
static const GtkActionEntry xed_menu_entries[] = static const GtkActionEntry xed_menu_entries[] =
{ {
/* File menu */ /* File menu */
{ "FileSave", GTK_STOCK_SAVE, NULL, "<control>S", { "FileSave", "document-save-symbolic", N_("_Save"), "<control>S",
N_("Save the current file"), G_CALLBACK (_xed_cmd_file_save) }, N_("Save the current file"), G_CALLBACK (_xed_cmd_file_save) },
{ "FileSaveAs", GTK_STOCK_SAVE_AS, N_("Save _As..."), "<shift><control>S", { "FileSaveAs", GTK_STOCK_SAVE_AS, N_("Save _As..."), "<shift><control>S",
N_("Save the current file with a different name"), G_CALLBACK (_xed_cmd_file_save_as) }, N_("Save the current file with a different name"), G_CALLBACK (_xed_cmd_file_save_as) },
@ -89,15 +89,15 @@ static const GtkActionEntry xed_menu_entries[] =
N_("Print the current page"), G_CALLBACK (_xed_cmd_file_print) }, N_("Print the current page"), G_CALLBACK (_xed_cmd_file_print) },
/* Edit menu */ /* Edit menu */
{ "EditUndo", GTK_STOCK_UNDO, NULL, "<control>Z", { "EditUndo", "edit-undo-symbolic", N_("Undo"), "<control>Z",
N_("Undo the last action"), G_CALLBACK (_xed_cmd_edit_undo) }, N_("Undo the last action"), G_CALLBACK (_xed_cmd_edit_undo) },
{ "EditRedo", GTK_STOCK_REDO, NULL, "<control>Y", { "EditRedo", "edit-redo-symbolic", N_("Redo"), "<control>Y",
N_("Redo the last undone action"), G_CALLBACK (_xed_cmd_edit_redo) }, N_("Redo the last undone action"), G_CALLBACK (_xed_cmd_edit_redo) },
{ "EditCut", GTK_STOCK_CUT, NULL, "<control>X", { "EditCut", "edit-cut-symbolic", N_("Cut"), "<control>X",
N_("Cut the selection"), G_CALLBACK (_xed_cmd_edit_cut) }, N_("Cut the selection"), G_CALLBACK (_xed_cmd_edit_cut) },
{ "EditCopy", GTK_STOCK_COPY, NULL, "<control>C", { "EditCopy", "edit-copy-symbolic", N_("Copy"), "<control>C",
N_("Copy the selection"), G_CALLBACK (_xed_cmd_edit_copy) }, N_("Copy the selection"), G_CALLBACK (_xed_cmd_edit_copy) },
{ "EditPaste", GTK_STOCK_PASTE, NULL, "<control>V", { "EditPaste", "edit-paste-symbolic", N_("Paste"), "<control>V",
N_("Paste the clipboard"), G_CALLBACK (_xed_cmd_edit_paste) }, N_("Paste the clipboard"), G_CALLBACK (_xed_cmd_edit_paste) },
{ "EditDelete", GTK_STOCK_DELETE, NULL, NULL, { "EditDelete", GTK_STOCK_DELETE, NULL, NULL,
N_("Delete the selected text"), G_CALLBACK (_xed_cmd_edit_delete) }, N_("Delete the selected text"), G_CALLBACK (_xed_cmd_edit_delete) },
@ -108,13 +108,13 @@ static const GtkActionEntry xed_menu_entries[] =
{ "ViewHighlightMode", NULL, N_("_Highlight Mode") }, { "ViewHighlightMode", NULL, N_("_Highlight Mode") },
/* Search menu */ /* Search menu */
{ "SearchFind", GTK_STOCK_FIND, N_("_Find..."), "<control>F", { "SearchFind", "edit-find-symbolic", N_("_Find"), "<control>F",
N_("Search for text"), G_CALLBACK (_xed_cmd_search_find) }, N_("Search for text"), G_CALLBACK (_xed_cmd_search_find) },
{ "SearchFindNext", NULL, N_("Find Ne_xt"), "<control>G", { "SearchFindNext", NULL, N_("Find Ne_xt"), "<control>G",
N_("Search forwards for the same text"), G_CALLBACK (_xed_cmd_search_find_next) }, N_("Search forwards for the same text"), G_CALLBACK (_xed_cmd_search_find_next) },
{ "SearchFindPrevious", NULL, N_("Find Pre_vious"), "<shift><control>G", { "SearchFindPrevious", NULL, N_("Find Pre_vious"), "<shift><control>G",
N_("Search backwards for the same text"), G_CALLBACK (_xed_cmd_search_find_prev) }, N_("Search backwards for the same text"), G_CALLBACK (_xed_cmd_search_find_prev) },
{ "SearchReplace", GTK_STOCK_FIND_AND_REPLACE, N_("_Replace..."), "<control>H", { "SearchReplace", "edit-find-replace-symbolic", N_("_Replace"), "<control>H",
N_("Search for and replace text"), G_CALLBACK (_xed_cmd_search_replace) }, N_("Search for and replace text"), G_CALLBACK (_xed_cmd_search_replace) },
{ "SearchGoToLine", GTK_STOCK_JUMP_TO, N_("Go to _Line..."), "<control>I", { "SearchGoToLine", GTK_STOCK_JUMP_TO, N_("Go to _Line..."), "<control>I",
N_("Go to a specific line"), G_CALLBACK (_xed_cmd_search_goto_line) }, N_("Go to a specific line"), G_CALLBACK (_xed_cmd_search_goto_line) },

View File

@ -56,6 +56,7 @@ struct _XedWindowPrivate
/* Widgets for fullscreen mode */ /* Widgets for fullscreen mode */
GtkWidget *fullscreen_controls; GtkWidget *fullscreen_controls;
GtkWidget *fullscreen_controls_container;
guint fullscreen_animation_timeout_id; guint fullscreen_animation_timeout_id;
gboolean fullscreen_animation_enter; gboolean fullscreen_animation_enter;
@ -79,9 +80,7 @@ struct _XedWindowPrivate
GtkActionGroup *documents_list_action_group; GtkActionGroup *documents_list_action_group;
guint documents_list_menu_ui_id; guint documents_list_menu_ui_id;
GtkWidget *toolbar; GtkWidget *toolbar;
GtkWidget *toolbar_recent_menu;
GtkWidget *menubar; GtkWidget *menubar;
XedToolbarSetting toolbar_style;
/* recent files */ /* recent files */
GtkActionGroup *recents_action_group; GtkActionGroup *recents_action_group;

View File

@ -393,34 +393,6 @@ disconnect_proxy_cb (GtkUIManager *manager,
} }
} }
static void
apply_toolbar_style (XedWindow *window,
GtkWidget *toolbar)
{
switch (window->priv->toolbar_style)
{
case XED_TOOLBAR_SYSTEM:
xed_debug_message (DEBUG_WINDOW, "XED: SYSTEM");
gtk_toolbar_unset_style (GTK_TOOLBAR(toolbar));
break;
case XED_TOOLBAR_ICONS:
xed_debug_message (DEBUG_WINDOW, "XED: ICONS");
gtk_toolbar_set_style (GTK_TOOLBAR(toolbar), GTK_TOOLBAR_ICONS);
break;
case XED_TOOLBAR_ICONS_AND_TEXT:
xed_debug_message (DEBUG_WINDOW, "XED: ICONS_AND_TEXT");
gtk_toolbar_set_style (GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH);
break;
case XED_TOOLBAR_ICONS_BOTH_HORIZ:
xed_debug_message (DEBUG_WINDOW, "XED: ICONS_BOTH_HORIZ");
gtk_toolbar_set_style (GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH_HORIZ);
break;
}
}
/* Returns TRUE if toolbar is visible */ /* Returns TRUE if toolbar is visible */
static gboolean static gboolean
set_toolbar_style (XedWindow *window, set_toolbar_style (XedWindow *window,
@ -456,20 +428,6 @@ set_toolbar_style (XedWindow *window,
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION(action), visible); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION(action), visible);
} }
/* Set style */
if (origin == NULL)
{
style = xed_prefs_manager_get_toolbar_buttons_style ();
}
else
{
style = origin->priv->toolbar_style;
}
window->priv->toolbar_style = style;
apply_toolbar_style (window, window->priv->toolbar);
return visible; return visible;
} }
@ -950,19 +908,6 @@ open_recent_file (const gchar *uri,
g_slist_free (uris); g_slist_free (uris);
} }
static void
recent_chooser_item_activated (GtkRecentChooser *chooser,
XedWindow *window)
{
gchar *uri;
uri = gtk_recent_chooser_get_current_uri (chooser);
open_recent_file (uri, window);
g_free (uri);
}
static void static void
recents_menu_activate (GtkAction *action, recents_menu_activate (GtkAction *action,
XedWindow *window) XedWindow *window)
@ -1116,13 +1061,6 @@ update_recent_files_menu (XedWindow *window)
g_list_free (items); g_list_free (items);
} }
static void
set_non_homogeneus (GtkWidget *widget,
gpointer data)
{
gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM(widget), FALSE);
}
static void static void
toolbar_visibility_changed (GtkWidget *toolbar, toolbar_visibility_changed (GtkWidget *toolbar,
XedWindow *window) XedWindow *window)
@ -1146,45 +1084,21 @@ toolbar_visibility_changed (GtkWidget *toolbar,
} }
static GtkWidget * static GtkWidget *
setup_toolbar_open_button (XedWindow *window, create_toolbar_button (GtkAction *action)
GtkWidget *toolbar)
{ {
GtkRecentManager *recent_manager; GtkWidget *button;
GtkRecentFilter *filter; GtkWidget *image;
GtkWidget *toolbar_recent_menu;
GtkToolItem *open_button;
GtkAction *action;
recent_manager = gtk_recent_manager_get_default (); button = gtk_button_new ();
image = gtk_image_new ();
/* recent files menu tool button */ gtk_button_set_image (GTK_BUTTON (button), image);
toolbar_recent_menu = gtk_recent_chooser_menu_new_for_manager (recent_manager); gtk_style_context_add_class (gtk_widget_get_style_context (button), "flat");
gtk_activatable_set_related_action (GTK_ACTIVATABLE (button), action);
gtk_button_set_label (GTK_BUTTON (button), NULL);
gtk_widget_set_tooltip_text (button, gtk_action_get_tooltip (action));
gtk_recent_chooser_set_local_only (GTK_RECENT_CHOOSER(toolbar_recent_menu), return button;
FALSE);
gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER(toolbar_recent_menu), GTK_RECENT_SORT_MRU);
gtk_recent_chooser_set_limit (GTK_RECENT_CHOOSER(toolbar_recent_menu), xed_prefs_manager_get_max_recents ());
filter = gtk_recent_filter_new ();
gtk_recent_filter_add_group (filter, "xed");
gtk_recent_chooser_set_filter (GTK_RECENT_CHOOSER(toolbar_recent_menu), filter);
g_signal_connect(toolbar_recent_menu, "item_activated", G_CALLBACK (recent_chooser_item_activated), window);
/* add the custom Open button to the toolbar */
open_button = gtk_menu_tool_button_new_from_stock (GTK_STOCK_OPEN);
gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON(open_button), toolbar_recent_menu);
gtk_tool_item_set_tooltip_text (open_button, _("Open a file"));
gtk_menu_tool_button_set_arrow_tooltip_text (GTK_MENU_TOOL_BUTTON(open_button), _("Open a recently used file"));
action = gtk_action_group_get_action (window->priv->always_sensitive_action_group, "FileOpen");
g_object_set (action, "short_label", _("Open"), NULL);
gtk_activatable_set_related_action (GTK_ACTIVATABLE(open_button), action);
gtk_toolbar_insert (GTK_TOOLBAR(toolbar), open_button, 1);
return toolbar_recent_menu;
} }
static void static void
@ -1197,6 +1111,11 @@ create_menu_bar_and_toolbar (XedWindow *window,
GtkRecentManager *recent_manager; GtkRecentManager *recent_manager;
GError *error = NULL; GError *error = NULL;
gchar *ui_file; gchar *ui_file;
GtkWidget *tool_item;
GtkWidget *tool_box;
GtkWidget *box;
GtkWidget *separator;
GtkWidget *button;
xed_debug (DEBUG_WINDOW); xed_debug (DEBUG_WINDOW);
@ -1223,16 +1142,6 @@ create_menu_bar_and_toolbar (XedWindow *window,
g_object_unref (action_group); g_object_unref (action_group);
window->priv->action_group = action_group; window->priv->action_group = action_group;
/* set short labels to use in the toolbar */
action = gtk_action_group_get_action (action_group, "FileSave");
g_object_set (action, "short_label", _("Save"), NULL);
action = gtk_action_group_get_action (action_group, "FilePrint");
g_object_set (action, "short_label", _("Print"), NULL);
action = gtk_action_group_get_action (action_group, "SearchFind");
g_object_set (action, "short_label", _("Find"), NULL);
action = gtk_action_group_get_action (action_group, "SearchReplace");
g_object_set (action, "short_label", _("Replace"), NULL);
action_group = gtk_action_group_new ("XedQuitWindowActions"); action_group = gtk_action_group_new ("XedQuitWindowActions");
gtk_action_group_set_translation_domain (action_group, NULL); gtk_action_group_set_translation_domain (action_group, NULL);
gtk_action_group_add_actions (action_group, xed_quit_menu_entries, G_N_ELEMENTS(xed_quit_menu_entries), window); gtk_action_group_add_actions (action_group, xed_quit_menu_entries, G_N_ELEMENTS(xed_quit_menu_entries), window);
@ -1302,17 +1211,82 @@ create_menu_bar_and_toolbar (XedWindow *window,
window->priv->menubar = gtk_ui_manager_get_widget (manager, "/MenuBar"); window->priv->menubar = gtk_ui_manager_get_widget (manager, "/MenuBar");
gtk_box_pack_start (GTK_BOX(main_box), window->priv->menubar, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX(main_box), window->priv->menubar, FALSE, FALSE, 0);
window->priv->toolbar = gtk_ui_manager_get_widget (manager, "/ToolBar"); window->priv->toolbar = gtk_toolbar_new ();
gtk_style_context_add_class (gtk_widget_get_style_context (window->priv->toolbar), gtk_style_context_add_class (gtk_widget_get_style_context (window->priv->toolbar), GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
gtk_box_pack_start (GTK_BOX(main_box), window->priv->toolbar, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX(main_box), window->priv->toolbar, FALSE, FALSE, 0);
tool_item = gtk_tool_item_new ();
gtk_tool_item_set_expand (GTK_TOOL_ITEM (tool_item), TRUE);
gtk_toolbar_insert (GTK_TOOLBAR (window->priv->toolbar), GTK_TOOL_ITEM (tool_item), 0);
tool_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_container_add (GTK_CONTAINER (tool_item), tool_box);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_pack_start (GTK_BOX (tool_box), box, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->always_sensitive_action_group, "FileNew");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->always_sensitive_action_group, "FileOpen");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "FileSave");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
gtk_box_pack_start (GTK_BOX (tool_box), separator, FALSE, FALSE, 0);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_pack_start (GTK_BOX (tool_box), box, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "EditUndo");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "EditRedo");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
gtk_box_pack_start (GTK_BOX (tool_box), separator, FALSE, FALSE, 0);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_pack_start (GTK_BOX (tool_box), box, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "EditCut");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "EditCopy");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "EditPaste");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
gtk_box_pack_start (GTK_BOX (tool_box), separator, FALSE, FALSE, 0);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_pack_start (GTK_BOX (tool_box), box, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "SearchFind");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "SearchReplace");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
gtk_widget_show_all (GTK_WIDGET (window->priv->toolbar));
set_toolbar_style (window, NULL); set_toolbar_style (window, NULL);
window->priv->toolbar_recent_menu = setup_toolbar_open_button (window, window->priv->toolbar);
gtk_container_foreach (GTK_CONTAINER(window->priv->toolbar), (GtkCallback) set_non_homogeneus, NULL);
g_signal_connect_after(G_OBJECT (window->priv->toolbar), "show", G_CALLBACK (toolbar_visibility_changed), window); g_signal_connect_after(G_OBJECT (window->priv->toolbar), "show", G_CALLBACK (toolbar_visibility_changed), window);
g_signal_connect_after(G_OBJECT (window->priv->toolbar), "hide", G_CALLBACK (toolbar_visibility_changed), window); g_signal_connect_after(G_OBJECT (window->priv->toolbar), "hide", G_CALLBACK (toolbar_visibility_changed), window);
} }
@ -2404,16 +2378,16 @@ fullscreen_controls_show (XedWindow *window)
{ {
GdkScreen *screen; GdkScreen *screen;
GdkRectangle fs_rect; GdkRectangle fs_rect;
gint w, h; gint min_h, nat_h;
screen = gtk_window_get_screen (GTK_WINDOW(window)); screen = gtk_window_get_screen (GTK_WINDOW (window));
gdk_screen_get_monitor_geometry ( gdk_screen_get_monitor_geometry (
screen, gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (GTK_WIDGET(window))), screen, gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (GTK_WIDGET(window))),
&fs_rect); &fs_rect);
gtk_window_get_size (GTK_WINDOW(window->priv->fullscreen_controls), &w, &h); gtk_widget_get_preferred_height (window->priv->fullscreen_controls_container, &min_h, &nat_h);
gtk_window_resize (GTK_WINDOW(window->priv->fullscreen_controls), fs_rect.width, h); gtk_window_resize (GTK_WINDOW (window->priv->fullscreen_controls), fs_rect.width, nat_h);
gtk_window_move (GTK_WINDOW(window->priv->fullscreen_controls), fs_rect.x, fs_rect.y - h + 1); gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls), fs_rect.x, fs_rect.y - nat_h + 1);
gtk_widget_show_all (window->priv->fullscreen_controls); gtk_widget_show_all (window->priv->fullscreen_controls);
} }
@ -2544,9 +2518,11 @@ static void
fullscreen_controls_build (XedWindow *window) fullscreen_controls_build (XedWindow *window)
{ {
XedWindowPrivate *priv = window->priv; XedWindowPrivate *priv = window->priv;
GtkWidget *toolbar;
GtkWidget *toolbar_recent_menu;
GtkAction *action; GtkAction *action;
GtkWidget *box;
GtkWidget *fullscreen_btn;
GtkWidget *separator;
GtkWidget *button;
if (priv->fullscreen_controls != NULL) if (priv->fullscreen_controls != NULL)
{ {
@ -2557,19 +2533,69 @@ fullscreen_controls_build (XedWindow *window)
gtk_window_set_transient_for (GTK_WINDOW(priv->fullscreen_controls), &window->window); gtk_window_set_transient_for (GTK_WINDOW(priv->fullscreen_controls), &window->window);
/* popup toolbar */ window->priv->fullscreen_controls_container = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
toolbar = gtk_ui_manager_get_widget (priv->manager, "/FullscreenToolBar"); gtk_container_set_border_width (GTK_CONTAINER (window->priv->fullscreen_controls_container), 6);
gtk_container_add (GTK_CONTAINER(priv->fullscreen_controls), toolbar); gtk_container_add (GTK_CONTAINER (priv->fullscreen_controls), window->priv->fullscreen_controls_container);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_widget_set_vexpand (box, FALSE);
gtk_box_pack_start (GTK_BOX (window->priv->fullscreen_controls_container), box, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->always_sensitive_action_group, "FileNew");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->always_sensitive_action_group, "FileOpen");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "FileSave");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
gtk_box_pack_start (GTK_BOX (box), separator, FALSE, FALSE, 6);
action = gtk_action_group_get_action (window->priv->action_group, "EditUndo");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "EditRedo");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
gtk_box_pack_start (GTK_BOX (box), separator, FALSE, FALSE, 6);
action = gtk_action_group_get_action (window->priv->action_group, "EditCut");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "EditCopy");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "EditPaste");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
gtk_box_pack_start (GTK_BOX (box), separator, FALSE, FALSE, 6);
action = gtk_action_group_get_action (window->priv->action_group, "SearchFind");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (window->priv->action_group, "SearchReplace");
button = create_toolbar_button (action);
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
action = gtk_action_group_get_action (priv->always_sensitive_action_group, "LeaveFullscreen"); action = gtk_action_group_get_action (priv->always_sensitive_action_group, "LeaveFullscreen");
g_object_set (action, "is-important", TRUE, NULL); g_object_set (action, "is-important", TRUE, NULL);
fullscreen_btn = create_toolbar_button (action);
gtk_box_pack_end (GTK_BOX (box), fullscreen_btn, FALSE, FALSE, 0);
toolbar_recent_menu = setup_toolbar_open_button (window, toolbar); gtk_widget_show_all (window->priv->fullscreen_controls_container);
gtk_container_foreach (GTK_CONTAINER(toolbar), (GtkCallback) set_non_homogeneus, NULL);
/* Set the toolbar style */
gtk_toolbar_set_style (GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH_HORIZ);
g_signal_connect(priv->fullscreen_controls, "enter-notify-event", g_signal_connect(priv->fullscreen_controls, "enter-notify-event",
G_CALLBACK (on_fullscreen_controls_enter_notify_event), window); G_CALLBACK (on_fullscreen_controls_enter_notify_event), window);