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);
/* 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;

View File

@ -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 */

View File

@ -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;

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
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 ();
}