Browse Source

Ticket #3731: add new MSG_CHANGED_FOCUS message.

This message is sent to widgets'owner when widget's focus state is
changed.

Find file dialog: fix initial draw of ignore directories input line.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Andrew Borodin 8 years ago
parent
commit
8550044635
4 changed files with 15 additions and 8 deletions
  1. 1 1
      lib/widget/widget-common.c
  2. 1 0
      lib/widget/widget-common.h
  3. 2 2
      src/editor/editcmd.c
  4. 11 5
      src/filemanager/find.c

+ 1 - 1
lib/widget/widget-common.c

@@ -315,7 +315,7 @@ widget_set_state (Widget * w, widget_state_t state, gboolean enable)
             {
                 send_message (w, NULL, MSG_DRAW, 0, NULL);
                 /* Notify owner that focus was moved from one widget to another */
-                send_message (w->owner, w, MSG_NOTIFY, (int) msg, NULL);
+                send_message (w->owner, w, MSG_CHANGED_FOCUS, 0, NULL);
             }
         }
         break;

+ 1 - 0
lib/widget/widget-common.h

@@ -30,6 +30,7 @@ typedef enum
     MSG_INIT = 0,               /* Initialize widget */
     MSG_FOCUS,                  /* Draw widget in focused state or widget has got focus */
     MSG_UNFOCUS,                /* Draw widget in unfocused state or widget has been unfocused */
+    MSG_CHANGED_FOCUS,          /* Notification to owner about focus state change */
     MSG_ENABLE,                 /* Change state to enabled */
     MSG_DISABLE,                /* Change state to disabled */
     MSG_DRAW,                   /* Draw widget on screen */

+ 2 - 2
src/editor/editcmd.c

@@ -150,8 +150,8 @@ edit_save_mode_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm
 {
     switch (msg)
     {
-    case MSG_NOTIFY:
-        if (sender != NULL && sender->id == edit_save_mode_radio_id && parm == (int) MSG_FOCUS)
+    case MSG_CHANGED_FOCUS:
+        if (sender != NULL && sender->id == edit_save_mode_radio_id)
         {
             Widget *ww;
 

+ 11 - 5
src/filemanager/find.c

@@ -422,6 +422,14 @@ find_check_regexp (const char *r)
 
 /* --------------------------------------------------------------------------------------------- */
 
+static void
+find_toggle_enable_ignore_dirs (void)
+{
+    widget_disable (WIDGET (in_ignore), !(ignore_dirs_cbox->state & C_BOOL));
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
 static void
 find_toggle_enable_params (void)
 {
@@ -480,12 +488,9 @@ find_parm_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, voi
         return MSG_HANDLED;
 
     case MSG_NOTIFY:
-        if (sender == WIDGET (ignore_dirs_cbox) && parm == (int) MSG_FOCUS)
+        if (sender == WIDGET (ignore_dirs_cbox))
         {
-            gboolean disable = !(ignore_dirs_cbox->state & C_BOOL);
-
-            widget_disable (WIDGET (in_ignore), disable);
-
+            find_toggle_enable_ignore_dirs ();
             return MSG_HANDLED;
         }
 
@@ -529,6 +534,7 @@ find_parm_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, voi
     case MSG_DRAW:
         if (first_draw)
         {
+            find_toggle_enable_ignore_dirs ();
             find_toggle_enable_params ();
             find_toggle_enable_content ();
         }