evince r3345 - in trunk: . shell



Author: carlosgc
Date: Sun Jan 18 09:41:32 2009
New Revision: 3345
URL: http://svn.gnome.org/viewvc/evince?rev=3345&view=rev

Log:
2009-01-17  Carlos Garcia Campos  <carlosgc gnome org>

	* shell/ev-view.c: (ev_view_drag_data_received),
	(ev_view_class_init), (ev_view_init):
	* shell/ev-window.c: (ev_window_drag_data_received),
	(ev_window_class_init), (ev_window_init):

	Make the whole EvWindow the destination of a drag and drop
	operation.

Modified:
   trunk/ChangeLog
   trunk/shell/ev-view.c
   trunk/shell/ev-window.c

Modified: trunk/shell/ev-view.c
==============================================================================
--- trunk/shell/ev-view.c	(original)
+++ trunk/shell/ev-view.c	Sun Jan 18 09:41:32 2009
@@ -28,7 +28,6 @@
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
 
-#include "ev-application.h"
 #include "ev-document-forms.h"
 #include "ev-document-images.h"
 #include "ev-document-links.h"
@@ -88,10 +87,6 @@
 	{ "UTF8_STRING", 0, TARGET_UTF8_STRING },
 };
 
-static const GtkTargetEntry view_drop_targets[] = {
-	{ "text/uri-list", 0, 0 }
-};
-
 static guint signals[N_SIGNALS];
 
 typedef enum {
@@ -2793,39 +2788,6 @@
 	return TRUE;
 }
 		     
-static void
-ev_view_drag_data_received (GtkWidget          *widget,
-			    GdkDragContext     *context,
-			    gint                x,
-			    gint                y,
-			    GtkSelectionData   *selection_data,
-			    guint               info,
-			    guint               time)
-{
-	gchar  **uris;
-	gint     i = 0;
-	GSList  *uri_list = NULL;
-
-	uris = gtk_selection_data_get_uris (selection_data);
-	if (!uris) {
-		gtk_drag_finish (context, FALSE, FALSE, time);
-		return;
-	}
-
-	for (i = 0; uris[i]; i++) {
-		uri_list = g_slist_prepend (uri_list, (gpointer) uris[i]);
-	}
-	
-	ev_application_open_uri_list (EV_APP, uri_list,
-				      gtk_widget_get_screen (widget),
-				      0);
-	gtk_drag_finish (context, TRUE, FALSE, time);
-	
-	g_strfreev (uris);
-	g_slist_free (uri_list);
-}
-
-
 static gboolean
 selection_update_idle_cb (EvView *view)
 {
@@ -3977,7 +3939,6 @@
 	widget_class->style_set = ev_view_style_set;
 	widget_class->drag_data_get = ev_view_drag_data_get;
 	widget_class->drag_motion = ev_view_drag_motion;
-	widget_class->drag_data_received = ev_view_drag_data_received;
 	widget_class->popup_menu = ev_view_popup_menu;
 	widget_class->query_tooltip = ev_view_query_tooltip;
 
@@ -4144,12 +4105,6 @@
 
 	gtk_layout_set_hadjustment (GTK_LAYOUT (view), NULL);
 	gtk_layout_set_vadjustment (GTK_LAYOUT (view), NULL);
-
-	gtk_drag_dest_set (GTK_WIDGET (view),
-			   GTK_DEST_DEFAULT_ALL,
-			   view_drop_targets,
-			   G_N_ELEMENTS (view_drop_targets),
-			   GDK_ACTION_COPY);
 }
 
 /*** Callbacks ***/

Modified: trunk/shell/ev-window.c
==============================================================================
--- trunk/shell/ev-window.c	(original)
+++ trunk/shell/ev-window.c	Sun Jan 18 09:41:32 2009
@@ -238,6 +238,10 @@
 	GTK_PRINT_SETTINGS_OUTPUT_URI
 };
 
+static const GtkTargetEntry ev_window_drop_targets[] = {
+	{ "text/uri-list", 0, 0 }
+};
+
 static void	ev_window_update_actions	 	(EvWindow         *ev_window);
 static void     ev_window_sidebar_visibility_changed_cb (EvSidebar        *ev_sidebar,
 							 GParamSpec       *pspec,
@@ -4684,6 +4688,40 @@
 }
 
 static void
+ev_window_drag_data_received (GtkWidget        *widget,
+			      GdkDragContext   *context,
+			      gint              x,
+			      gint              y,
+			      GtkSelectionData *selection_data,
+			      guint             info,
+			      guint             time)
+
+{
+	EvWindow *window = EV_WINDOW (widget);
+	gchar   **uris;
+	gint      i = 0;
+	GSList   *uri_list = NULL;
+
+	uris = gtk_selection_data_get_uris (selection_data);
+	if (!uris) {
+		gtk_drag_finish (context, FALSE, FALSE, time);
+		return;
+	}
+
+	for (i = 0; uris[i]; i++) {
+		uri_list = g_slist_prepend (uri_list, (gpointer) uris[i]);
+	}
+
+	ev_application_open_uri_list (EV_APP, uri_list,
+				      gtk_window_get_screen (GTK_WINDOW (window)),
+				      0);
+	gtk_drag_finish (context, TRUE, FALSE, time);
+
+	g_strfreev (uris);
+	g_slist_free (uri_list);
+}
+
+static void
 ev_window_finalize (GObject *object)
 {
 	GList *windows = ev_application_get_windows (EV_APP);
@@ -4899,6 +4937,7 @@
 
 	widget_class->screen_changed = ev_window_screen_changed;
 	widget_class->window_state_event = ev_window_state_event;
+	widget_class->drag_data_received = ev_window_drag_data_received;
 
 	g_type_class_add_private (g_object_class, sizeof (EvWindowPrivate));
 }
@@ -6194,6 +6233,13 @@
 
         ev_window_sizing_mode_changed_cb (EV_VIEW (ev_window->priv->view), NULL, ev_window);
 	ev_window_setup_action_sensitivity (ev_window);
+
+	/* Drag and Drop */
+	gtk_drag_dest_set (GTK_WIDGET (ev_window),
+			   GTK_DEST_DEFAULT_ALL,
+			   ev_window_drop_targets,
+			   G_N_ELEMENTS (ev_window_drop_targets),
+			   GDK_ACTION_COPY);
 }
 
 /**



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]