Hi,
Here is a patch that improves a bit notebook tabs with GTK2. It:
- Groups the creation of tab labels into one function (the code was
duplicated at two places before)
- Adds a file icon in front of the label
Here are some screenshots:
http://www.silent-blade.org/misc/gvim-notebook-before.png
http://www.silent-blade.org/misc/gvim-notebook-after.png
Comments are welcome :-)
--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---
--- Vim_orig/vim/src/gui_gtk_x11.c 2008-03-29 14:30:03.000000000 +0100
+++ Vim/vim/src/gui_gtk_x11.c 2008-04-30 19:56:10.000000000 +0200
@@ -3308,13 +3308,50 @@
}
/*
+ * Create a new label for the tabline
+ */
+ GtkWidget*
+gui_mch_create_label(void)
+{
+ GtkWidget *tab_box;
+ GtkWidget *label;
+
+#ifdef HAVE_GTK2
+ GtkWidget *icon;
+
+ tab_box = gtk_hbox_new(FALSE, 4);
+ gtk_widget_show(tab_box);
+
+ icon = gtk_image_new_from_stock(GTK_STOCK_FILE, GTK_ICON_SIZE_MENU);
+ gtk_widget_show(icon);
+ gtk_misc_set_padding(GTK_MISC(icon), 0, 2);
+ gtk_box_pack_start(GTK_BOX(tab_box), icon, FALSE, FALSE, 2);
+
+ label = gtk_label_new("-Empty-");
+ gtk_widget_show(label);
+ gtk_misc_set_padding(GTK_MISC(label), 0, 2);
+ gtk_box_pack_start(GTK_BOX(tab_box), label, TRUE, TRUE, 2);
+#else
+ tab_box = gtk_event_box_new();
+ gtk_widget_show(tab_box);
+ label = gtk_label_new("-Empty-");
+ gtk_misc_set_padding(GTK_MISC(label), 2, 2);
+ gtk_container_add(GTK_CONTAINER(tab_box), label);
+ gtk_widget_show(label);
+#endif
+
+ return tab_box;
+}
+
+
+/*
* Update the labels of the tabline.
*/
void
gui_mch_update_tabline(void)
{
GtkWidget *page;
- GtkWidget *event_box;
+ GtkWidget *tab_box;
GtkWidget *label;
tabpage_T *tp;
int nr = 0;
@@ -3341,21 +3378,29 @@
/* Add notebook page */
page = gtk_vbox_new(FALSE, 0);
gtk_widget_show(page);
- event_box = gtk_event_box_new();
- gtk_widget_show(event_box);
- label = gtk_label_new("-Empty-");
- gtk_misc_set_padding(GTK_MISC(label), 2, 2);
- gtk_container_add(GTK_CONTAINER(event_box), label);
- gtk_widget_show(label);
+ tab_box = gui_mch_create_label();
gtk_notebook_insert_page(GTK_NOTEBOOK(gui.tabline),
page,
- event_box,
+ tab_box,
nr++);
}
- event_box = gtk_notebook_get_tab_label(GTK_NOTEBOOK(gui.tabline), page);
- gtk_object_set_user_data(GTK_OBJECT(event_box), (gpointer)tab_num);
- label = GTK_BIN(event_box)->child;
+ tab_box = gtk_notebook_get_tab_label(GTK_NOTEBOOK(gui.tabline), page);
+ gtk_object_set_user_data(GTK_OBJECT(tab_box), (gpointer)tab_num);
+
+#ifdef HAVE_GTK2
+ {
+ GList *children;
+
+ children = gtk_container_get_children(GTK_CONTAINER(tab_box));
+ label = g_list_nth_data(children, 1);
+ g_list_free(children);
+ }
+#else
+ label = GTK_BIN(event_box)->child;
+#endif
+
+
get_tabline_label(tp, FALSE);
labeltext = CONVERT_TO_UTF8(NameBuff);
gtk_label_set_text(GTK_LABEL(label), (const char *)labeltext);
@@ -3363,7 +3408,7 @@
get_tabline_label(tp, TRUE);
labeltext = CONVERT_TO_UTF8(NameBuff);
- gtk_tooltips_set_tip(GTK_TOOLTIPS(tabline_tooltip), event_box,
+ gtk_tooltips_set_tip(GTK_TOOLTIPS(tabline_tooltip), tab_box,
(const char *)labeltext, NULL);
CONVERT_TO_UTF8_FREE(labeltext);
}
@@ -3701,20 +3746,16 @@
gtk_tooltips_enable(GTK_TOOLTIPS(tabline_tooltip));
{
- GtkWidget *page, *label, *event_box;
+ GtkWidget *page, *tab_box;
/* Add the first tab. */
page = gtk_vbox_new(FALSE, 0);
gtk_widget_show(page);
+ tab_box = gui_mch_create_label();
+
gtk_container_add(GTK_CONTAINER(gui.tabline), page);
- label = gtk_label_new("-Empty-");
- gtk_widget_show(label);
- event_box = gtk_event_box_new();
- gtk_widget_show(event_box);
- gtk_object_set_user_data(GTK_OBJECT(event_box), (gpointer)1);
- gtk_misc_set_padding(GTK_MISC(label), 2, 2);
- gtk_container_add(GTK_CONTAINER(event_box), label);
- gtk_notebook_set_tab_label(GTK_NOTEBOOK(gui.tabline), page, event_box);
+ gtk_object_set_user_data(GTK_OBJECT(tab_box), (gpointer)1);
+ gtk_notebook_set_tab_label(GTK_NOTEBOOK(gui.tabline), page, tab_box);
}
gtk_signal_connect(GTK_OBJECT(gui.tabline), "switch_page",