Minor zooming related fixes/cleanups.

SVN revision: 54065
This commit is contained in:
Kim Woelders 2010-10-31 10:43:21 +00:00
parent 8e4e5151b8
commit 09e59f25e8
3 changed files with 31 additions and 17 deletions

View File

@ -170,6 +170,9 @@ doEwinMoveResize(EWin * ewin, Desk * dsk, int x, int y, int w, int h, int flags)
int i, num;
Desk *pdesk;
if (ewin->state.zoomed)
return;
if (call_depth > 256)
return;
call_depth++;

View File

@ -689,23 +689,26 @@ EwinPropagateShapes(EWin * ewin)
void
EwinStateUpdate(EWin * ewin)
{
int fs_zo;
fs_zo = ewin->state.fullscreen || ewin->state.zoomed;
ewin->state.inhibit_actions = ewin->props.no_actions;
ewin->state.inhibit_focus = !ewin->icccm.need_input ||
EwinInhGetWM(ewin, focus) || ewin->state.iconified;
ewin->state.inhibit_move =
EwinInhGetUser(ewin, move) || ewin->state.fullscreen;
ewin->state.inhibit_move = EwinInhGetUser(ewin, move) || fs_zo;
ewin->state.inhibit_resize = ewin->state.iconified || ewin->state.shaded ||
(ewin->props.no_resize_h && ewin->props.no_resize_v) ||
EwinInhGetUser(ewin, size) || ewin->state.fullscreen;
EwinInhGetUser(ewin, size) || fs_zo;
ewin->state.inhibit_iconify = EwinInhGetWM(ewin, iconify);
ewin->state.inhibit_shade = ewin->state.no_border ||
ewin->state.iconified || ewin->state.fullscreen;
ewin->state.iconified || fs_zo;
ewin->state.inhibit_stick = 0;
ewin->state.inhibit_max_hor = ewin->state.inhibit_resize ||
ewin->props.no_resize_h || ewin->state.fullscreen;
ewin->props.no_resize_h || fs_zo;
ewin->state.inhibit_max_ver = ewin->state.inhibit_resize ||
ewin->props.no_resize_v || ewin->state.fullscreen;
ewin->props.no_resize_v || fs_zo;
ewin->state.inhibit_fullscreeen =
ewin->state.inhibit_move || ewin->state.inhibit_resize;
ewin->state.inhibit_change_desk = ewin->state.iconified;

View File

@ -23,6 +23,7 @@
*/
#include "E.h"
#include "ewins.h"
#include "hints.h"
#ifdef WITH_ZOOM
#include "borders.h"
@ -215,6 +216,9 @@ Zoom(EWin * ewin, int on)
{
int dw, dh;
if (Mode.wm.window)
return;
if (zoom_can == 0)
ZoomInit();
@ -238,17 +242,18 @@ Zoom(EWin * ewin, int on)
ewin->state.zoomed = 0;
EwinMoveResize(ewin, ewin->save_fs.x, ewin->save_fs.y,
ewin->client.w, ewin->client.h);
EwinWarpTo(ewin, 1);
ESync(0);
return;
}
if (ewin->state.fullscreen)
return;
on = SwitchRes(1, 0, 0, ewin->client.w, ewin->client.h, &dw, &dh);
if (on)
else
{
/* Zoom */
if (ewin->state.fullscreen)
return;
on = SwitchRes(1, 0, 0, ewin->client.w, ewin->client.h, &dw, &dh);
if (!on)
return;
zoom_last_ewin = ewin;
ewin->save_fs.x = EoGetX(ewin);
ewin->save_fs.y = EoGetY(ewin);
@ -258,9 +263,12 @@ Zoom(EWin * ewin, int on)
EwinMoveResize(ewin, 0, 0, ewin->client.w, ewin->client.h);
ewin->state.zoomed = 1;
FocusToEWin(ewin, FOCUS_SET);
EwinWarpTo(ewin, 1);
ESync(0);
}
EwinWarpTo(ewin, 1);
ESync(0);
EwinStateUpdate(ewin);
HintsSetWindowState(ewin);
}
void