mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 20:36:50 +03:00
Added dlg_set_top_widget() function
...to move widget to the top of widget list and make it current. Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
6ad4b2466b
commit
fe34f89a19
@ -1065,7 +1065,7 @@ dlg_select_by_id (const Dlg_head * h, unsigned long id)
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
/*
|
||||
/**
|
||||
* Try to select widget in the dialog.
|
||||
*/
|
||||
|
||||
@ -1078,6 +1078,36 @@ dlg_select_widget (void *w)
|
||||
do_select_widget (h, g_list_find (h->widgets, widget), SELECT_EXACT);
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Set widget at top of widget list and make it current.
|
||||
*/
|
||||
|
||||
void
|
||||
dlg_set_top_widget (void *w)
|
||||
{
|
||||
Widget *widget = (Widget *) w;
|
||||
Dlg_head *h = widget->owner;
|
||||
GList *l;
|
||||
|
||||
l = g_list_find (h->widgets, w);
|
||||
if (l == NULL)
|
||||
abort (); /* widget is not in dialog, this should not happen */
|
||||
|
||||
/* unfocus prevoius widget and focus current one before widget reordering */
|
||||
if (h->state == DLG_ACTIVE)
|
||||
do_select_widget (h, l, SELECT_EXACT);
|
||||
|
||||
/* widget reordering */
|
||||
h->widgets = g_list_remove_link (h->widgets, l);
|
||||
if ((h->flags & DLG_REVERSE) != 0)
|
||||
h->widgets = g_list_concat (l, h->widgets);
|
||||
else
|
||||
h->widgets = g_list_concat (h->widgets, l);
|
||||
h->current = l;
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
/** Try to select previous widget in the tab order */
|
||||
|
||||
|
@ -201,7 +201,8 @@ void dlg_erase (Dlg_head * h);
|
||||
void dlg_stop (Dlg_head * h);
|
||||
|
||||
/* Widget selection */
|
||||
void dlg_select_widget (void *widget);
|
||||
void dlg_select_widget (void *w);
|
||||
void dlg_set_top_widget (void *w);
|
||||
void dlg_one_up (Dlg_head * h);
|
||||
void dlg_one_down (Dlg_head * h);
|
||||
gboolean dlg_focus (Dlg_head * h);
|
||||
|
Loading…
Reference in New Issue
Block a user