SF.net SVN: geany:[3615] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Mon Mar 2 20:34:31 UTC 2009
Revision: 3615
http://geany.svn.sourceforge.net/geany/?rev=3615&view=rev
Author: eht16
Date: 2009-03-02 20:34:31 +0000 (Mon, 02 Mar 2009)
Log Message:
-----------
Disable the default tab bar menu for the main notebook widget and use a custom menu instead which lists all open files as usual plus 'Close Other Documents' and 'Close All' menu items.
Remove GeanyDocumentPrivate::tabmenu_label.
Modified Paths:
--------------
trunk/ChangeLog
trunk/geany.glade
trunk/src/document.c
trunk/src/documentprivate.h
trunk/src/interface.c
trunk/src/notebook.c
trunk/src/ui_utils.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-03-02 20:34:06 UTC (rev 3614)
+++ trunk/ChangeLog 2009-03-02 20:34:31 UTC (rev 3615)
@@ -4,6 +4,12 @@
Adjust minimum required GTK version.
* src/Makefile.am, wscript:
Add main.h to the list of installed header files.
+ * geany.glade, src/document.c, src/documentprivate.h, src/interface.c,
+ src/notebook.c, src/ui_utils.c:
+ Remove GeanyDocumentPrivate::tabmenu_label.
+ Disable the default tab bar menu for the main notebook widget and
+ use a custom menu instead which lists all open files as usual plus
+ 'Close Other Documents' and 'Close All' menu items.
2009-02-27 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/geany.glade
===================================================================
--- trunk/geany.glade 2009-03-02 20:34:06 UTC (rev 3614)
+++ trunk/geany.glade 2009-03-02 20:34:31 UTC (rev 3615)
@@ -1766,7 +1766,7 @@
<property name="show_border">True</property>
<property name="tab_pos">GTK_POS_TOP</property>
<property name="scrollable">True</property>
- <property name="enable_popup">True</property>
+ <property name="enable_popup">False</property>
<signal name="switch_page" handler="on_notebook1_switch_page_after" after="yes" last_modification_time="Fri, 26 May 2006 11:47:25 GMT"/>
</widget>
<packing>
Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c 2009-03-02 20:34:06 UTC (rev 3614)
+++ trunk/src/document.c 2009-03-02 20:34:31 UTC (rev 3615)
@@ -296,7 +296,6 @@
parent = gtk_widget_get_parent(parent);
gtk_label_set_text(GTK_LABEL(doc->priv->tab_label), base_name);
- gtk_label_set_text(GTK_LABEL(doc->priv->tabmenu_label), base_name);
ui_widget_set_tooltip_text(parent, DOC_FILENAME(doc));
Modified: trunk/src/documentprivate.h
===================================================================
--- trunk/src/documentprivate.h 2009-03-02 20:34:06 UTC (rev 3614)
+++ trunk/src/documentprivate.h 2009-03-02 20:34:31 UTC (rev 3615)
@@ -61,8 +61,6 @@
{
/* GtkLabel shown in the notebook header. */
GtkWidget *tab_label;
- /* GtkLabel shown in the notebook right-click menu. */
- GtkWidget *tabmenu_label;
/* GtkTreeView object for this %document within the Symbols treeview of the sidebar. */
GtkWidget *tag_tree;
/* GtkTreeStore object for this %document within the Symbols treeview of the sidebar. */
Modified: trunk/src/interface.c
===================================================================
--- trunk/src/interface.c 2009-03-02 20:34:06 UTC (rev 3614)
+++ trunk/src/interface.c 2009-03-02 20:34:31 UTC (rev 3615)
@@ -1082,7 +1082,6 @@
gtk_widget_show (notebook1);
gtk_paned_pack2 (GTK_PANED (hpaned1), notebook1, TRUE, TRUE);
gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook1), TRUE);
- gtk_notebook_popup_enable (GTK_NOTEBOOK (notebook1));
scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_show (scrolledwindow1);
Modified: trunk/src/notebook.c
===================================================================
--- trunk/src/notebook.c 2009-03-02 20:34:06 UTC (rev 3614)
+++ trunk/src/notebook.c 2009-03-02 20:34:31 UTC (rev 3615)
@@ -179,6 +179,73 @@
}
+static void tab_bar_menu_activate_cb(GtkMenuItem *menuitem, gpointer data)
+{
+ GeanyDocument *doc = data;
+
+ if (! DOC_VALID(doc))
+ return;
+
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(main_widgets.notebook),
+ document_get_notebook_page(doc));
+}
+
+
+static GtkMenu *get_tab_bar_popup_menu(void)
+{
+ static GtkWidget *menu = NULL;
+ GtkWidget *menu_item, *menu_item_label;
+ const GdkColor *color;
+ GeanyDocument *doc;
+ guint i, len;
+ gchar *base_name;
+
+ if (menu == NULL)
+ menu = gtk_menu_new();
+
+ /* clear the old menu items */
+ gtk_container_foreach(GTK_CONTAINER(menu), (GtkCallback) gtk_widget_destroy, NULL);
+
+ len = gtk_notebook_get_n_pages(GTK_NOTEBOOK(main_widgets.notebook));
+ for (i = 0; i < len; i++)
+ {
+ doc = document_get_from_page(i);
+ if (! DOC_VALID(doc))
+ continue;
+
+ base_name = g_path_get_basename(doc->file_name);
+ menu_item = gtk_image_menu_item_new_with_label(base_name);
+ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item),
+ gtk_image_new_from_icon_name(GTK_STOCK_FILE, GTK_ICON_SIZE_MENU));
+ gtk_widget_show(menu_item);
+ gtk_container_add(GTK_CONTAINER(menu), menu_item);
+ g_signal_connect(menu_item, "activate", G_CALLBACK(tab_bar_menu_activate_cb), doc);
+
+ color = document_get_status_color(doc);
+ menu_item_label = gtk_bin_get_child(GTK_BIN(menu_item));
+ gtk_widget_modify_fg(menu_item_label, GTK_STATE_NORMAL, color);
+ gtk_widget_modify_fg(menu_item_label, GTK_STATE_ACTIVE, color);
+
+ g_free(base_name);
+ }
+ menu_item = gtk_separator_menu_item_new();
+ gtk_widget_show(menu_item);
+ gtk_container_add(GTK_CONTAINER(menu), menu_item);
+
+ menu_item = ui_image_menu_item_new(GTK_STOCK_CLOSE, _("Close Ot_her Documents"));
+ gtk_widget_show(menu_item);
+ gtk_container_add(GTK_CONTAINER(menu), menu_item);
+ g_signal_connect(menu_item, "activate", G_CALLBACK(on_close_other_documents1_activate), NULL);
+
+ menu_item = ui_image_menu_item_new(GTK_STOCK_CLOSE, _("C_lose All"));
+ gtk_widget_show(menu_item);
+ gtk_container_add(GTK_CONTAINER(menu), menu_item);
+ g_signal_connect(menu_item, "activate", G_CALLBACK(on_close_all1_activate), NULL);
+
+ return GTK_MENU(menu);
+}
+
+
static gboolean notebook_tab_bar_click_cb(GtkWidget *widget, GdkEventButton *event,
gpointer user_data)
{
@@ -195,6 +262,11 @@
return TRUE;
}
}
+ else if (event->button == 3)
+ {
+ gtk_menu_popup(get_tab_bar_popup_menu(), NULL, NULL,
+ NULL, NULL, event->button, event->time);
+ }
return FALSE;
}
@@ -452,17 +524,14 @@
gtk_widget_show_all(ebox);
- this->priv->tabmenu_label = gtk_label_new(NULL);
- gtk_misc_set_alignment(GTK_MISC(this->priv->tabmenu_label), 0.0, 0);
-
document_update_tab_label(this);
if (file_prefs.tab_order_ltr)
tabnum = gtk_notebook_append_page_menu(GTK_NOTEBOOK(main_widgets.notebook), page,
- ebox, this->priv->tabmenu_label);
+ ebox, NULL);
else
tabnum = gtk_notebook_insert_page_menu(GTK_NOTEBOOK(main_widgets.notebook), page,
- ebox, this->priv->tabmenu_label, 0);
+ ebox, NULL, 0);
tab_count_changed();
Modified: trunk/src/ui_utils.c
===================================================================
--- trunk/src/ui_utils.c 2009-03-02 20:34:06 UTC (rev 3614)
+++ trunk/src/ui_utils.c 2009-03-02 20:34:31 UTC (rev 3615)
@@ -1333,8 +1333,6 @@
/* NULL color will reset to default */
gtk_widget_modify_fg(doc->priv->tab_label, GTK_STATE_NORMAL, color);
gtk_widget_modify_fg(doc->priv->tab_label, GTK_STATE_ACTIVE, color);
- gtk_widget_modify_fg(doc->priv->tabmenu_label, GTK_STATE_NORMAL, color);
- gtk_widget_modify_fg(doc->priv->tabmenu_label, GTK_STATE_ACTIVE, color);
treeviews_openfiles_update(doc);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list