mirror of
https://github.com/MidnightCommander/mc
synced 2025-01-01 00:54:24 +03:00
mcedit: refactoring of MSG_RESIZE handling.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
297391fd60
commit
5ca0dbab01
@ -178,31 +178,6 @@ edit_help (void)
|
|||||||
mc_event_raise (MCEVENT_GROUP_CORE, "help", &event_data);
|
mc_event_raise (MCEVENT_GROUP_CORE, "help", &event_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
|
||||||
/**
|
|
||||||
* Callback for the iteration of objects in the 'editors' array.
|
|
||||||
* Resize the editor window.
|
|
||||||
*
|
|
||||||
* @param data probably WEdit object
|
|
||||||
* @param user_data unused
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
edit_dialog_resize_cb (void *data, void *user_data)
|
|
||||||
{
|
|
||||||
Widget *w = WIDGET (data);
|
|
||||||
|
|
||||||
(void) user_data;
|
|
||||||
|
|
||||||
if (edit_widget_is_editor (w) && ((WEdit *) w)->fullscreen)
|
|
||||||
{
|
|
||||||
Widget *wh = WIDGET (w->owner);
|
|
||||||
|
|
||||||
w->lines = wh->lines - 2;
|
|
||||||
w->cols = wh->cols;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
/**
|
/**
|
||||||
* Restore saved window size.
|
* Restore saved window size.
|
||||||
@ -771,8 +746,6 @@ edit_update_cursor (WEdit * edit, const mouse_event_t * event)
|
|||||||
static cb_ret_t
|
static cb_ret_t
|
||||||
edit_dialog_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data)
|
edit_dialog_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data)
|
||||||
{
|
{
|
||||||
WMenuBar *menubar;
|
|
||||||
WButtonBar *buttonbar;
|
|
||||||
WDialog *h = DIALOG (w);
|
WDialog *h = DIALOG (w);
|
||||||
|
|
||||||
switch (msg)
|
switch (msg)
|
||||||
@ -788,15 +761,8 @@ edit_dialog_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, v
|
|||||||
return MSG_HANDLED;
|
return MSG_HANDLED;
|
||||||
|
|
||||||
case MSG_RESIZE:
|
case MSG_RESIZE:
|
||||||
menubar = find_menubar (h);
|
dlg_default_callback (w, NULL, MSG_RESIZE, 0, NULL);
|
||||||
buttonbar = find_buttonbar (h);
|
menubar_arrange (find_menubar (h));
|
||||||
/* dlg_set_size() is surplus for this case */
|
|
||||||
w->lines = LINES;
|
|
||||||
w->cols = COLS;
|
|
||||||
widget_set_size (WIDGET (buttonbar), w->lines - 1, w->x, 1, w->cols);
|
|
||||||
widget_set_size (WIDGET (menubar), w->y, w->x, 1, w->cols);
|
|
||||||
menubar_arrange (menubar);
|
|
||||||
g_list_foreach (h->widgets, (GFunc) edit_dialog_resize_cb, NULL);
|
|
||||||
return MSG_HANDLED;
|
return MSG_HANDLED;
|
||||||
|
|
||||||
case MSG_ACTION:
|
case MSG_ACTION:
|
||||||
@ -1222,6 +1188,7 @@ edit_files (const GList * files)
|
|||||||
static gboolean made_directory = FALSE;
|
static gboolean made_directory = FALSE;
|
||||||
WDialog *edit_dlg;
|
WDialog *edit_dlg;
|
||||||
WMenuBar *menubar;
|
WMenuBar *menubar;
|
||||||
|
Widget *w;
|
||||||
const GList *file;
|
const GList *file;
|
||||||
gboolean ok = FALSE;
|
gboolean ok = FALSE;
|
||||||
|
|
||||||
@ -1252,10 +1219,12 @@ edit_files (const GList * files)
|
|||||||
edit_dlg->get_title = edit_get_title;
|
edit_dlg->get_title = edit_get_title;
|
||||||
|
|
||||||
menubar = menubar_new (NULL, TRUE);
|
menubar = menubar_new (NULL, TRUE);
|
||||||
add_widget (edit_dlg, menubar);
|
w = WIDGET (menubar);
|
||||||
|
add_widget_autopos (edit_dlg, w, w->pos_flags, NULL);
|
||||||
edit_init_menu (menubar);
|
edit_init_menu (menubar);
|
||||||
|
|
||||||
add_widget (edit_dlg, buttonbar_new (TRUE));
|
w = WIDGET (buttonbar_new (TRUE));
|
||||||
|
add_widget_autopos (edit_dlg, w, w->pos_flags, NULL);
|
||||||
|
|
||||||
for (file = files; file != NULL; file = g_list_next (file))
|
for (file = files; file != NULL; file = g_list_next (file))
|
||||||
{
|
{
|
||||||
@ -1381,7 +1350,7 @@ edit_add_window (WDialog * h, int y, int x, int lines, int cols, const vfs_path_
|
|||||||
w->callback = edit_callback;
|
w->callback = edit_callback;
|
||||||
w->mouse_callback = edit_mouse_callback;
|
w->mouse_callback = edit_mouse_callback;
|
||||||
|
|
||||||
add_widget (h, w);
|
add_widget_autopos (h, w, WPOS_KEEP_ALL, NULL);
|
||||||
edit_set_buttonbar (edit, find_buttonbar (h));
|
edit_set_buttonbar (edit, find_buttonbar (h));
|
||||||
dlg_redraw (h);
|
dlg_redraw (h);
|
||||||
|
|
||||||
@ -1517,18 +1486,25 @@ edit_handle_move_resize (WEdit * edit, long command)
|
|||||||
void
|
void
|
||||||
edit_toggle_fullscreen (WEdit * edit)
|
edit_toggle_fullscreen (WEdit * edit)
|
||||||
{
|
{
|
||||||
|
Widget *w = WIDGET (edit);
|
||||||
|
|
||||||
edit->fullscreen = !edit->fullscreen;
|
edit->fullscreen = !edit->fullscreen;
|
||||||
edit->force = REDRAW_COMPLETELY;
|
edit->force = REDRAW_COMPLETELY;
|
||||||
|
|
||||||
if (!edit->fullscreen)
|
if (!edit->fullscreen)
|
||||||
|
{
|
||||||
edit_restore_size (edit);
|
edit_restore_size (edit);
|
||||||
|
/* do not follow screen size on resize */
|
||||||
|
w->pos_flags = WPOS_KEEP_DEFAULT;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Widget *w = WIDGET (edit);
|
|
||||||
Widget *h = WIDGET (w->owner);
|
Widget *h = WIDGET (w->owner);
|
||||||
|
|
||||||
edit_save_size (edit);
|
edit_save_size (edit);
|
||||||
widget_set_size (w, h->y + 1, h->x, h->lines - 2, h->cols);
|
widget_set_size (w, h->y + 1, h->x, h->lines - 2, h->cols);
|
||||||
|
/* follow screen size on resize */
|
||||||
|
w->pos_flags = WPOS_KEEP_ALL;
|
||||||
edit->force |= REDRAW_PAGE;
|
edit->force |= REDRAW_PAGE;
|
||||||
edit_update_screen (edit);
|
edit_update_screen (edit);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user