Pass window_event_result from a dialog handler all the way to the event system
In particular, window_event_result::deleted so the event system doesn't have to rely on the somewhat problematic window_exists. If a gadget is manipulated, it still returns at least window_event_result::handled so all the other gadgets in all the other windows don't have to be checked (that weren't already checked).
This commit is contained in:
parent
bd3078b672
commit
7b83123010
|
@ -192,8 +192,9 @@ window_event_result ui_button_do(UI_DIALOG *dlg, UI_GADGET_BUTTON * button,const
|
|||
}
|
||||
else if (button->pressed)
|
||||
{
|
||||
ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, button);
|
||||
return window_event_result::handled;
|
||||
rval = ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, button);
|
||||
if (rval == window_event_result::ignored)
|
||||
rval = window_event_result::handled;
|
||||
}
|
||||
|
||||
return rval;
|
||||
|
|
|
@ -138,9 +138,13 @@ window_event_result ui_checkbox_do( UI_DIALOG *dlg, UI_GADGET_CHECKBOX * checkbo
|
|||
|
||||
if (checkbox->pressed == 1)
|
||||
{
|
||||
window_event_result rval;
|
||||
|
||||
checkbox->flag ^= 1;
|
||||
ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, checkbox);
|
||||
return window_event_result::handled;
|
||||
rval = ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, checkbox);
|
||||
if (rval == window_event_result::ignored)
|
||||
rval = window_event_result::handled;
|
||||
return rval;
|
||||
}
|
||||
|
||||
if (event.type == EVENT_WINDOW_DRAW)
|
||||
|
|
|
@ -101,18 +101,12 @@ static window_event_result ui_dialog_handler(window *wind,const d_event &event,
|
|||
if ((rval = (*dlg->d_callback)(dlg, event, dlg->d_userdata)) != window_event_result::ignored)
|
||||
return rval; // event handled
|
||||
|
||||
if (!window_exists(wind))
|
||||
return window_event_result::handled;
|
||||
|
||||
switch (event.type)
|
||||
{
|
||||
case EVENT_MOUSE_BUTTON_DOWN:
|
||||
case EVENT_MOUSE_BUTTON_UP:
|
||||
case EVENT_MOUSE_MOVED:
|
||||
/*return*/ ui_dialog_do_gadgets(dlg, event);
|
||||
if (!window_exists(wind))
|
||||
return window_event_result::handled;
|
||||
return mouse_in_window(dlg->wind);
|
||||
return ui_dialog_do_gadgets(dlg, event);
|
||||
case EVENT_KEY_COMMAND:
|
||||
case EVENT_KEY_RELEASE:
|
||||
return ui_dialog_do_gadgets(dlg, event);
|
||||
|
|
|
@ -165,7 +165,8 @@ window_event_result ui_icon_do( UI_DIALOG *dlg, UI_GADGET_ICON * icon,const d_ev
|
|||
{
|
||||
icon->status = 1;
|
||||
icon->flag = static_cast<int8_t>(icon->user_function());
|
||||
ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, icon);
|
||||
rval = ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, icon);
|
||||
if (rval == window_event_result::ignored)
|
||||
rval = window_event_result::handled;
|
||||
}
|
||||
|
||||
|
|
|
@ -143,7 +143,8 @@ window_event_result ui_inputbox_do( UI_DIALOG *dlg, UI_GADGET_INPUTBOX * inputbo
|
|||
|
||||
if (inputbox->pressed)
|
||||
{
|
||||
ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, inputbox);
|
||||
rval = ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, inputbox);
|
||||
if (rval == window_event_result::ignored)
|
||||
rval = window_event_result::handled;
|
||||
}
|
||||
|
||||
|
|
|
@ -363,8 +363,9 @@ window_event_result ui_listbox_do( UI_DIALOG *dlg, UI_GADGET_LISTBOX * listbox,c
|
|||
|
||||
if (listbox->moved || (listbox->selected_item > 0))
|
||||
{
|
||||
ui_gadget_send_event(dlg, (listbox->selected_item > 0) ? EVENT_UI_LISTBOX_SELECTED : EVENT_UI_LISTBOX_MOVED, listbox);
|
||||
return window_event_result::handled;
|
||||
rval = ui_gadget_send_event(dlg, (listbox->selected_item > 0) ? EVENT_UI_LISTBOX_SELECTED : EVENT_UI_LISTBOX_MOVED, listbox);
|
||||
if (rval == window_event_result::ignored)
|
||||
rval = window_event_result::handled;
|
||||
}
|
||||
|
||||
return rval;
|
||||
|
|
|
@ -159,7 +159,8 @@ window_event_result ui_radio_do( UI_DIALOG *dlg, UI_GADGET_RADIO * radio,const d
|
|||
tmp = tmp->next;
|
||||
}
|
||||
radio->flag = 1;
|
||||
ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, radio);
|
||||
rval = ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, radio);
|
||||
if (rval == window_event_result::ignored)
|
||||
rval = window_event_result::handled;
|
||||
}
|
||||
|
||||
|
|
|
@ -282,7 +282,8 @@ window_event_result ui_scrollbar_do( UI_DIALOG *dlg, UI_GADGET_SCROLLBAR * scrol
|
|||
scrollbar->moved = 1;
|
||||
if (scrollbar->moved)
|
||||
{
|
||||
ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, scrollbar);
|
||||
rval = ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, scrollbar);
|
||||
if (rval == window_event_result::ignored)
|
||||
rval = window_event_result::handled;
|
||||
}
|
||||
|
||||
|
|
|
@ -149,7 +149,8 @@ window_event_result ui_userbox_do( UI_DIALOG *dlg, UI_GADGET_USERBOX * userbox,c
|
|||
|
||||
if (userbox->b1_clicked || userbox->b1_dragging)
|
||||
{
|
||||
ui_gadget_send_event(dlg, userbox->b1_clicked ? EVENT_UI_GADGET_PRESSED : EVENT_UI_USERBOX_DRAGGED, userbox);
|
||||
rval = ui_gadget_send_event(dlg, userbox->b1_clicked ? EVENT_UI_GADGET_PRESSED : EVENT_UI_USERBOX_DRAGGED, userbox);
|
||||
if (rval == window_event_result::ignored)
|
||||
rval = window_event_result::handled;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue