grab some window function from client.c and move them in window.c
This commit is contained in:
parent
40e7654925
commit
ddf64e9db2
2
Makefile
2
Makefile
|
@ -3,7 +3,7 @@
|
|||
|
||||
include config.mk
|
||||
|
||||
SRC = client.c draw.c event.c layout.c awesome.c tag.c util.c config.c screen.c statusbar.c uicb.c tab.c
|
||||
SRC = client.c draw.c event.c layout.c awesome.c tag.c util.c config.c screen.c statusbar.c uicb.c tab.c window.c
|
||||
OBJ = ${SRC:.c=.o} ${LAYOUTS:.c=.o}
|
||||
|
||||
all: options awesome
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include "util.h"
|
||||
#include "statusbar.h"
|
||||
#include "uicb.h"
|
||||
#include "window.h"
|
||||
|
||||
#define CONTROL_FIFO_PATH ".awesome_ctl"
|
||||
#define CONTROL_UNIX_SOCKET_PATH ".awesome_so_ctl"
|
||||
|
|
84
client.c
84
client.c
|
@ -21,7 +21,6 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <X11/Xatom.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/extensions/shape.h>
|
||||
|
||||
#include "screen.h"
|
||||
|
@ -31,6 +30,7 @@
|
|||
#include "tag.h"
|
||||
#include "util.h"
|
||||
#include "statusbar.h"
|
||||
#include "window.h"
|
||||
#include "layouts/floating.h"
|
||||
|
||||
/** Get a Client by its window
|
||||
|
@ -159,42 +159,6 @@ isprotodel(Display *disp, Window win)
|
|||
return ret;
|
||||
}
|
||||
|
||||
/** Set client WM_STATE property
|
||||
* \param c the client
|
||||
* \param state no idea
|
||||
*/
|
||||
static void
|
||||
window_setstate(Display *disp, Window win, long state)
|
||||
{
|
||||
long data[] = { state, None };
|
||||
|
||||
XChangeProperty(disp, win, XInternAtom(disp, "WM_STATE", False),
|
||||
XInternAtom(disp, "WM_STATE", False), 32,
|
||||
PropModeReplace, (unsigned char *) data, 2);
|
||||
}
|
||||
|
||||
/** Set client transparency using composite
|
||||
* \param c client
|
||||
* \param opacity opacity percentage
|
||||
*/
|
||||
static void
|
||||
window_settrans(Display *disp, Window win, double opacity)
|
||||
{
|
||||
unsigned int real_opacity = 0xffffffff;
|
||||
|
||||
if(opacity >= 0 && opacity <= 100)
|
||||
{
|
||||
real_opacity = ((opacity / 100.0) * 0xffffffff);
|
||||
XChangeProperty(disp, win,
|
||||
XInternAtom(disp, "_NET_WM_WINDOW_OPACITY", False),
|
||||
XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &real_opacity, 1L);
|
||||
}
|
||||
else
|
||||
XDeleteProperty(disp, win, XInternAtom(disp, "_NET_WM_WINDOW_OPACITY", False));
|
||||
|
||||
XSync(disp, False);
|
||||
}
|
||||
|
||||
/** Swap two client in the linked list clients
|
||||
* \param c1 first client
|
||||
* \param c2 second client
|
||||
|
@ -245,52 +209,6 @@ ban(Client * c)
|
|||
window_setstate(c->display, c->win, IconicState);
|
||||
}
|
||||
|
||||
/** Configure client
|
||||
* \param c the client
|
||||
*/
|
||||
void
|
||||
window_configure(Display *disp, Window win, int x, int y, int w, int h, int border)
|
||||
{
|
||||
XConfigureEvent ce;
|
||||
|
||||
ce.type = ConfigureNotify;
|
||||
ce.display = disp;
|
||||
ce.event = win;
|
||||
ce.window = win;
|
||||
ce.x = x;
|
||||
ce.y = y;
|
||||
ce.width = w;
|
||||
ce.height = h;
|
||||
ce.border_width = border;
|
||||
ce.above = None;
|
||||
ce.override_redirect = False;
|
||||
XSendEvent(disp, win, False, StructureNotifyMask, (XEvent *) & ce);
|
||||
}
|
||||
|
||||
/** Get a window state (WM_STATE)
|
||||
* \param disp Display ref
|
||||
* \param w Client window
|
||||
* \return state
|
||||
*/
|
||||
long
|
||||
window_getstate(Display *disp, Window w)
|
||||
{
|
||||
int format, status;
|
||||
long result = -1;
|
||||
unsigned char *p = NULL;
|
||||
unsigned long n, extra;
|
||||
Atom real;
|
||||
status = XGetWindowProperty(disp, w, XInternAtom(disp, "WM_STATE", False),
|
||||
0L, 2L, False, XInternAtom(disp, "WM_STATE", False),
|
||||
&real, &format, &n, &extra, (unsigned char **) &p);
|
||||
if(status != Success)
|
||||
return -1;
|
||||
if(n != 0)
|
||||
result = *p;
|
||||
p_delete(&p);
|
||||
return result;
|
||||
}
|
||||
|
||||
/** Attach client after another one
|
||||
* \param client to attach to
|
||||
* \param c the client
|
||||
|
|
2
client.h
2
client.h
|
@ -33,8 +33,6 @@ inline void client_attach(Client **, Client *);
|
|||
inline void client_detach(Client **, Client *);
|
||||
void client_reattach_after(Client *, Client *);
|
||||
void ban(Client *);
|
||||
void window_configure(Display *, Window, int, int, int, int, int);
|
||||
long window_getstate(Display *, Window);
|
||||
void focus(Client *, Bool, awesome_config *);
|
||||
void manage(Window, XWindowAttributes *, awesome_config *);
|
||||
void resize(Client *, int, int, int, int, awesome_config *, Bool);
|
||||
|
|
1
event.c
1
event.c
|
@ -32,6 +32,7 @@
|
|||
#include "draw.h"
|
||||
#include "statusbar.h"
|
||||
#include "util.h"
|
||||
#include "window.h"
|
||||
#include "layouts/tile.h"
|
||||
#include "layouts/floating.h"
|
||||
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
/*
|
||||
* window.c - window handling functions
|
||||
*
|
||||
* Copyright © 2007 Julien Danjou <julien@danjou.info>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <X11/Xatom.h>
|
||||
|
||||
#include "window.h"
|
||||
#include "util.h"
|
||||
|
||||
/** Set client WM_STATE property
|
||||
* \param disp Display ref
|
||||
* \param win Window
|
||||
* \param state state
|
||||
*/
|
||||
int
|
||||
window_setstate(Display *disp, Window win, long state)
|
||||
{
|
||||
long data[] = { state, None };
|
||||
|
||||
return XChangeProperty(disp, win, XInternAtom(disp, "WM_STATE", False),
|
||||
XInternAtom(disp, "WM_STATE", False), 32,
|
||||
PropModeReplace, (unsigned char *) data, 2);
|
||||
}
|
||||
|
||||
/** Get a window state (WM_STATE)
|
||||
* \param disp Display ref
|
||||
* \param w Client window
|
||||
* \return state
|
||||
*/
|
||||
long
|
||||
window_getstate(Display *disp, Window w)
|
||||
{
|
||||
int format;
|
||||
long result = -1;
|
||||
unsigned char *p = NULL;
|
||||
unsigned long n, extra;
|
||||
Atom real;
|
||||
if(XGetWindowProperty(disp, w, XInternAtom(disp, "WM_STATE", False),
|
||||
0L, 2L, False, XInternAtom(disp, "WM_STATE", False),
|
||||
&real, &format, &n, &extra, (unsigned char **) &p) != Success)
|
||||
return -1;
|
||||
if(n != 0)
|
||||
result = *p;
|
||||
p_delete(&p);
|
||||
return result;
|
||||
}
|
||||
|
||||
Status
|
||||
window_configure(Display *disp, Window win, int x, int y, int w, int h, int border)
|
||||
{
|
||||
XConfigureEvent ce;
|
||||
|
||||
ce.type = ConfigureNotify;
|
||||
ce.display = disp;
|
||||
ce.event = win;
|
||||
ce.window = win;
|
||||
ce.x = x;
|
||||
ce.y = y;
|
||||
ce.width = w;
|
||||
ce.height = h;
|
||||
ce.border_width = border;
|
||||
ce.above = None;
|
||||
ce.override_redirect = False;
|
||||
return XSendEvent(disp, win, False, StructureNotifyMask, (XEvent *) & ce);
|
||||
}
|
||||
|
||||
void
|
||||
window_settrans(Display *disp, Window win, double opacity)
|
||||
{
|
||||
unsigned int real_opacity = 0xffffffff;
|
||||
|
||||
if(opacity >= 0 && opacity <= 100)
|
||||
{
|
||||
real_opacity = ((opacity / 100.0) * 0xffffffff);
|
||||
XChangeProperty(disp, win, XInternAtom(disp, "_NET_WM_WINDOW_OPACITY", False),
|
||||
XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &real_opacity, 1L);
|
||||
}
|
||||
else
|
||||
XDeleteProperty(disp, win, XInternAtom(disp, "_NET_WM_WINDOW_OPACITY", False));
|
||||
|
||||
XSync(disp, False);
|
||||
}
|
||||
|
||||
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* window.h - window handling functions header
|
||||
*
|
||||
* Copyright © 2007 Julien Danjou <julien@danjou.info>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef AWESOME_WINDOW_H
|
||||
#define AWESOME_WINDOW_H
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
int window_setstate(Display *, Window, long);
|
||||
long window_getstate(Display *, Window);
|
||||
Status window_configure(Display *, Window, int, int, int, int, int);
|
||||
void window_settrans(Display *, Window, double);
|
||||
|
||||
#endif
|
||||
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99
|
Loading…
Reference in New Issue