diff options
| author | Konstantin Unruh <[email protected]> | 2020-03-08 18:19:54 +0100 | 
|---|---|---|
| committer | ZenWalker <[email protected]> | 2020-03-13 22:19:17 +0100 | 
| commit | 035b79a2dc47e1a252e6ccb9b512723584cd8e5e (patch) | |
| tree | 1d3c34c39de041feaeecd17c458566e48d911991 /gsearchtool/src | |
| parent | d6f787e683cbd59ec654b4adb70846289f592951 (diff) | |
| download | mate-utils-035b79a2dc47e1a252e6ccb9b512723584cd8e5e.tar.bz2 mate-utils-035b79a2dc47e1a252e6ccb9b512723584cd8e5e.tar.xz | |
gsearchtool: add copy path menu item to popup menu
only show copy path menu item when one row selected
remove unecessary check
add copy_path to gsearchtool-callbacks.h
Diffstat (limited to 'gsearchtool/src')
| -rw-r--r-- | gsearchtool/src/gsearchtool-callbacks.c | 43 | ||||
| -rw-r--r-- | gsearchtool/src/gsearchtool-callbacks.h | 3 | 
2 files changed, 46 insertions, 0 deletions
| diff --git a/gsearchtool/src/gsearchtool-callbacks.c b/gsearchtool/src/gsearchtool-callbacks.c index 11512b56..c716e5ca 100644 --- a/gsearchtool/src/gsearchtool-callbacks.c +++ b/gsearchtool/src/gsearchtool-callbacks.c @@ -664,6 +664,33 @@ open_folder_cb (GtkAction * action,  }  void +copy_path_cb (GtkAction * action, +              gpointer data) +{ +	GSearchWindow * gsearch = data; +	GtkTreeModel * model; +	GtkTreeIter iter; +	GList * list; +	gchar * locale_path; +	GtkClipboard* clipboard; + +	list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection), +						     &model); + +	gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter, +				 g_list_nth_data (list, 0)); + +	gtk_tree_model_get (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter, +			    COLUMN_LOCALE_FILE, &locale_path, +			    -1); +	clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); +	gtk_clipboard_set_text(clipboard, locale_path, -1); + +	g_free (locale_path); +	g_list_free_full (list, (GDestroyNotify) gtk_tree_path_free); +} + +void  file_changed_cb (GFileMonitor * handle,                   const gchar * monitor_uri,                   const gchar * info_uri, @@ -1208,6 +1235,22 @@ build_popup_menu_for_file (GSearchWindow * gsearch,  	                  G_CALLBACK (open_folder_cb),  	                  (gpointer) gsearch); +	/* Popup menu item: Copy Path */ +	if (gtk_tree_selection_count_selected_rows (GTK_TREE_SELECTION (gsearch->search_results_selection)) == 1) { +		new1 = gtk_image_menu_item_new_with_mnemonic  (_("Copy _Path")); +		gtk_container_add (GTK_CONTAINER (gsearch->search_results_popup_menu), new1); +		gtk_widget_show (new1); + +		image1 = gtk_image_new_from_icon_name ("edit-copy", GTK_ICON_SIZE_MENU); +		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (new1), image1); +		gtk_widget_show (image1); + +		g_signal_connect (G_OBJECT (new1), +		                  "activate", +		                  G_CALLBACK (copy_path_cb), +		                  (gpointer) gsearch); +	} +  	/* Popup menu item: Move to Trash */  	separatormenuitem1 = gtk_separator_menu_item_new ();  	gtk_container_add (GTK_CONTAINER (gsearch->search_results_popup_menu), separatormenuitem1); diff --git a/gsearchtool/src/gsearchtool-callbacks.h b/gsearchtool/src/gsearchtool-callbacks.h index b9db03a2..4ee01113 100644 --- a/gsearchtool/src/gsearchtool-callbacks.h +++ b/gsearchtool/src/gsearchtool-callbacks.h @@ -96,6 +96,9 @@ void  open_folder_cb (GtkAction * action,                  gpointer data);  void +copy_path_cb (GtkAction * action, +              gpointer data); +void  file_changed_cb (GFileMonitor * handle,                   const gchar * monitor_uri,                   const gchar * info_uri, | 
