diff --git a/ChangeLog b/ChangeLog index 9ea3e757e..d54a3cc17 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-05-23 Enrico Tröger + + * src/vte.c: Added popup menu item: Change current working directory. + + 2007-05-23 Nick Treleaven * src/filetypes.c, src/symbols.c, tagmanager/parsers.h, diff --git a/src/vte.c b/src/vte.c index 5fa73b687..c0c04c57c 100644 --- a/src/vte.c +++ b/src/vte.c @@ -39,6 +39,7 @@ #include "prefs.h" #include "ui_utils.h" #include "utils.h" +#include "document.h" VteInfo vte_info; @@ -66,6 +67,14 @@ static void vte_popup_menu_clicked(GtkMenuItem *menuitem, gpointer user_data); static GtkWidget *vte_create_popup_menu(void); +enum +{ + POPUP_COPY, + POPUP_PASTE, + POPUP_CHANGEPATH, + POPUP_PREFERENCES +}; + /* taken from anjuta, thanks */ static gchar **vte_get_child_environment(void) { @@ -334,18 +343,25 @@ static void vte_popup_menu_clicked(GtkMenuItem *menuitem, gpointer user_data) { switch (GPOINTER_TO_INT(user_data)) { - case 0: + case POPUP_COPY: { if (vf->vte_terminal_get_has_selection(VTE_TERMINAL(vc->vte))) vf->vte_terminal_copy_clipboard(VTE_TERMINAL(vc->vte)); break; } - case 1: + case POPUP_PASTE: { vf->vte_terminal_paste_clipboard(VTE_TERMINAL(vc->vte)); break; } - case 2: + case POPUP_CHANGEPATH: + { + gint idx = document_get_cur_idx(); + if (DOC_IDX_VALID(idx)) + vte_cwd(doc_list[idx].file_name, TRUE); + break; + } + case POPUP_PREFERENCES: { GtkWidget *notebook; @@ -369,12 +385,17 @@ static GtkWidget *vte_create_popup_menu(void) item = gtk_image_menu_item_new_from_stock("gtk-copy", NULL); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); - g_signal_connect((gpointer)item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(0)); + g_signal_connect((gpointer)item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_COPY)); item = gtk_image_menu_item_new_from_stock("gtk-paste", NULL); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); - g_signal_connect((gpointer)item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(1)); + g_signal_connect((gpointer)item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_PASTE)); + + item = gtk_image_menu_item_new_with_label("Change current working directory"); + gtk_widget_show(item); + gtk_container_add(GTK_CONTAINER(menu), item); + g_signal_connect((gpointer)item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_CHANGEPATH)); item = gtk_separator_menu_item_new(); gtk_widget_show(item); @@ -383,7 +404,7 @@ static GtkWidget *vte_create_popup_menu(void) item = gtk_image_menu_item_new_from_stock("gtk-preferences", NULL); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); - g_signal_connect((gpointer)item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(2)); + g_signal_connect((gpointer)item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_PREFERENCES)); item = gtk_separator_menu_item_new(); gtk_widget_show(item);