action_maximise
This commit is contained in:
8
action.c
8
action.c
@@ -113,6 +113,14 @@ void action_fullscreen(void *data, int num, client *cli)
|
|||||||
client_raise_family(cli);
|
client_raise_family(cli);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void action_maximize(void *data, int num, client *cli)
|
||||||
|
{
|
||||||
|
if (!cli) return;
|
||||||
|
cli->max = !cli->max;
|
||||||
|
SETPROP_LONG(cli->window, atoms[XOAT_MAXIMIZE], &cli->max, 1);
|
||||||
|
client_place_spot(cli, cli->spot, cli->monitor, 1);
|
||||||
|
}
|
||||||
|
|
||||||
void action_maximize_vert(void *data, int num, client *cli)
|
void action_maximize_vert(void *data, int num, client *cli)
|
||||||
{
|
{
|
||||||
if (!cli) return;
|
if (!cli) return;
|
||||||
|
|||||||
1
atom.c
1
atom.c
@@ -31,6 +31,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
X(XOAT_SPOT),\
|
X(XOAT_SPOT),\
|
||||||
X(XOAT_EXIT),\
|
X(XOAT_EXIT),\
|
||||||
X(XOAT_RESTART),\
|
X(XOAT_RESTART),\
|
||||||
|
X(XOAT_MAXIMIZE),\
|
||||||
X(_NET_SUPPORTED),\
|
X(_NET_SUPPORTED),\
|
||||||
X(_NET_ACTIVE_WINDOW),\
|
X(_NET_ACTIVE_WINDOW),\
|
||||||
X(_NET_CLOSE_WINDOW),\
|
X(_NET_CLOSE_WINDOW),\
|
||||||
|
|||||||
8
client.c
8
client.c
@@ -100,6 +100,8 @@ client* window_build_client(Window win)
|
|||||||
c->maxv = client_has_state(c, atoms[_NET_WM_STATE_MAXIMIZE_VERT]);
|
c->maxv = client_has_state(c, atoms[_NET_WM_STATE_MAXIMIZE_VERT]);
|
||||||
c->maxh = client_has_state(c, atoms[_NET_WM_STATE_MAXIMIZE_HORZ]);
|
c->maxh = client_has_state(c, atoms[_NET_WM_STATE_MAXIMIZE_HORZ]);
|
||||||
|
|
||||||
|
GETPROP_LONG(win, atoms[XOAT_MAXIMIZE], &c->max, 1);
|
||||||
|
|
||||||
// _NET_WM_STATE_MAXIMIZE_VERT may apply to spot2 windows. Detect...
|
// _NET_WM_STATE_MAXIMIZE_VERT may apply to spot2 windows. Detect...
|
||||||
if (c->maxv && c->type != atoms[_NET_WM_WINDOW_TYPE_DIALOG]
|
if (c->maxv && c->type != atoms[_NET_WM_WINDOW_TYPE_DIALOG]
|
||||||
&& INTERSECT(m->spots[SPOT2].x, m->spots[SPOT2].y, m->spots[SPOT2].w, m->spots[SPOT2].h,
|
&& INTERSECT(m->spots[SPOT2].x, m->spots[SPOT2].y, m->spots[SPOT2].w, m->spots[SPOT2].h,
|
||||||
@@ -208,6 +210,12 @@ void client_place_spot(client *c, int spot, int mon, int force)
|
|||||||
{
|
{
|
||||||
w = m->w;
|
w = m->w;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
if (c->max && spot == SPOT1)
|
||||||
|
{
|
||||||
|
h = m->h - y;
|
||||||
|
w = m->w;
|
||||||
|
}
|
||||||
|
|
||||||
w -= BORDER*2; h -= BORDER*2;
|
w -= BORDER*2; h -= BORDER*2;
|
||||||
int sw = w, sh = h; long sr; XSizeHints size;
|
int sw = w, sh = h; long sr; XSizeHints size;
|
||||||
|
|||||||
3
xoat.c
3
xoat.c
@@ -76,7 +76,7 @@ typedef struct {
|
|||||||
Window transient, leader;
|
Window transient, leader;
|
||||||
Atom type, states[ATOMLIST+1];
|
Atom type, states[ATOMLIST+1];
|
||||||
short monitor, visible, manage, input, urgent, full, ours, maxv, maxh;
|
short monitor, visible, manage, input, urgent, full, ours, maxv, maxh;
|
||||||
unsigned long spot;
|
unsigned long spot, max;
|
||||||
char *class;
|
char *class;
|
||||||
} client;
|
} client;
|
||||||
|
|
||||||
@@ -110,6 +110,7 @@ void action_focus_monitor(void*, int, client*);
|
|||||||
void action_fullscreen(void*, int, client*);
|
void action_fullscreen(void*, int, client*);
|
||||||
void action_maximize_vert(void*, int, client*);
|
void action_maximize_vert(void*, int, client*);
|
||||||
void action_maximize_horz(void*, int, client*);
|
void action_maximize_horz(void*, int, client*);
|
||||||
|
void action_maximize(void*, int, client*);
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user