ModestWindowPrivate *parent_priv;
GtkAction *action;
gboolean active;
-
+ GtkTreeSelection *sel;
+ GList *rows, *list;
+
g_return_if_fail (MODEST_IS_MAIN_WINDOW (self));
priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
g_signal_handlers_unblock_by_func (action, modest_ui_actions_toggle_folders_view, self);
}
+ /* We need to store the selection because it's lost when the
+ widget is reparented */
+ sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->header_view));
+ rows = gtk_tree_selection_get_selected_rows (sel, NULL);
+
priv->style = style;
switch (style) {
case MODEST_MAIN_WINDOW_STYLE_SIMPLE:
break;
default:
+ g_list_foreach (rows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free (rows);
g_return_if_reached ();
}
+ /* Reselect the previously selected folders. We disable the
+ dimming rules execution during that time because there is
+ no need to work out it again and it could take a lot of
+ time if all the headers are selected */
+ list = rows;
+ modest_window_disable_dimming (MODEST_WINDOW (self));
+ while (list) {
+ gtk_tree_selection_select_path (sel, (GtkTreePath *) list->data);
+ list = g_list_next (list);
+ }
+ modest_window_enable_dimming (MODEST_WINDOW (self));
+
+ /* Free */
+ g_list_foreach (rows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free (rows);
+
/* Let header view grab the focus if it's being shown */
if (priv->contents_style == MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS)
gtk_widget_grab_focus (GTK_WIDGET (priv->header_view));
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)
{
}
}
-void vadj_changed (GtkAdjustment *adj,
- ModestMsgEditWindow *window)
+static void
+vadj_changed (GtkAdjustment *adj,
+ ModestMsgEditWindow *window)
{
ModestMsgEditWindowPrivate *priv;
}
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;
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
/* signals */
enum {
ACTIVATE_SIGNAL,
+ DELETE_SIGNAL,
LAST_SIGNAL
};
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;
}
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;
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);