* Properly set/unset filters when changing between edit modes
authorSergio Villar Senin <svillar@igalia.com>
Tue, 20 Jan 2009 16:55:40 +0000 (16:55 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Tue, 20 Jan 2009 16:55:40 +0000 (16:55 +0000)
pmo-trunk-r7204

src/hildon2/modest-folder-window.c
src/hildon2/modest-hildon2-window.c
src/hildon2/modest-hildon2-window.h
src/modest-marshal.list
src/widgets/modest-folder-view.c

index 869b5ed..f587eda 100644 (file)
@@ -82,6 +82,7 @@ static void modest_folder_window_pack_toolbar (ModestHildon2Window *self,
                                               GtkWidget *toolbar);
 static void edit_mode_changed (ModestFolderWindow *folder_window,
                               gint edit_mode_id,
+                              gboolean enabled,
                               ModestFolderWindow *self);
 
 typedef struct _ModestFolderWindowPrivate ModestFolderWindowPrivate;
@@ -469,6 +470,7 @@ modest_folder_window_pack_toolbar (ModestHildon2Window *self,
 static void 
 edit_mode_changed (ModestFolderWindow *folder_window,
                   gint edit_mode_id,
+                  gboolean enabled,
                   ModestFolderWindow *self)
 {
        ModestFolderWindowPrivate *priv;
@@ -492,5 +494,10 @@ edit_mode_changed (ModestFolderWindow *folder_window,
                break;
        }
 
-       modest_folder_view_set_filter (MODEST_FOLDER_VIEW (priv->folder_view), filter);
+       if (enabled)
+               modest_folder_view_set_filter (MODEST_FOLDER_VIEW (priv->folder_view), 
+                                              filter);
+       else
+               modest_folder_view_unset_filter (MODEST_FOLDER_VIEW (priv->folder_view), 
+                                                filter);
 }
index 7e6f394..877910a 100644 (file)
@@ -30,6 +30,7 @@
 #include <hildon/hildon-banner.h>
 #include <modest-platform.h>
 #include <hildon/hildon-program.h>
+#include "modest-marshal.h"
 #include <modest-maemo-utils.h>
 #include <modest-defs.h>
 #include <modest-ui-dimming-rules.h>
@@ -148,8 +149,8 @@ modest_hildon2_window_class_init (gpointer klass, gpointer class_data)
                              G_SIGNAL_RUN_FIRST,
                              G_STRUCT_OFFSET (ModestHildon2WindowClass, edit_mode_changed),
                              NULL, NULL,
-                             g_cclosure_marshal_VOID__INT,
-                             G_TYPE_NONE, 1, G_TYPE_INT);
+                             modest_marshal_VOID__INT_BOOLEAN,
+                             G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_BOOLEAN);
 
        g_type_class_add_private (gobject_class, sizeof(ModestHildon2WindowPrivate));
        
@@ -412,8 +413,7 @@ modest_hildon2_window_set_edit_mode (ModestHildon2Window *self,
        gtk_window_fullscreen (GTK_WINDOW (self));
 
        g_signal_emit (G_OBJECT (self), signals[EDIT_MODE_CHANGED_SIGNAL], 0,
-                      priv->edit_command);
-                      
+                      priv->edit_command, priv->edit_mode);
 }
 
 void 
@@ -431,7 +431,6 @@ modest_hildon2_window_unset_edit_mode (ModestHildon2Window *self)
 
        if (priv->edit_mode) {
                priv->edit_mode = FALSE;
-               priv->edit_command = MODEST_HILDON2_WINDOW_EDIT_MODE_NONE;
                if (priv->current_edit_tree_view) {
                        g_object_set (G_OBJECT (priv->current_edit_tree_view), 
                                      "hildon-ui-mode", HILDON_UI_MODE_NORMAL, 
@@ -441,8 +440,8 @@ modest_hildon2_window_unset_edit_mode (ModestHildon2Window *self)
                }
                gtk_window_unfullscreen (GTK_WINDOW (self));
                g_signal_emit (G_OBJECT (self), signals[EDIT_MODE_CHANGED_SIGNAL], 0,
-                              priv->edit_command);
-                      
+                              priv->edit_command, priv->edit_mode);
+               priv->edit_command = MODEST_HILDON2_WINDOW_EDIT_MODE_NONE;
        }
 }
 
index 3c8f02e..0e41ce4 100644 (file)
@@ -56,7 +56,7 @@ struct _ModestHildon2WindowClass {
        ModestWindowClass parent_class;
 
        void (*pack_toolbar_func) (ModestHildon2Window *self, GtkPackType pack_type, GtkWidget *toolbar);
-       void (*edit_mode_changed) (ModestHildon2Window *self, gint edit_mode);
+       void (*edit_mode_changed) (ModestHildon2Window *self, gint edit_mode, gboolean enabled);
 };
 
 typedef void (*ModestHildon2AppMenuCallback) (GObject *control, gpointer userdata);
index 060ea05..e2272e2 100644 (file)
@@ -8,6 +8,7 @@ VOID:STRING,INT,INT
 VOID:STRING,BOOL
 VOID:STRING,POINTER,BOOL
 VOID:POINTER,INT
+VOID:INT,BOOL
 BOOL:STRING
 BOOL:STRING,OBJECT
 BOOL:ENUM,BOOL
index 868a6b1..0da3a04 100644 (file)
@@ -3522,7 +3522,7 @@ modest_folder_view_set_filter (ModestFolderView *self,
        g_return_if_fail (MODEST_IS_FOLDER_VIEW (self));
        priv = MODEST_FOLDER_VIEW_GET_PRIVATE (self);
 
-       priv->filter = filter;
+       priv->filter |= filter;
 
        filter_model = gtk_tree_view_get_model (GTK_TREE_VIEW (self));
        if (GTK_IS_TREE_MODEL_FILTER(filter_model)) {