SF.net SVN: geany:[5448] branches/unstable

ntrel at users.sourceforge.net ntrel at xxxxx
Mon Nov 29 13:21:35 UTC 2010


Revision: 5448
          http://geany.svn.sourceforge.net/geany/?rev=5448&view=rev
Author:   ntrel
Date:     2010-11-29 13:21:35 +0000 (Mon, 29 Nov 2010)

Log Message:
-----------
Add 'Open in New Window' command in the notebook tab menu (based on
patch by Matthew Brush, thanks - #3118059).

Modified Paths:
--------------
    branches/unstable/ChangeLog
    branches/unstable/src/notebook.c

Modified: branches/unstable/ChangeLog
===================================================================
--- branches/unstable/ChangeLog	2010-11-29 12:48:33 UTC (rev 5447)
+++ branches/unstable/ChangeLog	2010-11-29 13:21:35 UTC (rev 5448)
@@ -1,3 +1,10 @@
+2010-11-29  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/notebook.c:
+   Add 'Open in New Window' command in the notebook tab menu (based on
+   patch by Matthew Brush, thanks - #3118059).
+
+
 2010-11-28  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * data/filetypes.cpp, data/filetypes.vala, data/filetypes.glsl,

Modified: branches/unstable/src/notebook.c
===================================================================
--- branches/unstable/src/notebook.c	2010-11-29 12:48:33 UTC (rev 5447)
+++ branches/unstable/src/notebook.c	2010-11-29 13:21:35 UTC (rev 5448)
@@ -193,10 +193,39 @@
 }
 
 
+static void on_open_in_new_window_activate(GtkMenuItem *menuitem, gpointer user_data)
+{
+	gchar *geany_path;
+	GeanyDocument *doc = user_data;
+
+	g_return_if_fail(doc->is_valid);
+
+	geany_path = g_find_program_in_path("geany");
+
+	if (geany_path)
+	{
+		gchar *doc_path = utils_get_locale_from_utf8(doc->file_name);
+		gchar *argv[] = {geany_path, "-i", doc_path, NULL};
+		GError *err = NULL;
+
+		if (!utils_spawn_async(NULL, argv, NULL, 0, NULL, NULL, NULL, &err))
+		{
+			g_printerr("Unable to open new window: %s", err->message);
+			g_error_free(err);
+		}
+		g_free(doc_path);
+		g_free(geany_path);
+	}
+	else
+		g_printerr("Unable to find 'geany'");
+}
+
+
 static void show_tab_bar_popup_menu(GdkEventButton *event)
 {
 	GtkWidget *menu_item;
 	static GtkWidget *menu = NULL;
+	GeanyDocument *doc = NULL;
 
 	if (menu == NULL)
 		menu = gtk_menu_new();
@@ -211,6 +240,20 @@
 	gtk_widget_show(menu_item);
 	gtk_container_add(GTK_CONTAINER(menu), menu_item);
 
+	doc = document_get_current();
+	menu_item = ui_image_menu_item_new(GTK_STOCK_OPEN, "Open in New _Window");
+	gtk_widget_show(menu_item);
+	gtk_container_add(GTK_CONTAINER(menu), menu_item);
+	g_signal_connect(menu_item, "activate",
+		G_CALLBACK(on_open_in_new_window_activate), doc);
+	/* disable if not on disk */
+	if (!doc->real_path)
+		gtk_widget_set_sensitive(menu_item, FALSE);
+
+	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);


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