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 "params" string: "default horizontal";
|
||||||
value "any_mod" uchar: 0;
|
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 {
|
group "E_Config_Binding_Key" struct {
|
||||||
value "context" int: 9;
|
value "context" int: 9;
|
||||||
value "modifiers" int: 6;
|
value "modifiers" int: 6;
|
||||||
|
|
|
@ -1340,6 +1340,22 @@ group "E_Config" struct {
|
||||||
value "params" string: "default horizontal";
|
value "params" string: "default horizontal";
|
||||||
value "any_mod" uchar: 0;
|
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 {
|
group "E_Config_Binding_Key" struct {
|
||||||
value "context" int: 9;
|
value "context" int: 9;
|
||||||
value "modifiers" int: 6;
|
value "modifiers" int: 6;
|
||||||
|
|
|
@ -589,6 +589,20 @@ ACT_FN_GO(window_maximized_toggle, )
|
||||||
else
|
else
|
||||||
goto maximize;
|
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
|
else
|
||||||
e_border_unmaximize(bd, E_MAXIMIZE_BOTH);
|
e_border_unmaximize(bd, E_MAXIMIZE_BOTH);
|
||||||
}
|
}
|
||||||
|
@ -3612,6 +3626,10 @@ _e_actions_maximize_parse(const char *params)
|
||||||
max = E_MAXIMIZE_HORIZONTAL;
|
max = E_MAXIMIZE_HORIZONTAL;
|
||||||
else if (!strcmp(s2, "vertical"))
|
else if (!strcmp(s2, "vertical"))
|
||||||
max = E_MAXIMIZE_VERTICAL;
|
max = E_MAXIMIZE_VERTICAL;
|
||||||
|
else if (!strcmp(s2, "left"))
|
||||||
|
max = E_MAXIMIZE_LEFT;
|
||||||
|
else if (!strcmp(s2, "right"))
|
||||||
|
max = E_MAXIMIZE_RIGHT;
|
||||||
else
|
else
|
||||||
max = E_MAXIMIZE_BOTH;
|
max = E_MAXIMIZE_BOTH;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2631,12 +2631,28 @@ _e_border_maximize(E_Border *bd, E_Maximize max)
|
||||||
/* center y-direction */
|
/* center y-direction */
|
||||||
yy1 = bd->zone->y + (bd->zone->h - h) / 2;
|
yy1 = bd->zone->y + (bd->zone->h - h) / 2;
|
||||||
|
|
||||||
if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_BOTH)
|
switch (max & E_MAXIMIZE_DIRECTION)
|
||||||
e_border_move_resize(bd, x1, yy1, w, h);
|
{
|
||||||
else if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_VERTICAL)
|
case E_MAXIMIZE_BOTH:
|
||||||
e_border_move_resize(bd, bd->x, yy1, bd->w, h);
|
e_border_move_resize(bd, x1, yy1, w, h);
|
||||||
else if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_HORIZONTAL)
|
break;
|
||||||
e_border_move_resize(bd, x1, bd->y, w, bd->h);
|
|
||||||
|
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;
|
break;
|
||||||
|
|
||||||
case E_MAXIMIZE_SMART:
|
case E_MAXIMIZE_SMART:
|
||||||
|
@ -2668,12 +2684,29 @@ _e_border_maximize(E_Border *bd, E_Maximize max)
|
||||||
else // window normal position
|
else // window normal position
|
||||||
yy1 = bd->y;
|
yy1 = bd->y;
|
||||||
|
|
||||||
if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_BOTH)
|
switch (max & E_MAXIMIZE_DIRECTION)
|
||||||
e_border_move_resize(bd, zx, zy, zw, zh);
|
{
|
||||||
else if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_VERTICAL)
|
case E_MAXIMIZE_BOTH:
|
||||||
e_border_move_resize(bd, x1, zy, w, zh);
|
e_border_move_resize(bd, zx, zy, zw, zh);
|
||||||
else if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_HORIZONTAL)
|
break;
|
||||||
e_border_move_resize(bd, zx, yy1, zw, h);
|
|
||||||
|
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");
|
edje_object_signal_emit(bd->bg_object, "e,action,maximize", "e");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -2698,12 +2731,29 @@ _e_border_maximize(E_Border *bd, E_Maximize max)
|
||||||
x1 = x1 + (pw - w) / 2;
|
x1 = x1 + (pw - w) / 2;
|
||||||
/* center y-direction */
|
/* center y-direction */
|
||||||
yy1 = yy1 + (ph - h) / 2;
|
yy1 = yy1 + (ph - h) / 2;
|
||||||
if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_BOTH)
|
|
||||||
e_border_move_resize(bd, x1, yy1, w, h);
|
switch (max & E_MAXIMIZE_DIRECTION)
|
||||||
else if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_VERTICAL)
|
{
|
||||||
e_border_move_resize(bd, bd->x, yy1, bd->w, h);
|
case E_MAXIMIZE_BOTH:
|
||||||
else if ((max & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_HORIZONTAL)
|
e_border_move_resize(bd, x1, yy1, w, h);
|
||||||
e_border_move_resize(bd, x1, bd->y, w, bd->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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2818,6 +2868,8 @@ e_border_unmaximize(E_Border *bd,
|
||||||
y = bd->saved.y + bd->zone->y;
|
y = bd->saved.y + bd->zone->y;
|
||||||
bd->saved.h = bd->saved.y = 0;
|
bd->saved.h = bd->saved.y = 0;
|
||||||
bd->maximized &= ~E_MAXIMIZE_VERTICAL;
|
bd->maximized &= ~E_MAXIMIZE_VERTICAL;
|
||||||
|
bd->maximized &= ~E_MAXIMIZE_LEFT;
|
||||||
|
bd->maximized &= ~E_MAXIMIZE_RIGHT;
|
||||||
}
|
}
|
||||||
if (max & E_MAXIMIZE_HORIZONTAL)
|
if (max & E_MAXIMIZE_HORIZONTAL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -61,6 +61,8 @@ typedef enum _E_Maximize
|
||||||
E_MAXIMIZE_VERTICAL = 0x00000010,
|
E_MAXIMIZE_VERTICAL = 0x00000010,
|
||||||
E_MAXIMIZE_HORIZONTAL = 0x00000020,
|
E_MAXIMIZE_HORIZONTAL = 0x00000020,
|
||||||
E_MAXIMIZE_BOTH = 0x00000030,
|
E_MAXIMIZE_BOTH = 0x00000030,
|
||||||
|
E_MAXIMIZE_LEFT = 0x00000060,
|
||||||
|
E_MAXIMIZE_RIGHT = 0x00000090,
|
||||||
E_MAXIMIZE_DIRECTION = 0x000000f0
|
E_MAXIMIZE_DIRECTION = 0x000000f0
|
||||||
} E_Maximize;
|
} 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(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_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_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_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_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);
|
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"),
|
||||||
"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);
|
submi = e_menu_item_new(subm);
|
||||||
e_menu_item_label_set(submi, _("Unmaximize"));
|
e_menu_item_label_set(submi, _("Unmaximize"));
|
||||||
e_menu_item_radio_set(submi, 1);
|
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
|
static void
|
||||||
_e_border_menu_cb_unmaximize(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
_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",
|
CFG_KEYBIND_DFLT(E_BINDING_CONTEXT_ANY, "F10",
|
||||||
E_BINDING_MODIFIER_CTRL, 0,
|
E_BINDING_MODIFIER_CTRL, 0,
|
||||||
"window_maximized_toggle", "default horizontal");
|
"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",
|
CFG_KEYBIND_DFLT(E_BINDING_CONTEXT_ANY, "r",
|
||||||
E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0,
|
E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0,
|
||||||
"window_shaded_toggle", NULL);
|
"window_shaded_toggle", NULL);
|
||||||
|
|
Loading…
Reference in New Issue