[evolution-patches] fix for busted dnd



this slightly reverts/changes a recent sun patch which broke dnd of
attachments from the mail display.

Index: mail/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/mail/ChangeLog,v
retrieving revision 1.2761.2.10
diff -u -3 -r1.2761.2.10 ChangeLog
--- mail/ChangeLog	1 Aug 2003 18:39:00 -0000	1.2761.2.10
+++ mail/ChangeLog	5 Aug 2003 17:50:30 -0000
@@ -1,3 +1,18 @@
+2003-08-05  Not Zed  <NotZed Ximian com>
+
+	** See bug #47224.  Hook onto clicked rather than button_pressed,
+	so that dnd works.
+	
+	* mail-display.c (inline_toggle): toggle a part inline.
+	(button_press): change back to only handle button clicked events,
+	renamed to inline_button_clicked.
+	(do_attachment_header): hook onto clicked rather than
+	button_press_event, and move key_press_event to
+	inline_button_pressed.
+	(do_signature): Same.
+	(inline_button_pressed): handle inline button key press event
+	explicitly.
+
 2003-07-29  Not Zed  <NotZed Ximian com>
 
 	* mail-folder-cache.c (mail_note_store): add a CamelOperation for
Index: mail/mail-display.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-display.c,v
retrieving revision 1.282.4.3
diff -u -3 -r1.282.4.3 mail-display.c
--- mail/mail-display.c	30 Jul 2003 12:58:43 -0000	1.282.4.3
+++ mail/mail-display.c	5 Aug 2003 17:50:35 -0000
@@ -434,24 +434,28 @@
 	mail_display_queue_redisplay (md);
 }
 
-static gboolean
-button_press (GtkWidget *widget, GdkEvent *event, CamelMimePart *part)
+static void
+inline_toggle(MailDisplay *md, CamelMimePart *part)
 {
-	MailDisplay *md;
-
-	if (event->type == GDK_BUTTON_PRESS)
-		g_signal_stop_emission_by_name (widget, "button_press_event");
-	else if (event->type == GDK_KEY_PRESS && event->key.keyval != GDK_Return)
-		return FALSE;
+	g_return_if_fail(md != NULL);
 
-	md = g_object_get_data ((GObject *) widget, "MailDisplay");
-	if (md == NULL) {
-		g_warning ("No MailDisplay on button!");
-		return TRUE;
-	}
-	
 	mail_part_toggle_displayed (part, md);
 	mail_display_queue_redisplay (md);
+}
+
+static void
+inline_button_clicked(GtkWidget *widget, CamelMimePart *part)
+{
+	inline_toggle((MailDisplay *)g_object_get_data((GObject *)widget, "MailDisplay"), part);
+}
+
+static gboolean
+inline_button_press(GtkWidget *widget, GdkEventKey *event, CamelMimePart *part)
+{
+	if (event->keyval != GDK_Return)
+		return FALSE;
+
+	inline_toggle((MailDisplay *)g_object_get_data((GObject *)widget, "MailDisplay"), part);
 
 	return TRUE;
 }
@@ -1018,8 +1022,8 @@
 	
 	handler = mail_lookup_handler (eb->type);
 	if (handler && handler->builtin) {
-		g_signal_connect (button, "button_press_event", G_CALLBACK (button_press), part);
-		g_signal_connect (button, "key_press_event", G_CALLBACK (button_press), part);
+		g_signal_connect (button, "clicked", G_CALLBACK (inline_button_clicked), part);
+		g_signal_connect (button, "key_press_event", G_CALLBACK (inline_button_press), part);
 	} else {
 		gtk_widget_set_sensitive (button, FALSE);
 		GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
@@ -1156,8 +1160,8 @@
 	
 	button = gtk_button_new ();
 	g_object_set_data ((GObject *) button, "MailDisplay", md);
-	g_signal_connect (button, "button_press_event", G_CALLBACK (button_press), part);
-	g_signal_connect (button, "key_press_event", G_CALLBACK (button_press), part);
+	g_signal_connect (button, "clicked", G_CALLBACK (inline_button_clicked), part);
+	g_signal_connect (button, "key_press_event", G_CALLBACK (inline_button_press), part);
 
 	gtk_container_add (GTK_CONTAINER (button), pbl->pixmap);
 	gtk_widget_show_all (button);


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