1
0
forked from aniani/vim

updated for version 7.0f04

This commit is contained in:
Bram Moolenaar
2006-04-28 22:41:43 +00:00
parent 84c632670b
commit 8ea9123258
4 changed files with 125 additions and 114 deletions

View File

@@ -3138,36 +3138,35 @@ tabline_menu_handler(GtkMenuItem *item, gpointer user_data)
gtk_main_quit();
}
static void
add_tabline_menu_item(GtkWidget *menu, char_u *text, int resp)
{
GtkWidget *item;
char_u *utf_text;
utf_text = CONVERT_TO_UTF8(text);
item = gtk_menu_item_new_with_label((const char *)utf_text);
gtk_widget_show(item);
CONVERT_TO_UTF8_FREE(utf_text);
gtk_container_add(GTK_CONTAINER(menu), item);
gtk_signal_connect(GTK_OBJECT(item), "activate",
GTK_SIGNAL_FUNC(tabline_menu_handler),
(gpointer)resp);
}
/*
* Create a menu for the tab line.
*/
static GtkWidget *
create_tabline_menu(void)
{
GtkWidget *menu, *item;
GtkWidget *menu;
menu = gtk_menu_new();
item = gtk_menu_item_new_with_label(_("Close"));
gtk_widget_show(item);
gtk_container_add(GTK_CONTAINER(menu), item);
gtk_signal_connect(GTK_OBJECT(item), "activate",
GTK_SIGNAL_FUNC(tabline_menu_handler),
(gpointer)TABLINE_MENU_CLOSE);
item = gtk_menu_item_new_with_label(_("New tab"));
gtk_widget_show(item);
gtk_container_add(GTK_CONTAINER(menu), item);
gtk_signal_connect(GTK_OBJECT(item), "activate",
GTK_SIGNAL_FUNC(tabline_menu_handler),
(gpointer)TABLINE_MENU_NEW);
item = gtk_menu_item_new_with_label(_("Open Tab..."));
gtk_widget_show(item);
gtk_container_add(GTK_CONTAINER(menu), item);
gtk_signal_connect(GTK_OBJECT(item), "activate",
GTK_SIGNAL_FUNC(tabline_menu_handler),
(gpointer)TABLINE_MENU_OPEN);
add_tabline_menu_item(menu, (char_u *)_("Close"), TABLINE_MENU_CLOSE);
add_tabline_menu_item(menu, (char_u *)_("New tab"), TABLINE_MENU_NEW);
add_tabline_menu_item(menu, (char_u *)_("Open Tab..."), TABLINE_MENU_OPEN);
return menu;
}
@@ -3180,8 +3179,9 @@ on_tabline_menu(GtkWidget *widget, GdkEvent *event)
{
GdkEventButton *bevent = (GdkEventButton *)event;
int x = bevent->x;
GtkWidget *page;
GtkWidget *label;
int y = bevent->y;
GtkWidget *tabwidget;
GdkWindow *tabwin;
/* When ignoring events return TRUE so that the selected page doesn't
* change. */
@@ -3192,25 +3192,10 @@ on_tabline_menu(GtkWidget *widget, GdkEvent *event)
)
return TRUE;
/* Find out where the click was. */
for (clicked_page = 1; ; ++clicked_page)
{
page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(gui.tabline),
clicked_page - 1);
if (page == NULL)
{
/* Past all the labels, return zero. */
clicked_page = 0;
break;
}
label = gtk_notebook_get_tab_label(GTK_NOTEBOOK(gui.tabline), page);
/* The label size apparently doesn't include the spacing, estimate
* it by the page position. */
if (page->allocation.x * 2 + label->allocation.x
+ label->allocation.width + 1 >= x)
break;
}
tabwin = gdk_window_at_pointer(&x, &y);
gdk_window_get_user_data(tabwin, (gpointer)&tabwidget);
clicked_page = (int)(long)gtk_object_get_user_data(
GTK_OBJECT(tabwidget));
/* If the event was generated for 3rd button popup the menu. */
if (bevent->button == 3)
@@ -3306,6 +3291,7 @@ gui_mch_update_tabline(void)
GtkWidget *label;
tabpage_T *tp;
int nr = 0;
int tab_num;
int curtabidx = 0;
char_u *labeltext;
@@ -3320,6 +3306,8 @@ gui_mch_update_tabline(void)
if (tp == curtab)
curtabidx = nr;
tab_num = nr + 1;
page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(gui.tabline), nr);
if (page == NULL)
{
@@ -3329,11 +3317,8 @@ gui_mch_update_tabline(void)
event_box = gtk_event_box_new();
gtk_widget_show(event_box);
label = gtk_label_new("-Empty-");
#ifdef TABLINE_TOOLTIP
gtk_misc_set_padding(GTK_MISC(label), 2, 2);
gtk_container_add(GTK_CONTAINER(event_box), label);
#else
event_box = label;
#endif
gtk_widget_show(label);
gtk_notebook_insert_page(GTK_NOTEBOOK(gui.tabline),
page,
@@ -3342,23 +3327,18 @@ gui_mch_update_tabline(void)
}
event_box = gtk_notebook_get_tab_label(GTK_NOTEBOOK(gui.tabline), page);
#ifdef TABLINE_TOOLTIP
gtk_object_set_user_data(GTK_OBJECT(event_box), (gpointer)tab_num);
label = GTK_BIN(event_box)->child;
#else
label = event_box;
#endif
get_tabline_label(tp, FALSE);
labeltext = CONVERT_TO_UTF8(NameBuff);
gtk_label_set_text(GTK_LABEL(label), (const char *)labeltext);
CONVERT_TO_UTF8_FREE(labeltext);
#ifdef TABLINE_TOOLTIP
get_tabline_label(tp, TRUE);
labeltext = CONVERT_TO_UTF8(NameBuff);
gtk_tooltips_set_tip(GTK_TOOLTIPS(tabline_tooltip), event_box,
(const char *)labeltext, NULL);
CONVERT_TO_UTF8_FREE(labeltext);
#endif
}
/* Remove any old labels. */
@@ -3368,6 +3348,9 @@ gui_mch_update_tabline(void)
if (gtk_notebook_current_page(GTK_NOTEBOOK(gui.tabline)) != curtabidx)
gtk_notebook_set_page(GTK_NOTEBOOK(gui.tabline), curtabidx);
/* Make sure everything is in place before drawing text. */
gui_mch_update();
ignore_tabline_evt = FALSE;
}
@@ -3685,6 +3668,9 @@ gui_mch_init(void)
gtk_notebook_set_show_border(GTK_NOTEBOOK(gui.tabline), FALSE);
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gui.tabline), FALSE);
gtk_notebook_set_scrollable(GTK_NOTEBOOK(gui.tabline), TRUE);
# ifdef HAVE_GTK2
g_object_set(GTK_OBJECT(gui.tabline), "tab-border", 0, NULL);
# endif
tabline_tooltip = gtk_tooltips_new();
gtk_tooltips_enable(GTK_TOOLTIPS(tabline_tooltip));
@@ -3698,13 +3684,11 @@ gui_mch_init(void)
gtk_container_add(GTK_CONTAINER(gui.tabline), page);
label = gtk_label_new("-Empty-");
gtk_widget_show(label);
#ifdef TABLINE_TOOLTIP
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);
#else
event_box = label;
#endif
gtk_notebook_set_tab_label(GTK_NOTEBOOK(gui.tabline), page, event_box);
}
gtk_signal_connect(GTK_OBJECT(gui.tabline), "switch_page",