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>
This commit is contained in:
Andrew Borodin 2016-11-24 11:05:26 +03:00
parent 87cc7baead
commit 8550044635
4 changed files with 15 additions and 8 deletions

View File

@ -315,7 +315,7 @@ widget_set_state (Widget * w, widget_state_t state, gboolean enable)
{ {
send_message (w, NULL, MSG_DRAW, 0, NULL); send_message (w, NULL, MSG_DRAW, 0, NULL);
/* Notify owner that focus was moved from one widget to another */ /* 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; break;

View File

@ -30,6 +30,7 @@ typedef enum
MSG_INIT = 0, /* Initialize widget */ MSG_INIT = 0, /* Initialize widget */
MSG_FOCUS, /* Draw widget in focused state or widget has got focus */ 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_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_ENABLE, /* Change state to enabled */
MSG_DISABLE, /* Change state to disabled */ MSG_DISABLE, /* Change state to disabled */
MSG_DRAW, /* Draw widget on screen */ MSG_DRAW, /* Draw widget on screen */

View File

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

View File

@ -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 static void
find_toggle_enable_params (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; return MSG_HANDLED;
case MSG_NOTIFY: 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); find_toggle_enable_ignore_dirs ();
widget_disable (WIDGET (in_ignore), disable);
return MSG_HANDLED; return MSG_HANDLED;
} }
@ -529,6 +534,7 @@ find_parm_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, voi
case MSG_DRAW: case MSG_DRAW:
if (first_draw) if (first_draw)
{ {
find_toggle_enable_ignore_dirs ();
find_toggle_enable_params (); find_toggle_enable_params ();
find_toggle_enable_content (); find_toggle_enable_content ();
} }