#include "main.h" /* for world global */
#include "wincontrol.h" /* for struct WinConf, scroll_pad(), toggle_window(),
* growshrink_active_window(),toggle_winconfig(),
- * toggle_win_height_type(), toggle_win_width_type()
+ * toggle_size_type()
*/
#include "map_object_actions.h" /* for struct MapObjAct, actor_wait(),
* actor_move(), actor_drop(), actor_pick(),
extern uint8_t wingeom_control(int key)
{
- if ( try_cmd_0args(key, "to_height_t", toggle_win_height_type)
- || try_cmd_0args(key, "to_width_t", toggle_win_width_type)
+ if ( try_cmd_1args(key, "to_height_t", toggle_win_size_type, 'y')
+ || try_cmd_1args(key, "to_width_t", toggle_win_size_type, 'x')
|| try_cmd_1args(key, "grow_h", growshrink_active_window, '*')
|| try_cmd_1args(key, "shri_h", growshrink_active_window, '_')
|| try_cmd_1args(key, "grow_v", growshrink_active_window, '+')
{
struct Win * win = get_win_by_id(id);
if (0 == win->prev && world.wmeta->chain_start != win) /* Win struct is */
- { /* outside chain. */
+ { /* outside chain? */
append_win(win);
}
else
struct WinConf * wcp = get_winconf_by_win(win);
if (0 == wcp->view)
{
- win->draw = draw_winconf_geometry;
- wcp->view = 1;
- wcp->center = win->center;
+ wcp->view = 1;
+ win->draw = draw_winconf_geometry;
+ wcp->center = win->center;
win->center.y = 0;
win->center.x = 0;
}
else if (1 == wcp->view)
{
- win->draw = draw_winconf_keybindings;
- wcp->view = 2;
+ wcp->view = 2;
+ win->draw = draw_winconf_keybindings;
win->center.x = 0;
}
else
{
- win->draw = get_drawfunc_by_char(wcp->draw);
- win->center = wcp->center;
- wcp->view = 0;
+ wcp->view = 0;
+ win->draw = get_drawfunc_by_char(wcp->draw);
+ win->center = wcp->center;
}
}
-extern void toggle_win_height_type()
+extern void toggle_win_size_type(char axis)
{
struct Win * win = world.wmeta->active;
struct WinConf * wcp = get_winconf_by_win(win);
- if (0 == wcp->height_type)
+ if ('y' == axis)
{
- wcp->height_type = 1;
- }
- else
- {
- wcp->height_type = 0;
- }
- set_winconf_geometry(wcp->id);
-}
-
-
-
-extern void toggle_win_width_type()
-{
- struct Win * win = world.wmeta->active;
- struct WinConf * wcp = get_winconf_by_win(win);
- if (0 == wcp->width_type && win->framesize.x <= world.wmeta->padsize.x)
- {
- wcp->width_type = 1;
- }
- else
- {
- wcp->width_type = 0;
+ wcp->height_type = (0 == wcp->height_type);
+ set_winconf_geometry(wcp->id);
+ return;
}
+ wcp->width_type = ( 0 == wcp->width_type
+ && win->framesize.x <= world.wmeta->padsize.x);
set_winconf_geometry(wcp->id);
}
/* Toggle "window configuration" view for active window. Sets sensible
* Win.center values for the various configuration views (for winconf_geometry:
- * y=0, x=0; for winconf_keys: x=0, y=Winconf.kb.select).
+ * y=0, x=0; for winconf_keys: x=0 (y is set by draw_winconf_keybindings()).
*/
extern void toggle_winconfig();
-/* Toggle WinConf.(height/width)_type. To avoid a positive diff to screen width,
+/* Toggle WinConf.(height/width)_type ("axis" = "y": height; else: width). Avoid
+ * positive diff to screen width (value would be wrongly read as a non-diff),
* width_type toggles to 1 only if world.wmeta->screen's width >= WinConf.width.
*/
-extern void toggle_win_height_type();
-extern void toggle_win_width_type();
+extern void toggle_win_size_type(char axis);
/* Toggle display of a window identified by "id". */
extern void toggle_window(char id);