forked from enlightenment/enlightenment
Fix TODO bug for maximized windows across restarts.
SVN revision: 15717
This commit is contained in:
parent
741602cc85
commit
6b57b60733
1
TODO
1
TODO
|
@ -27,7 +27,6 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
* BUG: sometimes the mouse gets locked to a window with a mouse grab of some
|
* BUG: sometimes the mouse gets locked to a window with a mouse grab of some
|
||||||
sort in x (it gets the down event and not the up?) so e thinks its down but
|
sort in x (it gets the down event and not the up?) so e thinks its down but
|
||||||
it isn't - happens a lot in click to focus.
|
it isn't - happens a lot in click to focus.
|
||||||
* BUG: maximised apps when e restarts are not recognised as maximised
|
|
||||||
* BUG: client windows list somehow doesn't unref its list of borders in the
|
* BUG: client windows list somehow doesn't unref its list of borders in the
|
||||||
free callback set on it. why? is this callback never called? or is the
|
free callback set on it. why? is this callback never called? or is the
|
||||||
data pointer on the menu object null for some reason?
|
data pointer on the menu object null for some reason?
|
||||||
|
|
|
@ -11,6 +11,7 @@ Ecore_X_Atom E_ATOM_DESK = 0;
|
||||||
Ecore_X_Atom E_ATOM_MAPPED = 0;
|
Ecore_X_Atom E_ATOM_MAPPED = 0;
|
||||||
Ecore_X_Atom E_ATOM_SHADE_DIRECTION = 0;
|
Ecore_X_Atom E_ATOM_SHADE_DIRECTION = 0;
|
||||||
Ecore_X_Atom E_ATOM_HIDDEN = 0;
|
Ecore_X_Atom E_ATOM_HIDDEN = 0;
|
||||||
|
Ecore_X_Atom E_ATOM_SAVED_SIZE = 0;
|
||||||
|
|
||||||
/* externally accessible functions */
|
/* externally accessible functions */
|
||||||
int
|
int
|
||||||
|
@ -23,7 +24,8 @@ e_atoms_init(void)
|
||||||
E_ATOM_MAPPED = ecore_x_atom_get("__E_WINDOW_MAPPED");
|
E_ATOM_MAPPED = ecore_x_atom_get("__E_WINDOW_MAPPED");
|
||||||
E_ATOM_SHADE_DIRECTION = ecore_x_atom_get("__E_WINDOW_SHADE_DIRECTION");
|
E_ATOM_SHADE_DIRECTION = ecore_x_atom_get("__E_WINDOW_SHADE_DIRECTION");
|
||||||
E_ATOM_HIDDEN = ecore_x_atom_get("__E_WINDOW_HIDDEN");
|
E_ATOM_HIDDEN = ecore_x_atom_get("__E_WINDOW_HIDDEN");
|
||||||
|
E_ATOM_SAVED_SIZE = ecore_x_atom_get("__E_WINDOW_SAVED_SIZE");
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ extern EAPI Ecore_X_Atom E_ATOM_DESK;
|
||||||
extern EAPI Ecore_X_Atom E_ATOM_MAPPED;
|
extern EAPI Ecore_X_Atom E_ATOM_MAPPED;
|
||||||
extern EAPI Ecore_X_Atom E_ATOM_SHADE_DIRECTION;
|
extern EAPI Ecore_X_Atom E_ATOM_SHADE_DIRECTION;
|
||||||
extern EAPI Ecore_X_Atom E_ATOM_HIDDEN;
|
extern EAPI Ecore_X_Atom E_ATOM_HIDDEN;
|
||||||
|
extern EAPI Ecore_X_Atom E_ATOM_SAVED_SIZE;
|
||||||
|
|
||||||
EAPI int e_atoms_init(void);
|
EAPI int e_atoms_init(void);
|
||||||
EAPI int e_atoms_shutdown(void);
|
EAPI int e_atoms_shutdown(void);
|
||||||
|
|
|
@ -1110,10 +1110,14 @@ e_border_maximize(E_Border *bd, E_Maximize max)
|
||||||
int w, h;
|
int w, h;
|
||||||
|
|
||||||
// printf("MAXIMIZE!!\n");
|
// printf("MAXIMIZE!!\n");
|
||||||
bd->saved.x = bd->x;
|
if (!bd->saved.x && !bd->saved.y && !bd->saved.w && !bd->saved.h)
|
||||||
bd->saved.y = bd->y;
|
{
|
||||||
bd->saved.w = bd->w;
|
bd->saved.x = bd->x;
|
||||||
bd->saved.h = bd->h;
|
bd->saved.y = bd->y;
|
||||||
|
bd->saved.w = bd->w;
|
||||||
|
bd->saved.h = bd->h;
|
||||||
|
e_hints_window_saved_size_set(bd, bd->x, bd->y, bd->w, bd->h);
|
||||||
|
}
|
||||||
|
|
||||||
e_border_raise(bd);
|
e_border_raise(bd);
|
||||||
switch (max)
|
switch (max)
|
||||||
|
@ -1254,6 +1258,8 @@ e_border_unmaximize(E_Border *bd)
|
||||||
bd->maximized = E_MAXIMIZE_NONE;
|
bd->maximized = E_MAXIMIZE_NONE;
|
||||||
|
|
||||||
e_border_move_resize(bd, bd->saved.x, bd->saved.y, bd->saved.w, bd->saved.h);
|
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_saved_size_set(bd, 0, 0, 0, 0);
|
||||||
|
|
||||||
edje_object_signal_emit(bd->bg_object, "unmaximize", "");
|
edje_object_signal_emit(bd->bg_object, "unmaximize", "");
|
||||||
}
|
}
|
||||||
|
@ -1275,10 +1281,15 @@ e_border_fullscreen(E_Border *bd)
|
||||||
{
|
{
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
// printf("FULLSCREEEN!\n");
|
// printf("FULLSCREEEN!\n");
|
||||||
bd->saved.x = bd->x;
|
if (!bd->saved.x && !bd->saved.y && !bd->saved.w && !bd->saved.h)
|
||||||
bd->saved.y = bd->y;
|
{
|
||||||
bd->saved.w = bd->w;
|
bd->saved.x = bd->x;
|
||||||
bd->saved.h = bd->h;
|
bd->saved.y = bd->y;
|
||||||
|
bd->saved.w = bd->w;
|
||||||
|
bd->saved.h = bd->h;
|
||||||
|
e_hints_window_saved_size_set(bd, bd->x, bd->y, bd->w, bd->h);
|
||||||
|
}
|
||||||
|
|
||||||
bd->client_inset.sl = bd->client_inset.l;
|
bd->client_inset.sl = bd->client_inset.l;
|
||||||
bd->client_inset.sr = bd->client_inset.r;
|
bd->client_inset.sr = bd->client_inset.r;
|
||||||
bd->client_inset.st = bd->client_inset.t;
|
bd->client_inset.st = bd->client_inset.t;
|
||||||
|
|
|
@ -398,7 +398,10 @@ e_hints_window_init(E_Border *bd)
|
||||||
if (bd->client.netwm.state.shaded)
|
if (bd->client.netwm.state.shaded)
|
||||||
e_border_shade(bd, e_hints_window_shade_direction_get(bd));
|
e_border_shade(bd, e_hints_window_shade_direction_get(bd));
|
||||||
if ((bd->client.netwm.state.maximized_v) && (bd->client.netwm.state.maximized_h))
|
if ((bd->client.netwm.state.maximized_v) && (bd->client.netwm.state.maximized_h))
|
||||||
e_border_maximize(bd, e_config->maximize_policy);
|
{
|
||||||
|
e_hints_window_saved_size_get(bd, &bd->saved.x, &bd->saved.y, &bd->saved.w, &bd->saved.h);
|
||||||
|
e_border_maximize(bd, e_config->maximize_policy);
|
||||||
|
}
|
||||||
if (bd->client.netwm.state.fullscreen)
|
if (bd->client.netwm.state.fullscreen)
|
||||||
e_border_fullscreen(bd);
|
e_border_fullscreen(bd);
|
||||||
if ((bd->client.icccm.state == ECORE_X_WINDOW_STATE_HINT_ICONIC)
|
if ((bd->client.icccm.state == ECORE_X_WINDOW_STATE_HINT_ICONIC)
|
||||||
|
@ -994,6 +997,35 @@ e_hints_window_shade_direction_get(E_Border *bd)
|
||||||
return E_DIRECTION_UP;
|
return E_DIRECTION_UP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
e_hints_window_saved_size_set(E_Border *bd, int x, int y, int w, int h)
|
||||||
|
{
|
||||||
|
unsigned int sizes[4];
|
||||||
|
|
||||||
|
sizes[0] = x;
|
||||||
|
sizes[1] = y;
|
||||||
|
sizes[2] = w;
|
||||||
|
sizes[3] = h;
|
||||||
|
ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_SAVED_SIZE, sizes, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
e_hints_window_saved_size_get(E_Border *bd, int *x, int *y, int *w, int *h)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
int sizes[4];
|
||||||
|
|
||||||
|
memset(sizes, 0, sizeof(sizes));
|
||||||
|
ret = ecore_x_window_prop_card32_get(bd->client.win, E_ATOM_SAVED_SIZE,
|
||||||
|
sizes, 4);
|
||||||
|
if (x) *x = sizes[0];
|
||||||
|
if (y) *y = sizes[1];
|
||||||
|
if (w) *w = sizes[2];
|
||||||
|
if (h) *h = sizes[3];
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
e_hints_window_maximized_set(E_Border *bd, int on)
|
e_hints_window_maximized_set(E_Border *bd, int on)
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,6 +30,11 @@ EAPI void e_hints_window_hidden_set(E_Border *bd);
|
||||||
EAPI void e_hints_window_shade_direction_set(E_Border *bd, E_Direction dir);
|
EAPI void e_hints_window_shade_direction_set(E_Border *bd, E_Direction dir);
|
||||||
EAPI E_Direction e_hints_window_shade_direction_get(E_Border *bd);
|
EAPI E_Direction e_hints_window_shade_direction_get(E_Border *bd);
|
||||||
|
|
||||||
|
EAPI void e_hints_window_saved_size_set(E_Border *bd,
|
||||||
|
int x, int y, int w, int h);
|
||||||
|
EAPI int e_hints_window_saved_size_get(E_Border *bd,
|
||||||
|
int *x, int *y, int *w, int *h);
|
||||||
|
|
||||||
EAPI void e_hints_window_shaded_set(E_Border *bd, int on);
|
EAPI void e_hints_window_shaded_set(E_Border *bd, int on);
|
||||||
EAPI void e_hints_window_maximized_set(E_Border *bd, int on);
|
EAPI void e_hints_window_maximized_set(E_Border *bd, int on);
|
||||||
EAPI void e_hints_window_fullscreen_set(E_Border *bd, int on);
|
EAPI void e_hints_window_fullscreen_set(E_Border *bd, int on);
|
||||||
|
|
Loading…
Reference in New Issue