* Fixes NB#87093, backspace deletes attachments from editor
authorSergio Villar Senin <svillar@igalia.com>
Wed, 23 Jul 2008 12:19:55 +0000 (12:19 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Wed, 23 Jul 2008 12:19:55 +0000 (12:19 +0000)
pmo-trunk-r5111

src/maemo/modest-msg-edit-window.c
src/widgets/modest-attachments-view.c
src/widgets/modest-attachments-view.h

index 09401e8..611f552 100644 (file)
@@ -173,8 +173,8 @@ static void text_buffer_mark_set (GtkTextBuffer *buffer,
                                  GtkTextIter *iter,
                                  GtkTextMark *mark,
                                  ModestMsgEditWindow *userdata);
-void vadj_changed (GtkAdjustment *adj, 
-                  ModestMsgEditWindow *window);
+static void vadj_changed (GtkAdjustment *adj, 
+                         ModestMsgEditWindow *window);
 
 static void DEBUG_BUFFER (WPTextBuffer *buffer)
 {
@@ -627,8 +627,9 @@ copy_clipboard_check (GtkTextView *text_view,
        }
 }
 
-void vadj_changed (GtkAdjustment *adj,
-                  ModestMsgEditWindow *window)
+static void 
+vadj_changed (GtkAdjustment *adj,
+             ModestMsgEditWindow *window)
 {
        ModestMsgEditWindowPrivate *priv;
 
@@ -641,6 +642,14 @@ void vadj_changed (GtkAdjustment *adj,
 }
 
 static void
+attachment_deleted (ModestAttachmentsView *attachments_view,
+                   gpointer user_data)
+{
+       modest_msg_edit_window_remove_attachments (MODEST_MSG_EDIT_WINDOW (user_data),
+                                                  NULL);
+}
+
+static void
 connect_signals (ModestMsgEditWindow *obj)
 {
        ModestMsgEditWindowPrivate *priv;
@@ -708,7 +717,7 @@ connect_signals (ModestMsgEditWindow *obj)
 
        g_signal_connect (G_OBJECT (priv->msg_body), "cut-clipboard", G_CALLBACK (cut_clipboard_check), NULL);
        g_signal_connect (G_OBJECT (priv->msg_body), "copy-clipboard", G_CALLBACK (copy_clipboard_check), NULL);
-
+       g_signal_connect (G_OBJECT (priv->attachments_view), "delete", G_CALLBACK (attachment_deleted), obj);
 }
 
 static void
index ab549ab..51a0408 100644 (file)
@@ -46,6 +46,7 @@ static GObjectClass *parent_class = NULL;
 /* signals */
 enum {
        ACTIVATE_SIGNAL,
+       DELETE_SIGNAL,
        LAST_SIGNAL
 };
 
@@ -355,6 +356,15 @@ modest_attachments_view_class_init (ModestAttachmentsViewClass *klass)
                              g_cclosure_marshal_VOID__OBJECT,
                              G_TYPE_NONE, 1, G_TYPE_OBJECT);
        
+       signals[DELETE_SIGNAL] =
+               g_signal_new ("delete",
+                             G_TYPE_FROM_CLASS (object_class),
+                             G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                             G_STRUCT_OFFSET(ModestAttachmentsViewClass, delete),
+                             NULL, NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                             G_TYPE_NONE, 0);
+
        return;
 }
 
@@ -611,6 +621,11 @@ key_press_event (GtkWidget *widget,
                return TRUE;
        }
 
+       if (event->keyval == GDK_BackSpace) {
+               g_signal_emit (G_OBJECT (widget), signals[DELETE_SIGNAL], 0);
+               return TRUE;
+       }
+
        /* Activates selected item */
        if (g_list_length (priv->selected) == 1) {
                ModestAttachmentView *att_view = (ModestAttachmentView *) priv->selected->data;
index 2bad760..6e7872f 100644 (file)
@@ -60,6 +60,7 @@ struct _ModestAttachmentsViewClass
        GtkEventBoxClass parent_class;
 
        void (*activate)           (ModestAttachmentsView *attachments_view, TnyMimePart *mime_part);
+       void (*delete)             (ModestAttachmentsView *attachments_view, TnyMimePart *mime_part);
 };
 
 GType modest_attachments_view_get_type (void);