1
0
mirror of https://github.com/GNOME/gedit synced 2024-07-08 00:10:44 +00:00

Allow to drag files from the pane.

2006-12-01  Paolo Borelli  <pborelli@katamail.com>

	* gedit/plugins/filebrowser/gedit-file-browser-store.c:
	* gedit/plugins/filebrowser/gedit-file-browser-view.c:

	Allow to drag files from the pane.
This commit is contained in:
Paolo Borelli 2006-12-01 12:51:03 +00:00 committed by Paolo Borelli
parent d1b414217d
commit 0552b5dce1
3 changed files with 82 additions and 11 deletions

View File

@ -1,3 +1,10 @@
2006-12-01 Paolo Borelli <pborelli@katamail.com>
* gedit/plugins/filebrowser/gedit-file-browser-store.c:
* gedit/plugins/filebrowser/gedit-file-browser-view.c:
Allow to drag files from the pane.
2006-12-01 Paolo Borelli <pborelli@katamail.com>
* gedit/gedit-document-loader.c: proper error reporting when

View File

@ -111,41 +111,41 @@ static GtkTreeModelFlags gedit_file_browser_store_get_flags (GtkTreeModel * tree
static gint gedit_file_browser_store_get_n_columns (GtkTreeModel * tree_model);
static GType gedit_file_browser_store_get_column_type (GtkTreeModel * tree_model,
gint index);
static gboolean gedit_file_browser_store_get_iter (GtkTreeModel * tree_model,
GtkTreeIter * iter,
GtkTreePath * path);
static GtkTreePath *gedit_file_browser_store_get_path (GtkTreeModel * tree_model,
GtkTreeIter * iter);
static void gedit_file_browser_store_get_value (GtkTreeModel * tree_model,
GtkTreeIter * iter,
gint column,
GValue * value);
static gboolean gedit_file_browser_store_iter_next (GtkTreeModel * tree_model,
GtkTreeIter * iter);
static gboolean gedit_file_browser_store_iter_children (GtkTreeModel * tree_model,
GtkTreeIter * iter,
GtkTreeIter * parent);
static gboolean gedit_file_browser_store_iter_has_child (GtkTreeModel * tree_model,
GtkTreeIter * iter);
static gint gedit_file_browser_store_iter_n_children (GtkTreeModel * tree_model,
GtkTreeIter * iter);
static gboolean gedit_file_browser_store_iter_nth_child (GtkTreeModel * tree_model,
GtkTreeIter * iter,
GtkTreeIter * parent,
gint n);
static gboolean gedit_file_browser_store_iter_parent (GtkTreeModel * tree_model,
GtkTreeIter * iter,
GtkTreeIter * child);
static void gedit_file_browser_store_drag_source_init (GtkTreeDragSourceIface * iface);
static gboolean gedit_file_browser_store_row_draggable (GtkTreeDragSource * drag_source,
GtkTreePath * path);
static gboolean gedit_file_browser_store_drag_data_delete (GtkTreeDragSource * drag_source,
GtkTreePath * path);
static gboolean gedit_file_browser_store_drag_data_get (GtkTreeDragSource * drag_source,
GtkTreePath * path,
GtkSelectionData * selection_data);
static void file_browser_node_free (GeditFileBrowserStore * model,
FileBrowserNode * node);
static void model_add_node (GeditFileBrowserStore * model,
@ -170,7 +170,9 @@ static void on_directory_monitor_event (GnomeVFSMonitorHand
GEDIT_PLUGIN_DEFINE_TYPE_WITH_CODE (GeditFileBrowserStore, gedit_file_browser_store,
G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL,
gedit_file_browser_store_iface_init))
gedit_file_browser_store_iface_init)
G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_DRAG_SOURCE,
gedit_file_browser_store_drag_source_init))
/* Properties */
enum {
@ -346,6 +348,14 @@ gedit_file_browser_store_iface_init (GtkTreeModelIface * iface)
iface->iter_parent = gedit_file_browser_store_iter_parent;
}
static void
gedit_file_browser_store_drag_source_init (GtkTreeDragSourceIface * iface)
{
iface->row_draggable = gedit_file_browser_store_row_draggable;
iface->drag_data_delete = gedit_file_browser_store_drag_data_delete;
iface->drag_data_get = gedit_file_browser_store_drag_data_get;
}
static void
gedit_file_browser_store_init (GeditFileBrowserStore * obj)
{
@ -809,6 +819,50 @@ gedit_file_browser_store_iter_parent (GtkTreeModel * tree_model,
return TRUE;
}
static gboolean
gedit_file_browser_store_row_draggable (GtkTreeDragSource * drag_source,
GtkTreePath * path)
{
return TRUE;
}
static gboolean
gedit_file_browser_store_drag_data_delete (GtkTreeDragSource * drag_source,
GtkTreePath * path)
{
return FALSE;
}
static gboolean
gedit_file_browser_store_drag_data_get (GtkTreeDragSource * drag_source,
GtkTreePath * path,
GtkSelectionData * selection_data)
{
GtkTreeIter iter;
gchar *uri;
gchar *uris[2] = {0, };
gboolean ret;
if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (drag_source),
&iter, path))
{
return FALSE;
}
gtk_tree_model_get (GTK_TREE_MODEL (drag_source), &iter,
GEDIT_FILE_BROWSER_STORE_COLUMN_URI, &uri,
-1);
g_assert (uri);
uris[0] = uri;
ret = gtk_selection_data_set_uris (selection_data, uris);
g_free (uri);
return ret;
}
#define FILTER_HIDDEN(mode) (mode & GEDIT_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN)
#define FILTER_BINARY(mode) (mode & GEDIT_FILE_BROWSER_STORE_FILTER_MODE_HIDE_BINARY)

View File

@ -42,7 +42,7 @@ struct _GeditFileBrowserViewPrivate
};
/* Signals */
enum
enum
{
ERROR,
NUM_SIGNALS
@ -50,6 +50,10 @@ enum
static guint signals[NUM_SIGNALS] = { 0 };
static const GtkTargetEntry drag_source_targets[] = {
{ "text/uri-list", 0, 0 }
};
GEDIT_PLUGIN_DEFINE_TYPE (GeditFileBrowserView, gedit_file_browser_view,
GTK_TYPE_TREE_VIEW)
@ -256,6 +260,12 @@ gedit_file_browser_view_init (GeditFileBrowserView * obj)
gtk_tree_view_append_column (GTK_TREE_VIEW (obj),
obj->priv->column);
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (obj), FALSE);
gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW (obj),
GDK_BUTTON1_MASK,
drag_source_targets,
G_N_ELEMENTS (drag_source_targets),
GDK_ACTION_COPY);
}
static gboolean