Merged from gtk-2-4:

2004-11-19  Federico Mena Quintero  <federico@ximian.com>

	Merged from gtk-2-4:

	Fix #158475:

	* gtk/gtkpathbar.c (make_directory_button): Make the button a drag
	source.
	(button_drag_data_get_cb): New callback to let us drag the
	button's path as a text/uri-list.
This commit is contained in:
Federico Mena Quintero 2004-11-20 04:52:57 +00:00 committed by Federico Mena Quintero
parent e44612e7da
commit 038236d42b
5 changed files with 85 additions and 0 deletions

View File

@ -1,3 +1,14 @@
2004-11-19 Federico Mena Quintero <federico@ximian.com>
Merged from gtk-2-4:
Fix #158475:
* gtk/gtkpathbar.c (make_directory_button): Make the button a drag
source.
(button_drag_data_get_cb): New callback to let us drag the
button's path as a text/uri-list.
2004-11-19 Federico Mena Quintero <federico@ximian.com>
Merged from gtk-2-4:

View File

@ -1,3 +1,14 @@
2004-11-19 Federico Mena Quintero <federico@ximian.com>
Merged from gtk-2-4:
Fix #158475:
* gtk/gtkpathbar.c (make_directory_button): Make the button a drag
source.
(button_drag_data_get_cb): New callback to let us drag the
button's path as a text/uri-list.
2004-11-19 Federico Mena Quintero <federico@ximian.com>
Merged from gtk-2-4:

View File

@ -1,3 +1,14 @@
2004-11-19 Federico Mena Quintero <federico@ximian.com>
Merged from gtk-2-4:
Fix #158475:
* gtk/gtkpathbar.c (make_directory_button): Make the button a drag
source.
(button_drag_data_get_cb): New callback to let us drag the
button's path as a text/uri-list.
2004-11-19 Federico Mena Quintero <federico@ximian.com>
Merged from gtk-2-4:

View File

@ -1,3 +1,14 @@
2004-11-19 Federico Mena Quintero <federico@ximian.com>
Merged from gtk-2-4:
Fix #158475:
* gtk/gtkpathbar.c (make_directory_button): Make the button a drag
source.
(button_drag_data_get_cb): New callback to let us drag the
button's path as a text/uri-list.
2004-11-19 Federico Mena Quintero <federico@ximian.com>
Merged from gtk-2-4:

View File

@ -24,6 +24,7 @@
#include "gtktogglebutton.h"
#include "gtkalignment.h"
#include "gtkarrow.h"
#include "gtkdnd.h"
#include "gtkimage.h"
#include "gtkintl.h"
#include "gtkicontheme.h"
@ -1067,6 +1068,34 @@ find_button_type (GtkPathBar *path_bar,
return NORMAL_BUTTON;
}
static void
button_drag_data_get_cb (GtkWidget *widget,
GdkDragContext *context,
GtkSelectionData *selection_data,
guint info,
guint time_,
gpointer data)
{
ButtonData *button_data;
GtkPathBar *path_bar;
char *uri;
char *uri_list;
button_data = data;
path_bar = GTK_PATH_BAR (widget->parent); /* the button's parent *is* the path bar */
uri = gtk_file_system_path_to_uri (path_bar->file_system, button_data->path);
uri_list = g_strconcat (uri, "\r\n", NULL);
g_free (uri);
gtk_selection_data_set (selection_data,
selection_data->target,
8,
uri_list,
strlen (uri_list));
g_free (uri_list);
}
static ButtonData *
make_directory_button (GtkPathBar *path_bar,
const char *dir_name,
@ -1074,6 +1103,10 @@ make_directory_button (GtkPathBar *path_bar,
gboolean current_dir,
gboolean file_is_hidden)
{
const GtkTargetEntry targets[] = {
{ "text/uri-list", 0, 0 }
};
GtkWidget *child = NULL;
GtkWidget *label_alignment = NULL;
ButtonData *button_data;
@ -1134,6 +1167,14 @@ make_directory_button (GtkPathBar *path_bar,
g_object_weak_ref (G_OBJECT (button_data->button),
(GWeakNotify) button_data_free, button_data);
gtk_drag_source_set (button_data->button,
GDK_BUTTON1_MASK,
targets,
G_N_ELEMENTS (targets),
GDK_ACTION_COPY);
g_signal_connect (button_data->button, "drag-data-get",
G_CALLBACK (button_drag_data_get_cb), button_data);
return button_data;
}