forked from enlightenment/enlightenment
add two new maximize modes: left and right
these will maximize a window to either the left or the right half of the screen, respectively work started by etrunko in ticket #1422 SVN revision: 76198
This commit is contained in:
parent
765c24f6c6
commit
f1e4a5909f
|
@ -554,6 +554,22 @@ group "E_Config" struct {
|
|||
value "params" string: "default horizontal";
|
||||
value "any_mod" uchar: 0;
|
||||
}
|
||||
group "E_Config_Binding_Key" struct {
|
||||
value "context" int: 9;
|
||||
value "modifiers" int: 8;
|
||||
value "key" string: "Left";
|
||||
value "action" string: "window_maximized_toggle";
|
||||
value "params" string: "default left";
|
||||
value "any_mod" uchar: 0;
|
||||
}
|
||||
group "E_Config_Binding_Key" struct {
|
||||
value "context" int: 9;
|
||||
value "modifiers" int: 8;
|
||||
value "key" string: "Right";
|
||||
value "action" string: "window_maximized_toggle";
|
||||
value "params" string: "default right";
|
||||
value "any_mod" uchar: 0;
|
||||
}
|
||||
group "E_Config_Binding_Key" struct {
|
||||
value "context" int: 9;
|
||||
value "modifiers" int: 6;
|
||||
|
|
|
@ -1340,6 +1340,22 @@ group "E_Config" struct {
|
|||
value "params" string: "default horizontal";
|
||||
value "any_mod" uchar: 0;
|
||||
}
|
||||
group "E_Config_Binding_Key" struct {
|
||||
value "context" int: 9;
|
||||
value "modifiers" int: 8;
|
||||
value "key" string: "Left";
|
||||
value "action" string: "window_maximized_toggle";
|
||||
value "params" string: "default left";
|
||||
value "any_mod" uchar: 0;
|
||||
}
|
||||
group "E_Config_Binding_Key" struct {
|
||||
value "context" int: 9;
|
||||
value "modifiers" int: 8;
|
||||
value "key" string: "Right";
|
||||
value "action" string: "window_maximized_toggle";
|
||||
value "params" string: "default right";
|
||||
value "any_mod" uchar: 0;
|
||||
}
|
||||
group "E_Config_Binding_Key" struct {
|
||||
value "context" int: 9;
|
||||
value "modifiers" int: 6;
|
||||
|
|
|
@ -589,6 +589,20 @@ ACT_FN_GO(window_maximized_toggle, )
|
|||
else
|
||||
goto maximize;
|
||||
}
|
||||
else if (max == E_MAXIMIZE_LEFT)
|
||||
{
|
||||
if (bd->maximized & E_MAXIMIZE_LEFT)
|
||||
e_border_unmaximize(bd, E_MAXIMIZE_LEFT);
|
||||
else
|
||||
goto maximize;
|
||||
}
|
||||
else if (max == E_MAXIMIZE_RIGHT)
|
||||
{
|
||||
if (bd->maximized & E_MAXIMIZE_RIGHT)
|
||||
e_border_unmaximize(bd, E_MAXIMIZE_RIGHT);
|
||||
else
|
||||
goto maximize;
|
||||
}
|
||||
else
|
||||
e_border_unmaximize(bd, E_MAXIMIZE_BOTH);
|
||||
}
|
||||
|
@ -3612,6 +3626,10 @@ _e_actions_maximize_parse(const char *params)
|
|||
max = E_MAXIMIZE_HORIZONTAL;
|
||||
else if (!strcmp(s2, "vertical"))
|
||||
max = E_MAXIMIZE_VERTICAL;
|
||||
else if (!strcmp(s2, "left"))
|
||||
max = E_MAXIMIZE_LEFT;
|
||||
else if (!strcmp(s2, "right"))
|
||||
max = E_MAXIMIZE_RIGHT;
|
||||
else
|
||||
max = E_MAXIMIZE_BOTH;
|
||||
}
|
||||
|
|
|
@ -2631,12 +2631,28 @@ _e_border_maximize(E_Border *bd, E_Maximize max)
|
|||
/* center y-direction */
|
||||
yy1 = bd->zone->y + (bd->zone->h - h) / 2;
|
||||
|
||||
if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_BOTH)
|
||||
e_border_move_resize(bd, x1, yy1, w, h);
|
||||
else if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_VERTICAL)
|
||||
e_border_move_resize(bd, bd->x, yy1, bd->w, h);
|
||||
else if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_HORIZONTAL)
|
||||
e_border_move_resize(bd, x1, bd->y, w, bd->h);
|
||||
switch (max & E_MAXIMIZE_DIRECTION)
|
||||
{
|
||||
case E_MAXIMIZE_BOTH:
|
||||
e_border_move_resize(bd, x1, yy1, w, h);
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_VERTICAL:
|
||||
e_border_move_resize(bd, bd->x, yy1, bd->w, h);
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_HORIZONTAL:
|
||||
e_border_move_resize(bd, x1, bd->y, w, bd->h);
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_LEFT:
|
||||
e_border_move_resize(bd, bd->zone->x, bd->zone->y, w / 2, h);
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_RIGHT:
|
||||
e_border_move_resize(bd, x1, bd->zone->y, w / 2, h);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_SMART:
|
||||
|
@ -2668,12 +2684,29 @@ _e_border_maximize(E_Border *bd, E_Maximize max)
|
|||
else // window normal position
|
||||
yy1 = bd->y;
|
||||
|
||||
if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_BOTH)
|
||||
e_border_move_resize(bd, zx, zy, zw, zh);
|
||||
else if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_VERTICAL)
|
||||
e_border_move_resize(bd, x1, zy, w, zh);
|
||||
else if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_HORIZONTAL)
|
||||
e_border_move_resize(bd, zx, yy1, zw, h);
|
||||
switch (max & E_MAXIMIZE_DIRECTION)
|
||||
{
|
||||
case E_MAXIMIZE_BOTH:
|
||||
e_border_move_resize(bd, zx, zy, zw, zh);
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_VERTICAL:
|
||||
e_border_move_resize(bd, x1, zy, w, zh);
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_HORIZONTAL:
|
||||
e_border_move_resize(bd, zx, yy1, zw, h);
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_LEFT:
|
||||
e_border_move_resize(bd, zx, zy, zw / 2, zh);
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_RIGHT:
|
||||
e_border_move_resize(bd, zx + zw / 2, zy, zw / 2, zh);
|
||||
break;
|
||||
}
|
||||
|
||||
edje_object_signal_emit(bd->bg_object, "e,action,maximize", "e");
|
||||
break;
|
||||
|
||||
|
@ -2698,12 +2731,29 @@ _e_border_maximize(E_Border *bd, E_Maximize max)
|
|||
x1 = x1 + (pw - w) / 2;
|
||||
/* center y-direction */
|
||||
yy1 = yy1 + (ph - h) / 2;
|
||||
if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_BOTH)
|
||||
e_border_move_resize(bd, x1, yy1, w, h);
|
||||
else if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_VERTICAL)
|
||||
e_border_move_resize(bd, bd->x, yy1, bd->w, h);
|
||||
else if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_HORIZONTAL)
|
||||
e_border_move_resize(bd, x1, bd->y, w, bd->h);
|
||||
|
||||
switch (max & E_MAXIMIZE_DIRECTION)
|
||||
{
|
||||
case E_MAXIMIZE_BOTH:
|
||||
e_border_move_resize(bd, x1, yy1, w, h);
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_VERTICAL:
|
||||
e_border_move_resize(bd, bd->x, yy1, bd->w, h);
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_HORIZONTAL:
|
||||
e_border_move_resize(bd, x1, bd->y, w, bd->h);
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_LEFT:
|
||||
e_border_move_resize(bd, bd->zone->x, bd->zone->y, w / 2, h);
|
||||
break;
|
||||
|
||||
case E_MAXIMIZE_RIGHT:
|
||||
e_border_move_resize(bd, x1, bd->zone->y, w / 2, h);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2818,6 +2868,8 @@ e_border_unmaximize(E_Border *bd,
|
|||
y = bd->saved.y + bd->zone->y;
|
||||
bd->saved.h = bd->saved.y = 0;
|
||||
bd->maximized &= ~E_MAXIMIZE_VERTICAL;
|
||||
bd->maximized &= ~E_MAXIMIZE_LEFT;
|
||||
bd->maximized &= ~E_MAXIMIZE_RIGHT;
|
||||
}
|
||||
if (max & E_MAXIMIZE_HORIZONTAL)
|
||||
{
|
||||
|
|
|
@ -61,6 +61,8 @@ typedef enum _E_Maximize
|
|||
E_MAXIMIZE_VERTICAL = 0x00000010,
|
||||
E_MAXIMIZE_HORIZONTAL = 0x00000020,
|
||||
E_MAXIMIZE_BOTH = 0x00000030,
|
||||
E_MAXIMIZE_LEFT = 0x00000060,
|
||||
E_MAXIMIZE_RIGHT = 0x00000090,
|
||||
E_MAXIMIZE_DIRECTION = 0x000000f0
|
||||
} E_Maximize;
|
||||
|
||||
|
|
|
@ -13,6 +13,8 @@ static void _e_border_menu_cb_maximize_pre(void *data, E_Menu *m, E_Menu_Item *m
|
|||
static void _e_border_menu_cb_maximize(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_maximize_vertically(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_maximize_horizontally(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_maximize_left(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_maximize_right(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_unmaximize(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_resistance(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
@ -411,6 +413,28 @@ _e_border_menu_cb_maximize_pre(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi
|
|||
"e/widgets/border/default/maximize"),
|
||||
"e/widgets/border/default/maximize");
|
||||
|
||||
submi = e_menu_item_new(subm);
|
||||
e_menu_item_label_set(submi, _("Maximize left"));
|
||||
e_menu_item_radio_set(submi, 1);
|
||||
e_menu_item_radio_group_set(submi, 3);
|
||||
e_menu_item_toggle_set(submi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_LEFT);
|
||||
e_menu_item_callback_set(submi, _e_border_menu_cb_maximize_left, bd);
|
||||
e_menu_item_icon_edje_set(submi,
|
||||
e_theme_edje_file_get("base/theme/borders",
|
||||
"e/widgets/border/default/maximize"),
|
||||
"e/widgets/border/default/maximize");
|
||||
|
||||
submi = e_menu_item_new(subm);
|
||||
e_menu_item_label_set(submi, _("Maximize right"));
|
||||
e_menu_item_radio_set(submi, 1);
|
||||
e_menu_item_radio_group_set(submi, 3);
|
||||
e_menu_item_toggle_set(submi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_RIGHT);
|
||||
e_menu_item_callback_set(submi, _e_border_menu_cb_maximize_right, bd);
|
||||
e_menu_item_icon_edje_set(submi,
|
||||
e_theme_edje_file_get("base/theme/borders",
|
||||
"e/widgets/border/default/maximize"),
|
||||
"e/widgets/border/default/maximize");
|
||||
|
||||
submi = e_menu_item_new(subm);
|
||||
e_menu_item_label_set(submi, _("Unmaximize"));
|
||||
e_menu_item_radio_set(submi, 1);
|
||||
|
@ -465,6 +489,36 @@ _e_border_menu_cb_maximize_horizontally(void *data, E_Menu *m __UNUSED__, E_Menu
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_border_menu_cb_maximize_left(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
||||
{
|
||||
E_Border *bd;
|
||||
|
||||
bd = data;
|
||||
if (!bd->lock_user_maximize)
|
||||
{
|
||||
if ((bd->maximized & E_MAXIMIZE_DIRECTION))
|
||||
e_border_unmaximize(bd, bd->maximized & E_MAXIMIZE_DIRECTION);
|
||||
e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) |
|
||||
E_MAXIMIZE_LEFT);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_border_menu_cb_maximize_right(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
||||
{
|
||||
E_Border *bd;
|
||||
|
||||
bd = data;
|
||||
if (!bd->lock_user_maximize)
|
||||
{
|
||||
if ((bd->maximized & E_MAXIMIZE_DIRECTION))
|
||||
e_border_unmaximize(bd, bd->maximized & E_MAXIMIZE_DIRECTION);
|
||||
e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) |
|
||||
E_MAXIMIZE_RIGHT);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_border_menu_cb_unmaximize(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
||||
{
|
||||
|
|
|
@ -531,6 +531,12 @@ _restore_key_binding_defaults_cb(void *data,
|
|||
CFG_KEYBIND_DFLT(E_BINDING_CONTEXT_ANY, "F10",
|
||||
E_BINDING_MODIFIER_CTRL, 0,
|
||||
"window_maximized_toggle", "default horizontal");
|
||||
CFG_KEYBIND_DFLT(E_BINDING_CONTEXT_ANY, "Left",
|
||||
E_BINDING_MODIFIER_WIN, 0,
|
||||
"window_maximized_toggle", "default left");
|
||||
CFG_KEYBIND_DFLT(E_BINDING_CONTEXT_ANY, "Right",
|
||||
E_BINDING_MODIFIER_WIN, 0,
|
||||
"window_maximized_toggle", "default right");
|
||||
CFG_KEYBIND_DFLT(E_BINDING_CONTEXT_ANY, "r",
|
||||
E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0,
|
||||
"window_shaded_toggle", NULL);
|
||||
|
|
Loading…
Reference in New Issue