patches and stuff hanign in mail...

SVN revision: 18756
This commit is contained in:
Carsten Haitzler 2005-12-01 07:10:32 +00:00
parent de53041869
commit cf7815a1da
7 changed files with 419 additions and 37 deletions

View File

@ -5,3 +5,4 @@ HandyAndE (Andrew Williams) <andy@handyande.co.uk>
CodeWarrior (Hisham Mardam Bey) <hisham@hisham.cc>
dj2 (dan sinclair) <dj2@everburning.com>
Tilman Sauerbeck <tilman@code-monkey.de>
Aleksej Struk <astruk@gmail.com>

View File

@ -367,23 +367,67 @@ ACT_FN_GO(window_maximized_toggle)
E_Border *bd;
bd = (E_Border *)obj;
if (bd->maximized) e_border_unmaximize(bd);
else
/*if (bd->maximized) e_border_unmaximize(bd);*/
if( bd->maximized != E_MAXIMIZE_NONE &&
bd->maximized != E_MAXIMIZE_VERTICAL &&
bd->maximized != E_MAXIMIZE_HORIZONTAL )
{
if( !params )
e_border_unmaximize(bd);
else
{
if (!params)
e_border_maximize(bd, e_config->maximize_policy);
else
{
if (!strcmp(params, "fullscreen")) e_border_maximize(bd, E_MAXIMIZE_FULLSCREEN);
else if (!strcmp(params, "smart")) e_border_maximize(bd, E_MAXIMIZE_SMART);
else if (!strcmp(params, "expand")) e_border_maximize(bd, E_MAXIMIZE_EXPAND);
else if (!strcmp(params, "fill")) e_border_maximize(bd, E_MAXIMIZE_FILL);
else e_border_maximize(bd, e_config->maximize_policy);
}
if( !strcmp( params, "vertical"))
e_border_unmaximize_vh(bd, E_MAXIMIZE_VERTICAL );
else if( !strcmp( params, "horizontal"))
e_border_unmaximize_vh(bd, E_MAXIMIZE_HORIZONTAL );
else
e_border_unmaximize(bd);
}
}
else
{
if( !bd->maximized )
{
if (!params)
e_border_maximize(bd, e_config->maximize_policy);
else
{
if (!strcmp(params, "fullscreen")) e_border_maximize(bd, E_MAXIMIZE_FULLSCREEN);
else if (!strcmp(params, "smart")) e_border_maximize(bd, E_MAXIMIZE_SMART);
else if (!strcmp(params, "expand")) e_border_maximize(bd, E_MAXIMIZE_EXPAND);
else if (!strcmp(params, "fill")) e_border_maximize(bd, E_MAXIMIZE_FILL);
else if (!strcmp(params, "vertical")) e_border_maximize(bd, E_MAXIMIZE_VERTICAL);
else if (!strcmp(params, "horizontal")) e_border_maximize(bd, E_MAXIMIZE_HORIZONTAL);
else e_border_maximize(bd, e_config->maximize_policy);
}
}
else
{
if( !params )
e_border_maximize( bd, e_config->maximize_policy );
else
{
if( !strcmp(params, "vertical") )
{
if( bd->maximized == E_MAXIMIZE_VERTICAL )
e_border_unmaximize_vh(bd, E_MAXIMIZE_VERTICAL );
else
e_border_maximize(bd, E_MAXIMIZE_VERTICAL );
}
else if( !strcmp(params, "horizontal") )
{
if( bd->maximized == E_MAXIMIZE_HORIZONTAL )
e_border_unmaximize_vh(bd, E_MAXIMIZE_HORIZONTAL );
else
e_border_maximize(bd, E_MAXIMIZE_HORIZONTAL );
}
else
e_border_maximize(bd, e_config->maximize_policy);
}
}
}
}
}
/***************************************************************************/
ACT_FN_GO(window_maximized)
{
@ -534,7 +578,6 @@ ACT_FN_GO(window_move_by)
}
}
}
/***************************************************************************/
ACT_FN_GO(window_move_to)
{
@ -1297,7 +1340,7 @@ e_actions_init(void)
ACT_GO(window_iconic);
ACT_GO(window_maximized_toggle);
ACT_GO(window_maximized);
ACT_GO(window_shaded_toggle);

View File

@ -1443,7 +1443,14 @@ e_border_maximize(E_Border *bd, E_Maximize max)
if ((bd->shaded) || (bd->shading)) return;
if (bd->fullscreen)
e_border_unfullscreen(bd);
if (!bd->maximized)
if( bd->maximized == E_MAXIMIZE_VERTICAL && max == E_MAXIMIZE_VERTICAL )
; // ignore. we are already maximized vertical.
else if( bd->maximized == E_MAXIMIZE_HORIZONTAL && max == E_MAXIMIZE_HORIZONTAL )
; // ignore. we are already maximized horizontaly.
else if ( ( bd->maximized == E_MAXIMIZE_NONE ||
bd->maximized == E_MAXIMIZE_VERTICAL ||
bd->maximized == E_MAXIMIZE_HORIZONTAL )
)
{
int x1, y1, x2, y2;
int w, h;
@ -1453,10 +1460,14 @@ e_border_maximize(E_Border *bd, E_Maximize max)
bd->need_maximize = 1;
return;
}
bd->saved.x = bd->x;
bd->saved.y = bd->y;
bd->saved.w = bd->w;
bd->saved.h = bd->h;
if( !bd->maximized ) // E_MAXIMIZE_NONE
{
bd->saved.x = bd->x;
bd->saved.y = bd->y;
bd->saved.w = bd->w;
bd->saved.h = bd->h;
}
e_hints_window_size_set(bd);
e_border_raise(bd);
@ -1532,8 +1543,54 @@ e_border_maximize(E_Border *bd, E_Maximize max)
e_border_resize_limit(bd, &w, &h);
e_border_move_resize(bd, x1, y1, w, h);
break;
case E_MAXIMIZE_VERTICAL:
x1 = bd->zone->x;
y1 = bd->zone->y;
x2 = bd->zone->x + bd->zone->w;
y2 = bd->zone->y + bd->zone->h;
/* walk through all gadgets */
e_maximize_border_gadman_fill(bd, &x1, &y1, &x2, &y2);
/* walk through docks and toolbars */
//e_maximize_border_dock_fit(bd, &x1, &y1, &x2, &y2);
/* walk through all windows */
//e_maximize_border_border_fill(bd, &x1, &y1, &x2, &y2);
x1 = bd->x;
w = bd->w;
h = y2 - y1;
e_border_resize_limit(bd,&w,&h);
e_border_move_resize(bd,x1,y1,w,h);
break;
case E_MAXIMIZE_HORIZONTAL:
x1 = bd->zone->x;
y1 = bd->zone->y;
x2 = bd->zone->x + bd->zone->w;
y2 = bd->zone->y + bd->zone->h;
/* walk through all gadgets */
e_maximize_border_gadman_fill(bd, &x1, &y1, &x2, &y2);
/* walk through docks and toolbars */
//e_maximize_border_dock_fit(bd, &x1, &y1, &x2, &y2);
/* walk through all windows */
//e_maximize_border_border_fill(bd, &x1, &y1, &x2, &y2);
y1 = bd->y;
h = bd->h;
w = x2 - x1;
e_border_resize_limit(bd,&w,&h);
e_border_move_resize(bd,x1,y1,w,h);
break;
}
bd->maximized = max;
if( bd->maximized == E_MAXIMIZE_HORIZONTAL && max == E_MAXIMIZE_VERTICAL ||
bd->maximized == E_MAXIMIZE_VERTICAL && max == E_MAXIMIZE_HORIZONTAL )
bd->maximized = e_config->maximize_policy;
else
bd->maximized = max;
if (bd->maximized)
e_hints_window_maximized_set(bd, 1);
@ -1542,6 +1599,90 @@ e_border_maximize(E_Border *bd, E_Maximize max)
}
}
/***sndev : e_border_unmaxmize_vh *******************************************************/
void
e_border_unmaximize_vh(E_Border *bd, E_Maximize max )
{
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
if ((bd->shaded) || (bd->shading)) return;
if( max != E_MAXIMIZE_VERTICAL && max != E_MAXIMIZE_HORIZONTAL ) return;
if( !bd->lock_user_maximize)
{
if( bd->maximized )
{
switch( bd->maximized )
{
case E_MAXIMIZE_NONE:
case E_MAXIMIZE_FULLSCREEN:
/* Ignore */
break;
case E_MAXIMIZE_SMART:
case E_MAXIMIZE_EXPAND:
case E_MAXIMIZE_FILL:
if( max == E_MAXIMIZE_VERTICAL )
{
bd->maximized = E_MAXIMIZE_NONE;
e_hints_window_maximized_set(bd, 0);
bd->maximized = E_MAXIMIZE_HORIZONTAL;
e_hints_window_maximized_set(bd, 1);
e_border_move_resize( bd, bd->x, bd->saved.y, bd->w, bd->saved.h);
e_hints_window_size_unset(bd);
//edje_object_signal_emit(bd->bg_object, "unmaximize", "");
}
if( max == E_MAXIMIZE_HORIZONTAL )
{
bd->maximized = E_MAXIMIZE_NONE;
e_hints_window_maximized_set(bd, 0);
bd->maximized = E_MAXIMIZE_VERTICAL;
e_hints_window_maximized_set(bd, 1);
e_border_move_resize( bd, bd->saved.x, bd->y, bd->saved.w, bd->h);
e_hints_window_size_unset(bd);
//edje_object_signal_emit(bd->bg_object, "unmaximize", "");
}
break;
case E_MAXIMIZE_VERTICAL:
if( max == E_MAXIMIZE_HORIZONTAL )
; // do nothing in this case
if( max == E_MAXIMIZE_VERTICAL )
{
bd->maximized = E_MAXIMIZE_NONE;
e_hints_window_maximized_set(bd, 0);
e_border_move_resize( bd, bd->saved.x, bd->saved.y, bd->saved.w, bd->saved.h);
bd->saved.x = bd->saved.y = bd->saved.w = bd->saved.h = 0;
e_hints_window_size_unset(bd);
edje_object_signal_emit(bd->bg_object, "unmaximize", "");
}
break;
case E_MAXIMIZE_HORIZONTAL:
if( max == E_MAXIMIZE_VERTICAL )
; // do nothing in this case.
if( max == E_MAXIMIZE_HORIZONTAL )
{
bd->maximized = E_MAXIMIZE_NONE;
e_hints_window_maximized_set(bd, 0);
e_border_move_resize( bd, bd->saved.x, bd->saved.y, bd->saved.w, bd->saved.h);
bd->saved.x = bd->saved.y = bd->saved.w = bd->saved.h = 0;
e_hints_window_size_unset(bd);
edje_object_signal_emit(bd->bg_object, "unmaximize", "");
}
break;
}
}
}
}
/**************************************************************************************/
void
e_border_unmaximize(E_Border *bd)

View File

@ -47,7 +47,9 @@ typedef enum _E_Maximize
E_MAXIMIZE_FULLSCREEN,
E_MAXIMIZE_SMART,
E_MAXIMIZE_EXPAND,
E_MAXIMIZE_FILL
E_MAXIMIZE_FILL,
E_MAXIMIZE_VERTICAL,
E_MAXIMIZE_HORIZONTAL
} E_Maximize;
typedef enum _E_Fullscreen
@ -358,6 +360,7 @@ struct _E_Border
E_Config_Dialog *border_remember_dialog;
E_Config_Dialog *border_border_dialog;
E_Menu *border_stacking_menu;
E_Menu *border_maximize_menu;
Evas_List *pending_move_resize;
struct {

View File

@ -763,6 +763,26 @@ e_config_init(void)
eb->params = NULL;
e_config->key_bindings = evas_list_append(e_config->key_bindings, eb);
// sndev : start
eb = E_NEW( E_Config_Binding_Key, 1 );
eb->context = E_BINDING_CONTEXT_ANY;
eb->key = strdup("F10");
eb->modifiers = E_BINDING_MODIFIER_ALT;
eb->any_mod = 0;
eb->action = strdup( "window_maximized_toggle" );
eb->params = strdup( "vertical" );
e_config->key_bindings = evas_list_append( e_config->key_bindings, eb );
eb = E_NEW( E_Config_Binding_Key, 1 );
eb->context = E_BINDING_CONTEXT_ANY;
eb->key = strdup("F10");
eb->modifiers = E_BINDING_MODIFIER_CTRL;
eb->any_mod = 0;
eb->action = strdup( "window_maximized_toggle" );
eb->params = strdup( "horizontal" );
e_config->key_bindings = evas_list_append( e_config->key_bindings, eb );
// sndev : end
eb = E_NEW(E_Config_Binding_Key, 1);
eb->context = E_BINDING_CONTEXT_ANY;
eb->key = strdup("r");

View File

@ -1010,7 +1010,60 @@ e_hints_window_size_get(E_Border *bd)
void
e_hints_window_maximized_set(E_Border *bd, int on)
{
if ((!bd->client.netwm.state.maximized_v) && (on))
if( on )
{
if( bd->maximized == E_MAXIMIZE_VERTICAL )
{
if( !bd->client.netwm.state.maximized_v )
{
bd->client.netwm.update.state = 1;
bd->client.netwm.state.maximized_v = 1;
bd->changed = 1;
}
}
else if( bd->maximized == E_MAXIMIZE_HORIZONTAL )
{
if( !bd->client.netwm.state.maximized_h )
{
bd->client.netwm.update.state = 1;
bd->client.netwm.state.maximized_h = 1;
bd->changed = 1;
}
}
else
{
if( !bd->client.netwm.state.maximized_v )
{
bd->client.netwm.update.state = 1;
bd->client.netwm.state.maximized_v = 1;
bd->changed = 1;
}
if( !bd->client.netwm.state.maximized_h )
{
bd->client.netwm.update.state = 1;
bd->client.netwm.state.maximized_h = 1;
bd->changed = 1;
}
}
}
else
{
if( bd->client.netwm.state.maximized_v )
{
bd->client.netwm.update.state = 1;
bd->client.netwm.state.maximized_v = 0;
bd->changed = 1;
}
if( bd->client.netwm.state.maximized_h )
{
bd->client.netwm.update.state = 1;
bd->client.netwm.state.maximized_h = 0;
bd->changed = 1;
}
}
/*if ((!bd->client.netwm.state.maximized_v) && (on))
{
bd->client.netwm.update.state = 1;
bd->client.netwm.state.maximized_v = 1;
@ -1033,7 +1086,7 @@ e_hints_window_maximized_set(E_Border *bd, int on)
bd->client.netwm.update.state = 1;
bd->client.netwm.state.maximized_h = 0;
bd->changed = 1;
}
}*/
}
void

View File

@ -11,6 +11,8 @@ static void _e_border_menu_cb_close(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_menu_cb_iconify(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_menu_cb_kill(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_verticaly(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_menu_cb_maximize_horizontaly(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_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi);
@ -69,6 +71,55 @@ e_int_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_
"widgets/border/default/stack_below");
}
m = e_menu_new();
bd->border_maximize_menu = m;
/* Only allow to change layer for windows in "normal" layers */
if ((!bd->lock_user_maximize) &&
((bd->layer == 50) || (bd->layer == 100) || (bd->layer == 150)))
{
int __fullmaximization = 0;
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Maximized"));
e_menu_item_check_set(mi, 1);
//e_menu_item_toggle_set(mi, (bd->maximized ? 1 : 0));
e_menu_item_toggle_set( mi, ( ( (__fullmaximization = bd->maximized &&
bd->maximized != E_MAXIMIZE_VERTICAL &&
bd->maximized != E_MAXIMIZE_HORIZONTAL)) ? 1 : 0 ));
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
e_menu_item_icon_edje_set(mi,
(char *)e_theme_edje_file_get("base/theme/borders",
"widgets/border/default/maximize"),
"widgets/border/default/maximize");
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Maximized verticaly"));
e_menu_item_check_set(mi, 1);
//e_menu_item_toggle_set(mi, (bd->maximized ? 1 : 0));
e_menu_item_toggle_set( mi, ( ( (bd->maximized &&
bd->maximized == E_MAXIMIZE_VERTICAL &&
bd->maximized != E_MAXIMIZE_HORIZONTAL) ||
__fullmaximization ) ? 1 : 0 ));
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize_verticaly, bd);
e_menu_item_icon_edje_set(mi,
(char *)e_theme_edje_file_get("base/theme/borders",
"widgets/border/default/maximize"),
"widgets/border/default/maximize");
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Maximized horizontaly"));
e_menu_item_check_set(mi, 1);
//e_menu_item_toggle_set(mi, (bd->maximized ? 1 : 0));
e_menu_item_toggle_set( mi, ( ( (bd->maximized &&
bd->maximized != E_MAXIMIZE_VERTICAL &&
bd->maximized == E_MAXIMIZE_HORIZONTAL) ||
__fullmaximization ) ? 1 : 0 ));
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize_horizontaly, bd);
e_menu_item_icon_edje_set(mi,
(char *)e_theme_edje_file_get("base/theme/borders",
"widgets/border/default/maximize"),
"widgets/border/default/maximize");
}
m = e_menu_new();
e_object_data_set(E_OBJECT(m), bd);
bd->border_menu = m;
@ -117,6 +168,14 @@ e_int_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_
"widgets/border/default/stacking"),
"widgets/border/default/stacking");
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Maximize"));
e_menu_item_submenu_set(mi, bd->border_maximize_menu);
e_menu_item_icon_edje_set(mi,
(char *)e_theme_edje_file_get("base/theme/borders",
"widgets/border/default/maximize"),
"widgets/border/default/maximize");
if ((!bd->lock_user_shade) && (!(!strcmp("borderless", bd->client.border.name))))
{
mi = e_menu_item_new(m);
@ -130,18 +189,44 @@ e_int_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_
"widgets/border/default/shade");
}
if (!bd->lock_user_maximize)
{
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Maximized"));
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, (bd->maximized ? 1 : 0));
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
e_menu_item_icon_edje_set(mi,
(char *)e_theme_edje_file_get("base/theme/borders",
"widgets/border/default/maximize"),
"widgets/border/default/maximize");
}
/*if (!bd->lock_user_maximize)
{
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Maximized"));
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, (bd->maximized ? 1 : 0));
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
e_menu_item_icon_edje_set(mi,
(char *)e_theme_edje_file_get("base/theme/borders",
"widgets/border/default/maximize"),
"widgets/border/default/maximize");
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Maximized verticaly"));
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, (bd->maximized ? 1 : 0));
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
e_menu_item_icon_edje_set(mi,
(char *)e_theme_edje_file_get("base/theme/borders",
"widgets/border/default/maximize"),
"widgets/border/default/maximize");
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Maximized horizontaly"));
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, (bd->maximized ? 1 : 0));
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
e_menu_item_icon_edje_set(mi,
(char *)e_theme_edje_file_get("base/theme/borders",
"widgets/border/default/maximize"),
"widgets/border/default/maximize");
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
}*/
if (!bd->lock_user_sticky)
{
@ -270,6 +355,12 @@ e_int_border_menu_del(E_Border *bd)
bd->border_stacking_menu = NULL;
was_menu = 1;
}
if( bd->border_maximize_menu )
{
e_object_del(E_OBJECT(bd->border_maximize_menu));
bd->border_maximize_menu = NULL;
was_menu = 1;
}
if (bd->border_menu)
{
e_object_del(E_OBJECT(bd->border_menu));
@ -365,11 +456,41 @@ _e_border_menu_cb_maximize(void *data, E_Menu *m, E_Menu_Item *mi)
bd = data;
if (!bd->lock_user_maximize)
{
if (bd->maximized) e_border_unmaximize(bd);
if (bd->maximized != E_MAXIMIZE_NONE &&
bd->maximized != E_MAXIMIZE_VERTICAL &&
bd->maximized != E_MAXIMIZE_HORIZONTAL ) e_border_unmaximize(bd);
else e_border_maximize(bd, e_config->maximize_policy);
}
}
/*** sndev : menu_cb_miximize_verticaly callback **************/
static void
_e_border_menu_cb_maximize_verticaly(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Border *bd;
bd = data;
if (!bd->lock_user_maximize)
{
if (bd->maximized && bd->maximized != E_MAXIMIZE_HORIZONTAL )
e_border_unmaximize_vh(bd, E_MAXIMIZE_VERTICAL );
else e_border_maximize(bd, E_MAXIMIZE_VERTICAL );
}
}
/*** sndev : menu_cb_miximize_verticaly callback **************/
static void
_e_border_menu_cb_maximize_horizontaly(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Border *bd;
bd = data;
if (!bd->lock_user_maximize)
{
if (bd->maximized && bd->maximized != E_MAXIMIZE_VERTICAL )
e_border_unmaximize_vh(bd, E_MAXIMIZE_HORIZONTAL );
else e_border_maximize(bd, E_MAXIMIZE_HORIZONTAL );
}
}
/*************************************************************/
static void
_e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi)
{