fix bug 653231 (mainwin's handler problem when in quicksearch)
authorColin Leroy <colin@colino.net>
Fri, 13 Dec 2002 13:45:24 +0000 (13:45 +0000)
committerColin Leroy <colin@colino.net>
Fri, 13 Dec 2002 13:45:24 +0000 (13:45 +0000)
ChangeLog.claws
configure.in
src/mainwindow.c
src/mainwindow.h
src/summaryview.c

index 41d7dc07ccc48d034ef7752fc6f2f80421f2a489..a93ac303c07103dbf1d2ccf447668cd64488f6c2 100644 (file)
@@ -1,3 +1,13 @@
+2002-12-13 [colin]     0.8.6claws106
+
+       * src/summaryview.c
+               Disconnect sighandlers for mainwindow when
+               quicksearch has the focus
+               Fix bug #653231
+       * src/mainwindow.[ch]
+               Make key_pressed callback public, to be able
+               to disconnect it
+
 2002-12-13 [christoph] 0.8.6claws105
 
        * src/mh.c
index 5f74929b218ccfb0b1dea1889a3746868ce03812..00ef297e17ebc82572078ca053ab60fe13059790 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=8
 MICRO_VERSION=6
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=claws105
+EXTRA_VERSION=claws106
 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
 
 dnl set $target
index 53fd490167e78e0e9fdeeb86bed8145a23d42982..c07e01c93588e815cd68d503b79a45575263cd37 100644 (file)
@@ -488,10 +488,6 @@ static void scan_tree_func  (Folder        *folder,
                                  FolderItem    *item,
                                  gpointer       data);
                                  
-static void key_pressed (GtkWidget *widget, 
-                               GdkEventKey *event,
-                               gpointer data);
-
 static void toggle_work_offline_cb(MainWindow *mainwin, guint action, GtkWidget *widget);
 
 static void addr_harvest_cb     ( MainWindow  *mainwin,
@@ -890,7 +886,7 @@ MainWindow *main_window_create(SeparateType type)
                           GTK_SIGNAL_FUNC(main_window_close_cb), mainwin);
        MANAGE_WINDOW_SIGNALS_CONNECT(window);
        gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                               GTK_SIGNAL_FUNC(key_pressed), mainwin);
+                               GTK_SIGNAL_FUNC(mainwindow_key_pressed), mainwin);
 
        gtk_widget_realize(window);
        gtk_widget_add_events(window, GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK);
@@ -3507,7 +3503,8 @@ static void scan_tree_func(Folder *folder, FolderItem *item, gpointer data)
 #define BREAK_ON_MODIFIER_KEY() \
        if ((event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) != 0) break
 
-static void key_pressed (GtkWidget *widget, GdkEventKey *event,        gpointer data)
+void mainwindow_key_pressed (GtkWidget *widget, GdkEventKey *event,
+                                   gpointer data)
 {
        MainWindow *mainwin = (MainWindow*) data;
        
index a3191d41ab85baf529b78bcd0260ef8c2e714311..7ce0021467285bd62b875b64f8202fee4b8ad24f 100644 (file)
@@ -175,4 +175,8 @@ void main_window_destroy_all                  (void);
 void main_window_toggle_work_offline          (MainWindow        *mainwin, 
                                                gboolean           offline);
 
+/* public so it can be disabled from summaryview */
+void mainwindow_key_pressed                  (GtkWidget         *widget, 
+                                              GdkEventKey       *event,
+                                              gpointer           data);
 #endif /* __MAINWINDOW_H__ */
index 72ea7d288c7ee42192211077e2b64669252e3041..93323ee3a13543c0188613f4e66af6d408d974eb 100644 (file)
@@ -266,6 +266,9 @@ static void summary_key_pressed             (GtkWidget              *ctree,
 static void summary_searchbar_pressed  (GtkWidget              *ctree,
                                         GdkEventKey            *event,
                                         SummaryView            *summaryview);
+static void summary_searchbar_focus_evt        (GtkWidget              *ctree,
+                                        GdkEventFocus          *event,
+                                        SummaryView            *summaryview);
 static void summary_searchtype_changed (GtkMenuItem            *widget, 
                                         gpointer                data);
 static void summary_open_row           (GtkSCTree              *sctree,
@@ -588,6 +591,14 @@ SummaryView *summary_create(void)
                           GTK_SIGNAL_FUNC(summary_searchbar_pressed),
                           summaryview);
 
+       gtk_signal_connect(GTK_OBJECT(search_string), "focus_in_event",
+                          GTK_SIGNAL_FUNC(summary_searchbar_focus_evt),
+                          summaryview);
+
+       gtk_signal_connect(GTK_OBJECT(search_string), "focus_out_event",
+                          GTK_SIGNAL_FUNC(summary_searchbar_focus_evt),
+                          summaryview);
+
        gtk_signal_connect (GTK_OBJECT(toggle_search), "toggled",
                         GTK_SIGNAL_FUNC(tog_searchbar_cb), summaryview);
 
@@ -4675,6 +4686,19 @@ static void summary_searchbar_pressed(GtkWidget *widget, GdkEventKey *event,
                summary_show(summaryview, summaryview->folder_item);
 }
 
+static void summary_searchbar_focus_evt(GtkWidget *widget, GdkEventFocus *event,
+                               SummaryView *summaryview)
+{
+       if (event != NULL && event->in)
+               gtk_signal_handler_block_by_func(GTK_OBJECT(summaryview->mainwin->window), 
+                                                GTK_SIGNAL_FUNC(mainwindow_key_pressed),
+                                                summaryview->mainwin);
+       else
+               gtk_signal_handler_unblock_by_func(GTK_OBJECT(summaryview->mainwin->window), 
+                                                  GTK_SIGNAL_FUNC(mainwindow_key_pressed),
+                                                  summaryview->mainwin);
+}
+
 static void summary_searchtype_changed(GtkMenuItem *widget, gpointer data)
 {
        SummaryView *sw = (SummaryView *)data;