convert XAtom to OBAtom
This commit is contained in:
parent
f25252a484
commit
641bc819d1
12 changed files with 201 additions and 202 deletions
|
@ -16,7 +16,7 @@ bin_PROGRAMS= openbox
|
||||||
openbox_LDADD=../otk/libotk.a @LIBINTL@
|
openbox_LDADD=../otk/libotk.a @LIBINTL@
|
||||||
|
|
||||||
openbox_SOURCES= configuration.cc screen.cc openbox.cc \
|
openbox_SOURCES= configuration.cc screen.cc openbox.cc \
|
||||||
util.cc bbwindow.cc workspace.cc xatom.cc blackbox.cc \
|
util.cc bbwindow.cc workspace.cc atom.cc blackbox.cc \
|
||||||
main.cc xeventhandler.cc
|
main.cc xeventhandler.cc
|
||||||
|
|
||||||
MAINTAINERCLEANFILES= Makefile.in
|
MAINTAINERCLEANFILES= Makefile.in
|
||||||
|
|
|
@ -8,15 +8,14 @@ extern "C" {
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "xatom.hh"
|
#include "atom.hh"
|
||||||
#include "screen.hh"
|
#include "screen.hh"
|
||||||
#include "util.hh"
|
#include "util.hh"
|
||||||
|
#include "otk/display.hh"
|
||||||
|
|
||||||
namespace ob {
|
namespace ob {
|
||||||
|
|
||||||
XAtom::XAtom(Display *d) {
|
OBAtom::OBAtom() {
|
||||||
_display = d;
|
|
||||||
|
|
||||||
// make sure asserts fire if there is a problem
|
// make sure asserts fire if there is a problem
|
||||||
memset(_atoms, 0, sizeof(_atoms));
|
memset(_atoms, 0, sizeof(_atoms));
|
||||||
|
|
||||||
|
@ -149,11 +148,11 @@ XAtom::XAtom(Display *d) {
|
||||||
/*
|
/*
|
||||||
* clean up the class' members
|
* clean up the class' members
|
||||||
*/
|
*/
|
||||||
XAtom::~XAtom() {
|
OBAtom::~OBAtom() {
|
||||||
while (!_support_windows.empty()) {
|
while (!_support_windows.empty()) {
|
||||||
// make sure we aren't fucking with this somewhere
|
// make sure we aren't fucking with this somewhere
|
||||||
assert(_support_windows.back() != None);
|
assert(_support_windows.back() != None);
|
||||||
XDestroyWindow(_display, _support_windows.back());
|
XDestroyWindow(otk::OBDisplay::display, _support_windows.back());
|
||||||
_support_windows.pop_back();
|
_support_windows.pop_back();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -162,19 +161,19 @@ XAtom::~XAtom() {
|
||||||
/*
|
/*
|
||||||
* Returns an atom from the Xserver, creating it if necessary.
|
* Returns an atom from the Xserver, creating it if necessary.
|
||||||
*/
|
*/
|
||||||
Atom XAtom::create(const char *name) const {
|
Atom OBAtom::create(const char *name) const {
|
||||||
return XInternAtom(_display, name, False);
|
return XInternAtom(otk::OBDisplay::display, name, False);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets which atoms are supported for NETWM, by Openbox, on the root window.
|
* Sets which atoms are supported for NETWM, by Openbox, on the root window.
|
||||||
*/
|
*/
|
||||||
void XAtom::setSupported(const otk::ScreenInfo *screen) {
|
void OBAtom::setSupported(const otk::ScreenInfo *screen) {
|
||||||
Window root = screen->getRootWindow();
|
Window root = screen->getRootWindow();
|
||||||
|
|
||||||
// create the netwm support window
|
// create the netwm support window
|
||||||
Window w = XCreateSimpleWindow(_display, root, 0, 0, 1, 1, 0, 0, 0);
|
Window w = XCreateSimpleWindow(otk::OBDisplay::display, root, 0, 0, 1, 1, 0, 0, 0);
|
||||||
assert(w != None);
|
assert(w != None);
|
||||||
_support_windows.push_back(w);
|
_support_windows.push_back(w);
|
||||||
|
|
||||||
|
@ -249,13 +248,13 @@ void XAtom::setSupported(const otk::ScreenInfo *screen) {
|
||||||
* Sets a window property on a window, optionally appending to the existing
|
* Sets a window property on a window, optionally appending to the existing
|
||||||
* value.
|
* value.
|
||||||
*/
|
*/
|
||||||
void XAtom::setValue(Window win, Atom atom, Atom type,
|
void OBAtom::setValue(Window win, Atom atom, Atom type,
|
||||||
unsigned char* data, int size, int nelements,
|
unsigned char* data, int size, int nelements,
|
||||||
bool append) const {
|
bool append) const {
|
||||||
assert(win != None); assert(atom != None); assert(type != None);
|
assert(win != None); assert(atom != None); assert(type != None);
|
||||||
assert(nelements == 0 || (nelements > 0 && data != (unsigned char *) 0));
|
assert(nelements == 0 || (nelements > 0 && data != (unsigned char *) 0));
|
||||||
assert(size == 8 || size == 16 || size == 32);
|
assert(size == 8 || size == 16 || size == 32);
|
||||||
XChangeProperty(_display, win, atom, type, size,
|
XChangeProperty(otk::OBDisplay::display, win, atom, type, size,
|
||||||
(append ? PropModeAppend : PropModeReplace),
|
(append ? PropModeAppend : PropModeReplace),
|
||||||
data, nelements);
|
data, nelements);
|
||||||
}
|
}
|
||||||
|
@ -264,7 +263,7 @@ void XAtom::setValue(Window win, Atom atom, Atom type,
|
||||||
/*
|
/*
|
||||||
* Set a 32-bit property value on a window.
|
* Set a 32-bit property value on a window.
|
||||||
*/
|
*/
|
||||||
void XAtom::setValue(Window win, Atoms atom, Atoms type,
|
void OBAtom::setValue(Window win, Atoms atom, Atoms type,
|
||||||
unsigned long value) const {
|
unsigned long value) const {
|
||||||
assert(atom >= 0 && atom < NUM_ATOMS);
|
assert(atom >= 0 && atom < NUM_ATOMS);
|
||||||
assert(type >= 0 && type < NUM_ATOMS);
|
assert(type >= 0 && type < NUM_ATOMS);
|
||||||
|
@ -276,7 +275,7 @@ void XAtom::setValue(Window win, Atoms atom, Atoms type,
|
||||||
/*
|
/*
|
||||||
* Set an array of 32-bit properties value on a window.
|
* Set an array of 32-bit properties value on a window.
|
||||||
*/
|
*/
|
||||||
void XAtom::setValue(Window win, Atoms atom, Atoms type,
|
void OBAtom::setValue(Window win, Atoms atom, Atoms type,
|
||||||
unsigned long value[], int elements) const {
|
unsigned long value[], int elements) const {
|
||||||
assert(atom >= 0 && atom < NUM_ATOMS);
|
assert(atom >= 0 && atom < NUM_ATOMS);
|
||||||
assert(type >= 0 && type < NUM_ATOMS);
|
assert(type >= 0 && type < NUM_ATOMS);
|
||||||
|
@ -288,7 +287,7 @@ void XAtom::setValue(Window win, Atoms atom, Atoms type,
|
||||||
/*
|
/*
|
||||||
* Set an string property value on a window.
|
* Set an string property value on a window.
|
||||||
*/
|
*/
|
||||||
void XAtom::setValue(Window win, Atoms atom, StringType type,
|
void OBAtom::setValue(Window win, Atoms atom, StringType type,
|
||||||
const std::string &value) const {
|
const std::string &value) const {
|
||||||
assert(atom >= 0 && atom < NUM_ATOMS);
|
assert(atom >= 0 && atom < NUM_ATOMS);
|
||||||
assert(type >= 0 && type < NUM_STRING_TYPE);
|
assert(type >= 0 && type < NUM_STRING_TYPE);
|
||||||
|
@ -308,7 +307,7 @@ void XAtom::setValue(Window win, Atoms atom, StringType type,
|
||||||
/*
|
/*
|
||||||
* Set an array of string property values on a window.
|
* Set an array of string property values on a window.
|
||||||
*/
|
*/
|
||||||
void XAtom::setValue(Window win, Atoms atom, StringType type,
|
void OBAtom::setValue(Window win, Atoms atom, StringType type,
|
||||||
const StringVect &strings) const {
|
const StringVect &strings) const {
|
||||||
assert(atom >= 0 && atom < NUM_ATOMS);
|
assert(atom >= 0 && atom < NUM_ATOMS);
|
||||||
assert(type >= 0 && type < NUM_STRING_TYPE);
|
assert(type >= 0 && type < NUM_STRING_TYPE);
|
||||||
|
@ -340,7 +339,7 @@ void XAtom::setValue(Window win, Atoms atom, StringType type,
|
||||||
* property did not exist on the window, or has a different type/size format
|
* property did not exist on the window, or has a different type/size format
|
||||||
* than the user tried to retrieve.
|
* than the user tried to retrieve.
|
||||||
*/
|
*/
|
||||||
bool XAtom::getValue(Window win, Atom atom, Atom type,
|
bool OBAtom::getValue(Window win, Atom atom, Atom type,
|
||||||
unsigned long &nelements, unsigned char **value,
|
unsigned long &nelements, unsigned char **value,
|
||||||
int size) const {
|
int size) const {
|
||||||
assert(win != None); assert(atom != None); assert(type != None);
|
assert(win != None); assert(atom != None); assert(type != None);
|
||||||
|
@ -355,7 +354,7 @@ bool XAtom::getValue(Window win, Atom atom, Atom type,
|
||||||
bool ret = False;
|
bool ret = False;
|
||||||
|
|
||||||
// try get the first element
|
// try get the first element
|
||||||
result = XGetWindowProperty(_display, win, atom, 0l, 1l, False,
|
result = XGetWindowProperty(otk::OBDisplay::display, win, atom, 0l, 1l, False,
|
||||||
AnyPropertyType, &ret_type, &ret_size,
|
AnyPropertyType, &ret_type, &ret_size,
|
||||||
&nelements, &ret_bytes, &c_val);
|
&nelements, &ret_bytes, &c_val);
|
||||||
ret = (result == Success && ret_type == type && ret_size == size &&
|
ret = (result == Success && ret_type == type && ret_size == size &&
|
||||||
|
@ -373,7 +372,7 @@ bool XAtom::getValue(Window win, Atom atom, Atom type,
|
||||||
int remain = (ret_bytes - 1)/sizeof(long) + 1 + 1;
|
int remain = (ret_bytes - 1)/sizeof(long) + 1 + 1;
|
||||||
if (remain > size/8 * (signed)maxread) // dont get more than the max
|
if (remain > size/8 * (signed)maxread) // dont get more than the max
|
||||||
remain = size/8 * (signed)maxread;
|
remain = size/8 * (signed)maxread;
|
||||||
result = XGetWindowProperty(_display, win, atom, 0l, remain, False, type,
|
result = XGetWindowProperty(otk::OBDisplay::display, win, atom, 0l, remain, False, type,
|
||||||
&ret_type, &ret_size, &nelements, &ret_bytes,
|
&ret_type, &ret_size, &nelements, &ret_bytes,
|
||||||
&c_val);
|
&c_val);
|
||||||
ret = (result == Success && ret_type == type && ret_size == size &&
|
ret = (result == Success && ret_type == type && ret_size == size &&
|
||||||
|
@ -398,7 +397,7 @@ bool XAtom::getValue(Window win, Atom atom, Atom type,
|
||||||
/*
|
/*
|
||||||
* Gets a 32-bit property's value from a window.
|
* Gets a 32-bit property's value from a window.
|
||||||
*/
|
*/
|
||||||
bool XAtom::getValue(Window win, Atoms atom, Atoms type,
|
bool OBAtom::getValue(Window win, Atoms atom, Atoms type,
|
||||||
unsigned long &nelements,
|
unsigned long &nelements,
|
||||||
unsigned long **value) const {
|
unsigned long **value) const {
|
||||||
assert(atom >= 0 && atom < NUM_ATOMS);
|
assert(atom >= 0 && atom < NUM_ATOMS);
|
||||||
|
@ -411,7 +410,7 @@ bool XAtom::getValue(Window win, Atoms atom, Atoms type,
|
||||||
/*
|
/*
|
||||||
* Gets a single 32-bit property's value from a window.
|
* Gets a single 32-bit property's value from a window.
|
||||||
*/
|
*/
|
||||||
bool XAtom::getValue(Window win, Atoms atom, Atoms type,
|
bool OBAtom::getValue(Window win, Atoms atom, Atoms type,
|
||||||
unsigned long &value) const {
|
unsigned long &value) const {
|
||||||
assert(atom >= 0 && atom < NUM_ATOMS);
|
assert(atom >= 0 && atom < NUM_ATOMS);
|
||||||
assert(type >= 0 && type < NUM_ATOMS);
|
assert(type >= 0 && type < NUM_ATOMS);
|
||||||
|
@ -429,7 +428,7 @@ bool XAtom::getValue(Window win, Atoms atom, Atoms type,
|
||||||
/*
|
/*
|
||||||
* Gets an string property's value from a window.
|
* Gets an string property's value from a window.
|
||||||
*/
|
*/
|
||||||
bool XAtom::getValue(Window win, Atoms atom, StringType type,
|
bool OBAtom::getValue(Window win, Atoms atom, StringType type,
|
||||||
std::string &value) const {
|
std::string &value) const {
|
||||||
unsigned long n = 1;
|
unsigned long n = 1;
|
||||||
StringVect s;
|
StringVect s;
|
||||||
|
@ -441,7 +440,7 @@ bool XAtom::getValue(Window win, Atoms atom, StringType type,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool XAtom::getValue(Window win, Atoms atom, StringType type,
|
bool OBAtom::getValue(Window win, Atoms atom, StringType type,
|
||||||
unsigned long &nelements, StringVect &strings) const {
|
unsigned long &nelements, StringVect &strings) const {
|
||||||
assert(atom >= 0 && atom < NUM_ATOMS);
|
assert(atom >= 0 && atom < NUM_ATOMS);
|
||||||
assert(type >= 0 && type < NUM_STRING_TYPE);
|
assert(type >= 0 && type < NUM_STRING_TYPE);
|
||||||
|
@ -484,13 +483,13 @@ bool XAtom::getValue(Window win, Atoms atom, StringType type,
|
||||||
/*
|
/*
|
||||||
* Removes a property entirely from a window.
|
* Removes a property entirely from a window.
|
||||||
*/
|
*/
|
||||||
void XAtom::eraseValue(Window win, Atoms atom) const {
|
void OBAtom::eraseValue(Window win, Atoms atom) const {
|
||||||
assert(atom >= 0 && atom < NUM_ATOMS);
|
assert(atom >= 0 && atom < NUM_ATOMS);
|
||||||
XDeleteProperty(_display, win, _atoms[atom]);
|
XDeleteProperty(otk::OBDisplay::display, win, _atoms[atom]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void XAtom::sendClientMessage(Window target, Atoms type, Window about,
|
void OBAtom::sendClientMessage(Window target, Atoms type, Window about,
|
||||||
long data, long data1, long data2,
|
long data, long data1, long data2,
|
||||||
long data3, long data4) const {
|
long data3, long data4) const {
|
||||||
assert(atom >= 0 && atom < NUM_ATOMS);
|
assert(atom >= 0 && atom < NUM_ATOMS);
|
||||||
|
@ -507,7 +506,7 @@ void XAtom::sendClientMessage(Window target, Atoms type, Window about,
|
||||||
e.xclient.data.l[3] = data3;
|
e.xclient.data.l[3] = data3;
|
||||||
e.xclient.data.l[4] = data4;
|
e.xclient.data.l[4] = data4;
|
||||||
|
|
||||||
XSendEvent(_display, target, False,
|
XSendEvent(otk::OBDisplay::display, target, False,
|
||||||
SubstructureRedirectMask | SubstructureNotifyMask,
|
SubstructureRedirectMask | SubstructureNotifyMask,
|
||||||
&e);
|
&e);
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
// XAtom.h for Openbox
|
// OBAtom.h for Openbox
|
||||||
#ifndef __XAtom_h
|
#ifndef __atom_hh
|
||||||
#define __XAtom_h
|
#define __atom_hh
|
||||||
|
|
||||||
/*! @file xatom.hh
|
/*! @file xatom.hh
|
||||||
@brief Provides access to atoms on the display
|
@brief Provides access to atoms on the display
|
||||||
|
@ -20,7 +20,7 @@ extern "C" {
|
||||||
|
|
||||||
namespace ob {
|
namespace ob {
|
||||||
|
|
||||||
class XAtom {
|
class OBAtom {
|
||||||
public:
|
public:
|
||||||
enum Atoms {
|
enum Atoms {
|
||||||
// types
|
// types
|
||||||
|
@ -152,7 +152,6 @@ public:
|
||||||
private:
|
private:
|
||||||
typedef std::vector<Window> SupportWindows;
|
typedef std::vector<Window> SupportWindows;
|
||||||
|
|
||||||
Display *_display;
|
|
||||||
// windows used to specify support for NETWM
|
// windows used to specify support for NETWM
|
||||||
SupportWindows _support_windows;
|
SupportWindows _support_windows;
|
||||||
Atom _atoms[NUM_ATOMS];
|
Atom _atoms[NUM_ATOMS];
|
||||||
|
@ -166,14 +165,14 @@ private:
|
||||||
int size) const;
|
int size) const;
|
||||||
|
|
||||||
// no copying!!
|
// no copying!!
|
||||||
XAtom(const XAtom &);
|
OBAtom(const OBAtom &);
|
||||||
XAtom& operator=(const XAtom&);
|
OBAtom& operator=(const OBAtom&);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef std::vector<std::string> StringVect;
|
typedef std::vector<std::string> StringVect;
|
||||||
|
|
||||||
XAtom(Display *d);
|
OBAtom();
|
||||||
virtual ~XAtom();
|
virtual ~OBAtom();
|
||||||
|
|
||||||
// setup support on a screen, each screen should call this once in its
|
// setup support on a screen, each screen should call this once in its
|
||||||
// constructor.
|
// constructor.
|
||||||
|
@ -216,4 +215,4 @@ public:
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // __XAtom_h
|
#endif // __atom_hh
|
148
src/bbwindow.cc
148
src/bbwindow.cc
|
@ -1049,7 +1049,7 @@ void BlackboxWindow::positionWindows(void) {
|
||||||
void BlackboxWindow::updateStrut(void) {
|
void BlackboxWindow::updateStrut(void) {
|
||||||
unsigned long num = 4;
|
unsigned long num = 4;
|
||||||
unsigned long *data;
|
unsigned long *data;
|
||||||
if (! xatom->getValue(client.window, XAtom::net_wm_strut, XAtom::cardinal,
|
if (! xatom->getValue(client.window, OBAtom::net_wm_strut, OBAtom::cardinal,
|
||||||
num, &data))
|
num, &data))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1071,27 +1071,27 @@ bool BlackboxWindow::getWindowType(void) {
|
||||||
|
|
||||||
unsigned long *val;
|
unsigned long *val;
|
||||||
unsigned long num = (unsigned) -1;
|
unsigned long num = (unsigned) -1;
|
||||||
if (xatom->getValue(client.window, XAtom::net_wm_window_type, XAtom::atom,
|
if (xatom->getValue(client.window, OBAtom::net_wm_window_type, OBAtom::atom,
|
||||||
num, &val)) {
|
num, &val)) {
|
||||||
for (unsigned long i = 0; i < num; ++i) {
|
for (unsigned long i = 0; i < num; ++i) {
|
||||||
if (val[i] == xatom->getAtom(XAtom::net_wm_window_type_desktop))
|
if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_desktop))
|
||||||
window_type = Type_Desktop;
|
window_type = Type_Desktop;
|
||||||
else if (val[i] == xatom->getAtom(XAtom::net_wm_window_type_dock))
|
else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_dock))
|
||||||
window_type = Type_Dock;
|
window_type = Type_Dock;
|
||||||
else if (val[i] == xatom->getAtom(XAtom::net_wm_window_type_toolbar))
|
else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_toolbar))
|
||||||
window_type = Type_Toolbar;
|
window_type = Type_Toolbar;
|
||||||
else if (val[i] == xatom->getAtom(XAtom::net_wm_window_type_menu))
|
else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_menu))
|
||||||
window_type = Type_Menu;
|
window_type = Type_Menu;
|
||||||
else if (val[i] == xatom->getAtom(XAtom::net_wm_window_type_utility))
|
else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_utility))
|
||||||
window_type = Type_Utility;
|
window_type = Type_Utility;
|
||||||
else if (val[i] == xatom->getAtom(XAtom::net_wm_window_type_splash))
|
else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_splash))
|
||||||
window_type = Type_Splash;
|
window_type = Type_Splash;
|
||||||
else if (val[i] == xatom->getAtom(XAtom::net_wm_window_type_dialog))
|
else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_dialog))
|
||||||
window_type = Type_Dialog;
|
window_type = Type_Dialog;
|
||||||
else if (val[i] == xatom->getAtom(XAtom::net_wm_window_type_normal))
|
else if (val[i] == xatom->getAtom(OBAtom::net_wm_window_type_normal))
|
||||||
window_type = Type_Normal;
|
window_type = Type_Normal;
|
||||||
else if (val[i] ==
|
else if (val[i] ==
|
||||||
xatom->getAtom(XAtom::kde_net_wm_window_type_override))
|
xatom->getAtom(OBAtom::kde_net_wm_window_type_override))
|
||||||
mwm_decorations = 0; // prevent this window from getting any decor
|
mwm_decorations = 0; // prevent this window from getting any decor
|
||||||
}
|
}
|
||||||
delete val;
|
delete val;
|
||||||
|
@ -1115,21 +1115,21 @@ bool BlackboxWindow::getWindowType(void) {
|
||||||
|
|
||||||
|
|
||||||
void BlackboxWindow::getWMName(void) {
|
void BlackboxWindow::getWMName(void) {
|
||||||
if (xatom->getValue(client.window, XAtom::net_wm_name,
|
if (xatom->getValue(client.window, OBAtom::net_wm_name,
|
||||||
XAtom::utf8, client.title) &&
|
OBAtom::utf8, client.title) &&
|
||||||
!client.title.empty()) {
|
!client.title.empty()) {
|
||||||
xatom->eraseValue(client.window, XAtom::net_wm_visible_name);
|
xatom->eraseValue(client.window, OBAtom::net_wm_visible_name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//fall through to using WM_NAME
|
//fall through to using WM_NAME
|
||||||
if (xatom->getValue(client.window, XAtom::wm_name, XAtom::ansi, client.title)
|
if (xatom->getValue(client.window, OBAtom::wm_name, OBAtom::ansi, client.title)
|
||||||
&& !client.title.empty()) {
|
&& !client.title.empty()) {
|
||||||
xatom->eraseValue(client.window, XAtom::net_wm_visible_name);
|
xatom->eraseValue(client.window, OBAtom::net_wm_visible_name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// fall back to an internal default
|
// fall back to an internal default
|
||||||
client.title = "Unnamed";
|
client.title = "Unnamed";
|
||||||
xatom->setValue(client.window, XAtom::net_wm_visible_name, XAtom::utf8,
|
xatom->setValue(client.window, OBAtom::net_wm_visible_name, OBAtom::utf8,
|
||||||
client.title);
|
client.title);
|
||||||
|
|
||||||
#ifdef DEBUG_WITH_ID
|
#ifdef DEBUG_WITH_ID
|
||||||
|
@ -1143,22 +1143,22 @@ void BlackboxWindow::getWMName(void) {
|
||||||
|
|
||||||
|
|
||||||
void BlackboxWindow::getWMIconName(void) {
|
void BlackboxWindow::getWMIconName(void) {
|
||||||
if (xatom->getValue(client.window, XAtom::net_wm_icon_name,
|
if (xatom->getValue(client.window, OBAtom::net_wm_icon_name,
|
||||||
XAtom::utf8, client.icon_title) &&
|
OBAtom::utf8, client.icon_title) &&
|
||||||
!client.icon_title.empty()) {
|
!client.icon_title.empty()) {
|
||||||
xatom->eraseValue(client.window, XAtom::net_wm_visible_icon_name);
|
xatom->eraseValue(client.window, OBAtom::net_wm_visible_icon_name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//fall through to using WM_ICON_NAME
|
//fall through to using WM_ICON_NAME
|
||||||
if (xatom->getValue(client.window, XAtom::wm_icon_name, XAtom::ansi,
|
if (xatom->getValue(client.window, OBAtom::wm_icon_name, OBAtom::ansi,
|
||||||
client.icon_title) &&
|
client.icon_title) &&
|
||||||
!client.icon_title.empty()) {
|
!client.icon_title.empty()) {
|
||||||
xatom->eraseValue(client.window, XAtom::net_wm_visible_icon_name);
|
xatom->eraseValue(client.window, OBAtom::net_wm_visible_icon_name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// fall back to using the main name
|
// fall back to using the main name
|
||||||
client.icon_title = client.title;
|
client.icon_title = client.title;
|
||||||
xatom->setValue(client.window, XAtom::net_wm_visible_icon_name, XAtom::utf8,
|
xatom->setValue(client.window, OBAtom::net_wm_visible_icon_name, OBAtom::utf8,
|
||||||
client.icon_title);
|
client.icon_title);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1177,10 +1177,10 @@ void BlackboxWindow::getWMProtocols(void) {
|
||||||
if (XGetWMProtocols(otk::OBDisplay::display, client.window,
|
if (XGetWMProtocols(otk::OBDisplay::display, client.window,
|
||||||
&proto, &num_return)) {
|
&proto, &num_return)) {
|
||||||
for (int i = 0; i < num_return; ++i) {
|
for (int i = 0; i < num_return; ++i) {
|
||||||
if (proto[i] == xatom->getAtom(XAtom::wm_delete_window)) {
|
if (proto[i] == xatom->getAtom(OBAtom::wm_delete_window)) {
|
||||||
decorations |= Decor_Close;
|
decorations |= Decor_Close;
|
||||||
functions |= Func_Close;
|
functions |= Func_Close;
|
||||||
} else if (proto[i] == xatom->getAtom(XAtom::wm_take_focus))
|
} else if (proto[i] == xatom->getAtom(OBAtom::wm_take_focus))
|
||||||
flags.send_focus_message = True;
|
flags.send_focus_message = True;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1318,7 +1318,7 @@ void BlackboxWindow::getWMNormalHints(void) {
|
||||||
void BlackboxWindow::getNetWMHints(void) {
|
void BlackboxWindow::getNetWMHints(void) {
|
||||||
unsigned long workspace;
|
unsigned long workspace;
|
||||||
|
|
||||||
if (xatom->getValue(client.window, XAtom::net_wm_desktop, XAtom::cardinal,
|
if (xatom->getValue(client.window, OBAtom::net_wm_desktop, OBAtom::cardinal,
|
||||||
workspace)) {
|
workspace)) {
|
||||||
if (workspace == 0xffffffff)
|
if (workspace == 0xffffffff)
|
||||||
flags.stuck = True;
|
flags.stuck = True;
|
||||||
|
@ -1328,26 +1328,26 @@ void BlackboxWindow::getNetWMHints(void) {
|
||||||
|
|
||||||
unsigned long *state;
|
unsigned long *state;
|
||||||
unsigned long num = (unsigned) -1;
|
unsigned long num = (unsigned) -1;
|
||||||
if (xatom->getValue(client.window, XAtom::net_wm_state, XAtom::atom,
|
if (xatom->getValue(client.window, OBAtom::net_wm_state, OBAtom::atom,
|
||||||
num, &state)) {
|
num, &state)) {
|
||||||
bool vert = False,
|
bool vert = False,
|
||||||
horz = False;
|
horz = False;
|
||||||
for (unsigned long i = 0; i < num; ++i) {
|
for (unsigned long i = 0; i < num; ++i) {
|
||||||
if (state[i] == xatom->getAtom(XAtom::net_wm_state_modal))
|
if (state[i] == xatom->getAtom(OBAtom::net_wm_state_modal))
|
||||||
flags.modal = True;
|
flags.modal = True;
|
||||||
else if (state[i] == xatom->getAtom(XAtom::net_wm_state_shaded))
|
else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_shaded))
|
||||||
flags.shaded = True;
|
flags.shaded = True;
|
||||||
else if (state[i] == xatom->getAtom(XAtom::net_wm_state_skip_taskbar))
|
else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_skip_taskbar))
|
||||||
flags.skip_taskbar = True;
|
flags.skip_taskbar = True;
|
||||||
else if (state[i] == xatom->getAtom(XAtom::net_wm_state_skip_pager))
|
else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_skip_pager))
|
||||||
flags.skip_pager = True;
|
flags.skip_pager = True;
|
||||||
else if (state[i] == xatom->getAtom(XAtom::net_wm_state_fullscreen))
|
else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_fullscreen))
|
||||||
flags.fullscreen = True;
|
flags.fullscreen = True;
|
||||||
else if (state[i] == xatom->getAtom(XAtom::net_wm_state_hidden))
|
else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_hidden))
|
||||||
setState(IconicState);
|
setState(IconicState);
|
||||||
else if (state[i] == xatom->getAtom(XAtom::net_wm_state_maximized_vert))
|
else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_maximized_vert))
|
||||||
vert = True;
|
vert = True;
|
||||||
else if (state[i] == xatom->getAtom(XAtom::net_wm_state_maximized_horz))
|
else if (state[i] == xatom->getAtom(OBAtom::net_wm_state_maximized_horz))
|
||||||
horz = True;
|
horz = True;
|
||||||
}
|
}
|
||||||
if (vert && horz)
|
if (vert && horz)
|
||||||
|
@ -1374,8 +1374,8 @@ void BlackboxWindow::getMWMHints(void) {
|
||||||
MwmHints *mwm_hint;
|
MwmHints *mwm_hint;
|
||||||
|
|
||||||
num = PropMwmHintsElements;
|
num = PropMwmHintsElements;
|
||||||
if (! xatom->getValue(client.window, XAtom::motif_wm_hints,
|
if (! xatom->getValue(client.window, OBAtom::motif_wm_hints,
|
||||||
XAtom::motif_wm_hints, num,
|
OBAtom::motif_wm_hints, num,
|
||||||
(unsigned long **)&mwm_hint))
|
(unsigned long **)&mwm_hint))
|
||||||
return;
|
return;
|
||||||
if (num < PropMwmHintsElements) {
|
if (num < PropMwmHintsElements) {
|
||||||
|
@ -1438,8 +1438,8 @@ bool BlackboxWindow::getBlackboxHints(void) {
|
||||||
BlackboxHints *blackbox_hint;
|
BlackboxHints *blackbox_hint;
|
||||||
|
|
||||||
num = PropBlackboxHintsElements;
|
num = PropBlackboxHintsElements;
|
||||||
if (! xatom->getValue(client.window, XAtom::blackbox_hints,
|
if (! xatom->getValue(client.window, OBAtom::blackbox_hints,
|
||||||
XAtom::blackbox_hints, num,
|
OBAtom::blackbox_hints, num,
|
||||||
(unsigned long **)&blackbox_hint))
|
(unsigned long **)&blackbox_hint))
|
||||||
return False;
|
return False;
|
||||||
if (num < PropBlackboxHintsElements) {
|
if (num < PropBlackboxHintsElements) {
|
||||||
|
@ -1721,11 +1721,11 @@ bool BlackboxWindow::setInputFocus(void) {
|
||||||
if (flags.send_focus_message) {
|
if (flags.send_focus_message) {
|
||||||
XEvent ce;
|
XEvent ce;
|
||||||
ce.xclient.type = ClientMessage;
|
ce.xclient.type = ClientMessage;
|
||||||
ce.xclient.message_type = xatom->getAtom(XAtom::wm_protocols);
|
ce.xclient.message_type = xatom->getAtom(OBAtom::wm_protocols);
|
||||||
ce.xclient.display = otk::OBDisplay::display;
|
ce.xclient.display = otk::OBDisplay::display;
|
||||||
ce.xclient.window = client.window;
|
ce.xclient.window = client.window;
|
||||||
ce.xclient.format = 32;
|
ce.xclient.format = 32;
|
||||||
ce.xclient.data.l[0] = xatom->getAtom(XAtom::wm_take_focus);
|
ce.xclient.data.l[0] = xatom->getAtom(OBAtom::wm_take_focus);
|
||||||
ce.xclient.data.l[1] = blackbox->getLastTime();
|
ce.xclient.data.l[1] = blackbox->getLastTime();
|
||||||
ce.xclient.data.l[2] = 0l;
|
ce.xclient.data.l[2] = 0l;
|
||||||
ce.xclient.data.l[3] = 0l;
|
ce.xclient.data.l[3] = 0l;
|
||||||
|
@ -1846,11 +1846,11 @@ void BlackboxWindow::close(void) {
|
||||||
|
|
||||||
XEvent ce;
|
XEvent ce;
|
||||||
ce.xclient.type = ClientMessage;
|
ce.xclient.type = ClientMessage;
|
||||||
ce.xclient.message_type = xatom->getAtom(XAtom::wm_protocols);
|
ce.xclient.message_type = xatom->getAtom(OBAtom::wm_protocols);
|
||||||
ce.xclient.display = otk::OBDisplay::display;
|
ce.xclient.display = otk::OBDisplay::display;
|
||||||
ce.xclient.window = client.window;
|
ce.xclient.window = client.window;
|
||||||
ce.xclient.format = 32;
|
ce.xclient.format = 32;
|
||||||
ce.xclient.data.l[0] = xatom->getAtom(XAtom::wm_delete_window);
|
ce.xclient.data.l[0] = xatom->getAtom(OBAtom::wm_delete_window);
|
||||||
ce.xclient.data.l[1] = CurrentTime;
|
ce.xclient.data.l[1] = CurrentTime;
|
||||||
ce.xclient.data.l[2] = 0l;
|
ce.xclient.data.l[2] = 0l;
|
||||||
ce.xclient.data.l[3] = 0l;
|
ce.xclient.data.l[3] = 0l;
|
||||||
|
@ -2034,7 +2034,7 @@ void BlackboxWindow::setWorkspace(unsigned int n) {
|
||||||
*/
|
*/
|
||||||
n = 0xffffffff;
|
n = 0xffffffff;
|
||||||
}
|
}
|
||||||
xatom->setValue(client.window, XAtom::net_wm_desktop, XAtom::cardinal, n);
|
xatom->setValue(client.window, OBAtom::net_wm_desktop, OBAtom::cardinal, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2087,7 +2087,7 @@ void BlackboxWindow::stick(void) {
|
||||||
screen->reassociateWindow(this, BSENTINEL, True);
|
screen->reassociateWindow(this, BSENTINEL, True);
|
||||||
// temporary fix since sticky windows suck. set the hint to what we
|
// temporary fix since sticky windows suck. set the hint to what we
|
||||||
// actually hold in our data.
|
// actually hold in our data.
|
||||||
xatom->setValue(client.window, XAtom::net_wm_desktop, XAtom::cardinal,
|
xatom->setValue(client.window, OBAtom::net_wm_desktop, OBAtom::cardinal,
|
||||||
blackbox_attrib.workspace);
|
blackbox_attrib.workspace);
|
||||||
|
|
||||||
setState(current_state);
|
setState(current_state);
|
||||||
|
@ -2099,7 +2099,7 @@ void BlackboxWindow::stick(void) {
|
||||||
|
|
||||||
// temporary fix since sticky windows suck. set the hint to a different
|
// temporary fix since sticky windows suck. set the hint to a different
|
||||||
// value than that contained in the class' data.
|
// value than that contained in the class' data.
|
||||||
xatom->setValue(client.window, XAtom::net_wm_desktop, XAtom::cardinal,
|
xatom->setValue(client.window, OBAtom::net_wm_desktop, OBAtom::cardinal,
|
||||||
0xffffffff);
|
0xffffffff);
|
||||||
|
|
||||||
for (unsigned int i = 0; i < screen->getNumberOfWorkspaces(); ++i)
|
for (unsigned int i = 0; i < screen->getNumberOfWorkspaces(); ++i)
|
||||||
|
@ -2254,20 +2254,20 @@ void BlackboxWindow::setAllowedActions(void) {
|
||||||
Atom actions[7];
|
Atom actions[7];
|
||||||
int num = 0;
|
int num = 0;
|
||||||
|
|
||||||
actions[num++] = xatom->getAtom(XAtom::net_wm_action_shade);
|
actions[num++] = xatom->getAtom(OBAtom::net_wm_action_shade);
|
||||||
actions[num++] = xatom->getAtom(XAtom::net_wm_action_change_desktop);
|
actions[num++] = xatom->getAtom(OBAtom::net_wm_action_change_desktop);
|
||||||
actions[num++] = xatom->getAtom(XAtom::net_wm_action_close);
|
actions[num++] = xatom->getAtom(OBAtom::net_wm_action_close);
|
||||||
|
|
||||||
if (functions & Func_Move)
|
if (functions & Func_Move)
|
||||||
actions[num++] = xatom->getAtom(XAtom::net_wm_action_move);
|
actions[num++] = xatom->getAtom(OBAtom::net_wm_action_move);
|
||||||
if (functions & Func_Resize)
|
if (functions & Func_Resize)
|
||||||
actions[num++] = xatom->getAtom(XAtom::net_wm_action_resize);
|
actions[num++] = xatom->getAtom(OBAtom::net_wm_action_resize);
|
||||||
if (functions & Func_Maximize) {
|
if (functions & Func_Maximize) {
|
||||||
actions[num++] = xatom->getAtom(XAtom::net_wm_action_maximize_horz);
|
actions[num++] = xatom->getAtom(OBAtom::net_wm_action_maximize_horz);
|
||||||
actions[num++] = xatom->getAtom(XAtom::net_wm_action_maximize_vert);
|
actions[num++] = xatom->getAtom(OBAtom::net_wm_action_maximize_vert);
|
||||||
}
|
}
|
||||||
|
|
||||||
xatom->setValue(client.window, XAtom::net_wm_allowed_actions, XAtom::atom,
|
xatom->setValue(client.window, OBAtom::net_wm_allowed_actions, OBAtom::atom,
|
||||||
actions, num);
|
actions, num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2278,37 +2278,37 @@ void BlackboxWindow::setState(unsigned long new_state) {
|
||||||
unsigned long state[2];
|
unsigned long state[2];
|
||||||
state[0] = current_state;
|
state[0] = current_state;
|
||||||
state[1] = None;
|
state[1] = None;
|
||||||
xatom->setValue(client.window, XAtom::wm_state, XAtom::wm_state, state, 2);
|
xatom->setValue(client.window, OBAtom::wm_state, OBAtom::wm_state, state, 2);
|
||||||
|
|
||||||
xatom->setValue(client.window, XAtom::blackbox_attributes,
|
xatom->setValue(client.window, OBAtom::blackbox_attributes,
|
||||||
XAtom::blackbox_attributes, (unsigned long *)&blackbox_attrib,
|
OBAtom::blackbox_attributes, (unsigned long *)&blackbox_attrib,
|
||||||
PropBlackboxAttributesElements);
|
PropBlackboxAttributesElements);
|
||||||
|
|
||||||
Atom netstate[8];
|
Atom netstate[8];
|
||||||
int num = 0;
|
int num = 0;
|
||||||
if (flags.modal)
|
if (flags.modal)
|
||||||
netstate[num++] = xatom->getAtom(XAtom::net_wm_state_modal);
|
netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_modal);
|
||||||
if (flags.shaded)
|
if (flags.shaded)
|
||||||
netstate[num++] = xatom->getAtom(XAtom::net_wm_state_shaded);
|
netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_shaded);
|
||||||
if (flags.iconic)
|
if (flags.iconic)
|
||||||
netstate[num++] = xatom->getAtom(XAtom::net_wm_state_hidden);
|
netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_hidden);
|
||||||
if (flags.skip_taskbar)
|
if (flags.skip_taskbar)
|
||||||
netstate[num++] = xatom->getAtom(XAtom::net_wm_state_skip_taskbar);
|
netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_skip_taskbar);
|
||||||
if (flags.skip_pager)
|
if (flags.skip_pager)
|
||||||
netstate[num++] = xatom->getAtom(XAtom::net_wm_state_skip_pager);
|
netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_skip_pager);
|
||||||
if (flags.fullscreen)
|
if (flags.fullscreen)
|
||||||
netstate[num++] = xatom->getAtom(XAtom::net_wm_state_fullscreen);
|
netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_fullscreen);
|
||||||
if (flags.maximized == 1 || flags.maximized == 2)
|
if (flags.maximized == 1 || flags.maximized == 2)
|
||||||
netstate[num++] = xatom->getAtom(XAtom::net_wm_state_maximized_vert);
|
netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_maximized_vert);
|
||||||
if (flags.maximized == 1 || flags.maximized == 3)
|
if (flags.maximized == 1 || flags.maximized == 3)
|
||||||
netstate[num++] = xatom->getAtom(XAtom::net_wm_state_maximized_horz);
|
netstate[num++] = xatom->getAtom(OBAtom::net_wm_state_maximized_horz);
|
||||||
xatom->setValue(client.window, XAtom::net_wm_state, XAtom::atom,
|
xatom->setValue(client.window, OBAtom::net_wm_state, OBAtom::atom,
|
||||||
netstate, num);
|
netstate, num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool BlackboxWindow::getState(void) {
|
bool BlackboxWindow::getState(void) {
|
||||||
bool ret = xatom->getValue(client.window, XAtom::wm_state, XAtom::wm_state,
|
bool ret = xatom->getValue(client.window, OBAtom::wm_state, OBAtom::wm_state,
|
||||||
current_state);
|
current_state);
|
||||||
if (! ret) current_state = 0;
|
if (! ret) current_state = 0;
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -2318,8 +2318,8 @@ bool BlackboxWindow::getState(void) {
|
||||||
void BlackboxWindow::restoreAttributes(void) {
|
void BlackboxWindow::restoreAttributes(void) {
|
||||||
unsigned long num = PropBlackboxAttributesElements;
|
unsigned long num = PropBlackboxAttributesElements;
|
||||||
BlackboxAttributes *net;
|
BlackboxAttributes *net;
|
||||||
if (! xatom->getValue(client.window, XAtom::blackbox_attributes,
|
if (! xatom->getValue(client.window, OBAtom::blackbox_attributes,
|
||||||
XAtom::blackbox_attributes, num,
|
OBAtom::blackbox_attributes, num,
|
||||||
(unsigned long **)&net))
|
(unsigned long **)&net))
|
||||||
return;
|
return;
|
||||||
if (num < PropBlackboxAttributesElements) {
|
if (num < PropBlackboxAttributesElements) {
|
||||||
|
@ -2875,7 +2875,7 @@ void BlackboxWindow::propertyNotifyEvent(const XPropertyEvent *pe) {
|
||||||
if (flags.iconic) screen->propagateWindowName(this);
|
if (flags.iconic) screen->propagateWindowName(this);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case XAtom::net_wm_name:
|
case OBAtom::net_wm_name:
|
||||||
case XA_WM_NAME:
|
case XA_WM_NAME:
|
||||||
getWMName();
|
getWMName();
|
||||||
|
|
||||||
|
@ -2917,7 +2917,7 @@ void BlackboxWindow::propertyNotifyEvent(const XPropertyEvent *pe) {
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (pe->atom == xatom->getAtom(XAtom::wm_protocols)) {
|
if (pe->atom == xatom->getAtom(OBAtom::wm_protocols)) {
|
||||||
getWMProtocols();
|
getWMProtocols();
|
||||||
|
|
||||||
if ((decorations & Decor_Close) && (! frame.close_button)) {
|
if ((decorations & Decor_Close) && (! frame.close_button)) {
|
||||||
|
@ -2927,7 +2927,7 @@ void BlackboxWindow::propertyNotifyEvent(const XPropertyEvent *pe) {
|
||||||
XMapSubwindows(otk::OBDisplay::display, frame.title);
|
XMapSubwindows(otk::OBDisplay::display, frame.title);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (pe->atom == xatom->getAtom(XAtom::net_wm_strut)) {
|
} else if (pe->atom == xatom->getAtom(OBAtom::net_wm_strut)) {
|
||||||
updateStrut();
|
updateStrut();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3876,8 +3876,8 @@ void BlackboxWindow::restore(bool remap) {
|
||||||
// erase the netwm stuff that we read when a window maps, so that it
|
// erase the netwm stuff that we read when a window maps, so that it
|
||||||
// doesn't persist between mappings.
|
// doesn't persist between mappings.
|
||||||
// (these are the ones read in getNetWMFlags().)
|
// (these are the ones read in getNetWMFlags().)
|
||||||
xatom->eraseValue(client.window, XAtom::net_wm_desktop);
|
xatom->eraseValue(client.window, OBAtom::net_wm_desktop);
|
||||||
xatom->eraseValue(client.window, XAtom::net_wm_state);
|
xatom->eraseValue(client.window, OBAtom::net_wm_state);
|
||||||
|
|
||||||
restoreGravity(client.rect);
|
restoreGravity(client.rect);
|
||||||
|
|
||||||
|
|
|
@ -104,7 +104,7 @@ public:
|
||||||
private:
|
private:
|
||||||
Blackbox *blackbox;
|
Blackbox *blackbox;
|
||||||
BScreen *screen;
|
BScreen *screen;
|
||||||
XAtom *xatom;
|
OBAtom *xatom;
|
||||||
otk::OBTimer *timer;
|
otk::OBTimer *timer;
|
||||||
BlackboxAttributes blackbox_attrib;
|
BlackboxAttributes blackbox_attrib;
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ using std::string;
|
||||||
#include "util.hh"
|
#include "util.hh"
|
||||||
#include "bbwindow.hh"
|
#include "bbwindow.hh"
|
||||||
#include "workspace.hh"
|
#include "workspace.hh"
|
||||||
#include "xatom.hh"
|
#include "atom.hh"
|
||||||
|
|
||||||
namespace ob {
|
namespace ob {
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ Blackbox::Blackbox(int argc, char **m_argv, char *rc)
|
||||||
|
|
||||||
load_rc();
|
load_rc();
|
||||||
|
|
||||||
xatom = new XAtom(otk::OBDisplay::display);
|
xatom = new OBAtom();
|
||||||
|
|
||||||
cursor.session = XCreateFontCursor(otk::OBDisplay::display, XC_left_ptr);
|
cursor.session = XCreateFontCursor(otk::OBDisplay::display, XC_left_ptr);
|
||||||
cursor.move = XCreateFontCursor(otk::OBDisplay::display, XC_fleur);
|
cursor.move = XCreateFontCursor(otk::OBDisplay::display, XC_fleur);
|
||||||
|
@ -558,7 +558,7 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
|
|
||||||
case ClientMessage: {
|
case ClientMessage: {
|
||||||
if (e->xclient.format == 32) {
|
if (e->xclient.format == 32) {
|
||||||
if (e->xclient.message_type == xatom->getAtom(XAtom::wm_change_state)) {
|
if (e->xclient.message_type == xatom->getAtom(OBAtom::wm_change_state)) {
|
||||||
// WM_CHANGE_STATE message
|
// WM_CHANGE_STATE message
|
||||||
BlackboxWindow *win = searchWindow(e->xclient.window);
|
BlackboxWindow *win = searchWindow(e->xclient.window);
|
||||||
if (! win || ! win->validateClient()) return;
|
if (! win || ! win->validateClient()) return;
|
||||||
|
@ -568,9 +568,9 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
if (e->xclient.data.l[0] == NormalState)
|
if (e->xclient.data.l[0] == NormalState)
|
||||||
win->deiconify();
|
win->deiconify();
|
||||||
} else if (e->xclient.message_type ==
|
} else if (e->xclient.message_type ==
|
||||||
xatom->getAtom(XAtom::blackbox_change_workspace) ||
|
xatom->getAtom(OBAtom::blackbox_change_workspace) ||
|
||||||
e->xclient.message_type ==
|
e->xclient.message_type ==
|
||||||
xatom->getAtom(XAtom::net_current_desktop)) {
|
xatom->getAtom(OBAtom::net_current_desktop)) {
|
||||||
// NET_CURRENT_DESKTOP message
|
// NET_CURRENT_DESKTOP message
|
||||||
BScreen *screen = searchScreen(e->xclient.window);
|
BScreen *screen = searchScreen(e->xclient.window);
|
||||||
|
|
||||||
|
@ -578,14 +578,14 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
if (screen && workspace < screen->getWorkspaceCount())
|
if (screen && workspace < screen->getWorkspaceCount())
|
||||||
screen->changeWorkspaceID(workspace);
|
screen->changeWorkspaceID(workspace);
|
||||||
} else if (e->xclient.message_type ==
|
} else if (e->xclient.message_type ==
|
||||||
xatom->getAtom(XAtom::blackbox_change_window_focus)) {
|
xatom->getAtom(OBAtom::blackbox_change_window_focus)) {
|
||||||
// TEMP HACK TO KEEP BBKEYS WORKING
|
// TEMP HACK TO KEEP BBKEYS WORKING
|
||||||
BlackboxWindow *win = searchWindow(e->xclient.window);
|
BlackboxWindow *win = searchWindow(e->xclient.window);
|
||||||
|
|
||||||
if (win && win->isVisible() && win->setInputFocus())
|
if (win && win->isVisible() && win->setInputFocus())
|
||||||
win->installColormap(True);
|
win->installColormap(True);
|
||||||
} else if (e->xclient.message_type ==
|
} else if (e->xclient.message_type ==
|
||||||
xatom->getAtom(XAtom::net_active_window)) {
|
xatom->getAtom(OBAtom::net_active_window)) {
|
||||||
// NET_ACTIVE_WINDOW
|
// NET_ACTIVE_WINDOW
|
||||||
BlackboxWindow *win = searchWindow(e->xclient.window);
|
BlackboxWindow *win = searchWindow(e->xclient.window);
|
||||||
|
|
||||||
|
@ -606,7 +606,7 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (e->xclient.message_type ==
|
} else if (e->xclient.message_type ==
|
||||||
xatom->getAtom(XAtom::blackbox_cycle_window_focus)) {
|
xatom->getAtom(OBAtom::blackbox_cycle_window_focus)) {
|
||||||
// BLACKBOX_CYCLE_WINDOW_FOCUS
|
// BLACKBOX_CYCLE_WINDOW_FOCUS
|
||||||
BScreen *screen = searchScreen(e->xclient.window);
|
BScreen *screen = searchScreen(e->xclient.window);
|
||||||
|
|
||||||
|
@ -617,7 +617,7 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
screen->nextFocus();
|
screen->nextFocus();
|
||||||
}
|
}
|
||||||
} else if (e->xclient.message_type ==
|
} else if (e->xclient.message_type ==
|
||||||
xatom->getAtom(XAtom::net_wm_desktop)) {
|
xatom->getAtom(OBAtom::net_wm_desktop)) {
|
||||||
// NET_WM_DESKTOP
|
// NET_WM_DESKTOP
|
||||||
BlackboxWindow *win = searchWindow(e->xclient.window);
|
BlackboxWindow *win = searchWindow(e->xclient.window);
|
||||||
|
|
||||||
|
@ -640,7 +640,7 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (e->xclient.message_type ==
|
} else if (e->xclient.message_type ==
|
||||||
xatom->getAtom(XAtom::blackbox_change_attributes)) {
|
xatom->getAtom(OBAtom::blackbox_change_attributes)) {
|
||||||
// BLACKBOX_CHANGE_ATTRIBUTES
|
// BLACKBOX_CHANGE_ATTRIBUTES
|
||||||
BlackboxWindow *win = searchWindow(e->xclient.window);
|
BlackboxWindow *win = searchWindow(e->xclient.window);
|
||||||
|
|
||||||
|
@ -655,45 +655,45 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
win->changeBlackboxHints(&net);
|
win->changeBlackboxHints(&net);
|
||||||
}
|
}
|
||||||
} else if (e->xclient.message_type ==
|
} else if (e->xclient.message_type ==
|
||||||
xatom->getAtom(XAtom::net_number_of_desktops)) {
|
xatom->getAtom(OBAtom::net_number_of_desktops)) {
|
||||||
// NET_NUMBER_OF_DESKTOPS
|
// NET_NUMBER_OF_DESKTOPS
|
||||||
BScreen *screen = searchScreen(e->xclient.window);
|
BScreen *screen = searchScreen(e->xclient.window);
|
||||||
|
|
||||||
if (e->xclient.data.l[0] > 0)
|
if (e->xclient.data.l[0] > 0)
|
||||||
screen->changeWorkspaceCount((unsigned) e->xclient.data.l[0]);
|
screen->changeWorkspaceCount((unsigned) e->xclient.data.l[0]);
|
||||||
} else if (e->xclient.message_type ==
|
} else if (e->xclient.message_type ==
|
||||||
xatom->getAtom(XAtom::net_close_window)) {
|
xatom->getAtom(OBAtom::net_close_window)) {
|
||||||
// NET_CLOSE_WINDOW
|
// NET_CLOSE_WINDOW
|
||||||
BlackboxWindow *win = searchWindow(e->xclient.window);
|
BlackboxWindow *win = searchWindow(e->xclient.window);
|
||||||
if (win && win->validateClient())
|
if (win && win->validateClient())
|
||||||
win->close(); // could this be smarter?
|
win->close(); // could this be smarter?
|
||||||
} else if (e->xclient.message_type ==
|
} else if (e->xclient.message_type ==
|
||||||
xatom->getAtom(XAtom::net_wm_moveresize)) {
|
xatom->getAtom(OBAtom::net_wm_moveresize)) {
|
||||||
// NET_WM_MOVERESIZE
|
// NET_WM_MOVERESIZE
|
||||||
BlackboxWindow *win = searchWindow(e->xclient.window);
|
BlackboxWindow *win = searchWindow(e->xclient.window);
|
||||||
if (win && win->validateClient()) {
|
if (win && win->validateClient()) {
|
||||||
int x_root = e->xclient.data.l[0],
|
int x_root = e->xclient.data.l[0],
|
||||||
y_root = e->xclient.data.l[1];
|
y_root = e->xclient.data.l[1];
|
||||||
if ((Atom) e->xclient.data.l[2] ==
|
if ((Atom) e->xclient.data.l[2] ==
|
||||||
xatom->getAtom(XAtom::net_wm_moveresize_move)) {
|
xatom->getAtom(OBAtom::net_wm_moveresize_move)) {
|
||||||
win->beginMove(x_root, y_root);
|
win->beginMove(x_root, y_root);
|
||||||
} else {
|
} else {
|
||||||
if ((Atom) e->xclient.data.l[2] ==
|
if ((Atom) e->xclient.data.l[2] ==
|
||||||
xatom->getAtom(XAtom::net_wm_moveresize_size_topleft))
|
xatom->getAtom(OBAtom::net_wm_moveresize_size_topleft))
|
||||||
win->beginResize(x_root, y_root, BlackboxWindow::TopLeft);
|
win->beginResize(x_root, y_root, BlackboxWindow::TopLeft);
|
||||||
else if ((Atom) e->xclient.data.l[2] ==
|
else if ((Atom) e->xclient.data.l[2] ==
|
||||||
xatom->getAtom(XAtom::net_wm_moveresize_size_topright))
|
xatom->getAtom(OBAtom::net_wm_moveresize_size_topright))
|
||||||
win->beginResize(x_root, y_root, BlackboxWindow::TopRight);
|
win->beginResize(x_root, y_root, BlackboxWindow::TopRight);
|
||||||
else if ((Atom) e->xclient.data.l[2] ==
|
else if ((Atom) e->xclient.data.l[2] ==
|
||||||
xatom->getAtom(XAtom::net_wm_moveresize_size_bottomleft))
|
xatom->getAtom(OBAtom::net_wm_moveresize_size_bottomleft))
|
||||||
win->beginResize(x_root, y_root, BlackboxWindow::BottomLeft);
|
win->beginResize(x_root, y_root, BlackboxWindow::BottomLeft);
|
||||||
else if ((Atom) e->xclient.data.l[2] ==
|
else if ((Atom) e->xclient.data.l[2] ==
|
||||||
xatom->getAtom(XAtom::net_wm_moveresize_size_bottomright))
|
xatom->getAtom(OBAtom::net_wm_moveresize_size_bottomright))
|
||||||
win->beginResize(x_root, y_root, BlackboxWindow::BottomRight);
|
win->beginResize(x_root, y_root, BlackboxWindow::BottomRight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (e->xclient.message_type ==
|
} else if (e->xclient.message_type ==
|
||||||
xatom->getAtom(XAtom::net_wm_state)) {
|
xatom->getAtom(OBAtom::net_wm_state)) {
|
||||||
// NET_WM_STATE
|
// NET_WM_STATE
|
||||||
BlackboxWindow *win = searchWindow(e->xclient.window);
|
BlackboxWindow *win = searchWindow(e->xclient.window);
|
||||||
if (win && win->validateClient()) {
|
if (win && win->validateClient()) {
|
||||||
|
@ -707,10 +707,10 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
|
|
||||||
if ((Atom) e->xclient.data.l[0] == 1) {
|
if ((Atom) e->xclient.data.l[0] == 1) {
|
||||||
// ADD
|
// ADD
|
||||||
if (state[i] == xatom->getAtom(XAtom::net_wm_state_modal)) {
|
if (state[i] == xatom->getAtom(OBAtom::net_wm_state_modal)) {
|
||||||
win->setModal(True);
|
win->setModal(True);
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_maximized_vert)) {
|
xatom->getAtom(OBAtom::net_wm_state_maximized_vert)) {
|
||||||
if (win->isMaximizedHoriz()) {
|
if (win->isMaximizedHoriz()) {
|
||||||
win->maximize(0); // unmaximize
|
win->maximize(0); // unmaximize
|
||||||
win->maximize(1); // full
|
win->maximize(1); // full
|
||||||
|
@ -718,7 +718,7 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
win->maximize(2); // vert
|
win->maximize(2); // vert
|
||||||
}
|
}
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_maximized_horz)) {
|
xatom->getAtom(OBAtom::net_wm_state_maximized_horz)) {
|
||||||
if (win->isMaximizedVert()) {
|
if (win->isMaximizedVert()) {
|
||||||
win->maximize(0); // unmaximize
|
win->maximize(0); // unmaximize
|
||||||
win->maximize(1); // full
|
win->maximize(1); // full
|
||||||
|
@ -726,25 +726,25 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
win->maximize(3); // horiz
|
win->maximize(3); // horiz
|
||||||
}
|
}
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_shaded)) {
|
xatom->getAtom(OBAtom::net_wm_state_shaded)) {
|
||||||
if (! win->isShaded())
|
if (! win->isShaded())
|
||||||
win->shade();
|
win->shade();
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_skip_taskbar)) {
|
xatom->getAtom(OBAtom::net_wm_state_skip_taskbar)) {
|
||||||
win->setSkipTaskbar(True);
|
win->setSkipTaskbar(True);
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_skip_pager)) {
|
xatom->getAtom(OBAtom::net_wm_state_skip_pager)) {
|
||||||
win->setSkipPager(True);
|
win->setSkipPager(True);
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_fullscreen)) {
|
xatom->getAtom(OBAtom::net_wm_state_fullscreen)) {
|
||||||
win->setFullscreen(True);
|
win->setFullscreen(True);
|
||||||
}
|
}
|
||||||
} else if (action == 0) {
|
} else if (action == 0) {
|
||||||
// REMOVE
|
// REMOVE
|
||||||
if (state[i] == xatom->getAtom(XAtom::net_wm_state_modal)) {
|
if (state[i] == xatom->getAtom(OBAtom::net_wm_state_modal)) {
|
||||||
win->setModal(False);
|
win->setModal(False);
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_maximized_vert)) {
|
xatom->getAtom(OBAtom::net_wm_state_maximized_vert)) {
|
||||||
if (win->isMaximizedFull()) {
|
if (win->isMaximizedFull()) {
|
||||||
win->maximize(0); // unmaximize
|
win->maximize(0); // unmaximize
|
||||||
win->maximize(3); // horiz
|
win->maximize(3); // horiz
|
||||||
|
@ -752,7 +752,7 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
win->maximize(0); // unmaximize
|
win->maximize(0); // unmaximize
|
||||||
}
|
}
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_maximized_horz)) {
|
xatom->getAtom(OBAtom::net_wm_state_maximized_horz)) {
|
||||||
if (win->isMaximizedFull()) {
|
if (win->isMaximizedFull()) {
|
||||||
win->maximize(0); // unmaximize
|
win->maximize(0); // unmaximize
|
||||||
win->maximize(2); // vert
|
win->maximize(2); // vert
|
||||||
|
@ -760,25 +760,25 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
win->maximize(0); // unmaximize
|
win->maximize(0); // unmaximize
|
||||||
}
|
}
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_shaded)) {
|
xatom->getAtom(OBAtom::net_wm_state_shaded)) {
|
||||||
if (win->isShaded())
|
if (win->isShaded())
|
||||||
win->shade();
|
win->shade();
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_skip_taskbar)) {
|
xatom->getAtom(OBAtom::net_wm_state_skip_taskbar)) {
|
||||||
win->setSkipTaskbar(False);
|
win->setSkipTaskbar(False);
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_skip_pager)) {
|
xatom->getAtom(OBAtom::net_wm_state_skip_pager)) {
|
||||||
win->setSkipPager(False);
|
win->setSkipPager(False);
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_fullscreen)) {
|
xatom->getAtom(OBAtom::net_wm_state_fullscreen)) {
|
||||||
win->setFullscreen(False);
|
win->setFullscreen(False);
|
||||||
}
|
}
|
||||||
} else if (action == 2) {
|
} else if (action == 2) {
|
||||||
// TOGGLE
|
// TOGGLE
|
||||||
if (state[i] == xatom->getAtom(XAtom::net_wm_state_modal)) {
|
if (state[i] == xatom->getAtom(OBAtom::net_wm_state_modal)) {
|
||||||
win->setModal(! win->isModal());
|
win->setModal(! win->isModal());
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_maximized_vert)) {
|
xatom->getAtom(OBAtom::net_wm_state_maximized_vert)) {
|
||||||
if (win->isMaximizedFull()) {
|
if (win->isMaximizedFull()) {
|
||||||
win->maximize(0); // unmaximize
|
win->maximize(0); // unmaximize
|
||||||
win->maximize(3); // horiz
|
win->maximize(3); // horiz
|
||||||
|
@ -791,7 +791,7 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
win->maximize(2); // vert
|
win->maximize(2); // vert
|
||||||
}
|
}
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_maximized_horz)) {
|
xatom->getAtom(OBAtom::net_wm_state_maximized_horz)) {
|
||||||
if (win->isMaximizedFull()) {
|
if (win->isMaximizedFull()) {
|
||||||
win->maximize(0); // unmaximize
|
win->maximize(0); // unmaximize
|
||||||
win->maximize(2); // vert
|
win->maximize(2); // vert
|
||||||
|
@ -804,16 +804,16 @@ void Blackbox::process_event(XEvent *e) {
|
||||||
win->maximize(3); // horiz
|
win->maximize(3); // horiz
|
||||||
}
|
}
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_shaded)) {
|
xatom->getAtom(OBAtom::net_wm_state_shaded)) {
|
||||||
win->shade();
|
win->shade();
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_skip_taskbar)) {
|
xatom->getAtom(OBAtom::net_wm_state_skip_taskbar)) {
|
||||||
win->setSkipTaskbar(! win->skipTaskbar());
|
win->setSkipTaskbar(! win->skipTaskbar());
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_skip_pager)) {
|
xatom->getAtom(OBAtom::net_wm_state_skip_pager)) {
|
||||||
win->setSkipPager(! win->skipPager());
|
win->setSkipPager(! win->skipPager());
|
||||||
} else if (state[i] ==
|
} else if (state[i] ==
|
||||||
xatom->getAtom(XAtom::net_wm_state_fullscreen)) {
|
xatom->getAtom(OBAtom::net_wm_state_fullscreen)) {
|
||||||
win->setFullscreen(! win->isFullscreen());
|
win->setFullscreen(! win->isFullscreen());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ extern "C" {
|
||||||
#include "openbox.hh"
|
#include "openbox.hh"
|
||||||
#include "configuration.hh"
|
#include "configuration.hh"
|
||||||
#include "timer.hh"
|
#include "timer.hh"
|
||||||
#include "xatom.hh"
|
#include "atom.hh"
|
||||||
|
|
||||||
#define AttribShaded (1l << 0)
|
#define AttribShaded (1l << 0)
|
||||||
#define AttribMaxHoriz (1l << 1)
|
#define AttribMaxHoriz (1l << 1)
|
||||||
|
@ -112,7 +112,7 @@ private:
|
||||||
BlackboxWindow *focused_window, *changing_window;
|
BlackboxWindow *focused_window, *changing_window;
|
||||||
otk::OBTimer *timer;
|
otk::OBTimer *timer;
|
||||||
Configuration config;
|
Configuration config;
|
||||||
XAtom *xatom;
|
OBAtom *xatom;
|
||||||
|
|
||||||
bool no_focus, reconfigure_wait;
|
bool no_focus, reconfigure_wait;
|
||||||
Time last_time;
|
Time last_time;
|
||||||
|
@ -158,7 +158,7 @@ public:
|
||||||
void removeWindowSearch(Window window);
|
void removeWindowSearch(Window window);
|
||||||
void removeGroupSearch(Window window);
|
void removeGroupSearch(Window window);
|
||||||
|
|
||||||
inline XAtom *getXAtom(void) { return xatom; }
|
inline OBAtom *getXAtom(void) { return xatom; }
|
||||||
|
|
||||||
inline BlackboxWindow *getFocusedWindow(void) { return focused_window; }
|
inline BlackboxWindow *getFocusedWindow(void) { return focused_window; }
|
||||||
inline BlackboxWindow *getChangingWindow(void) { return changing_window; }
|
inline BlackboxWindow *getChangingWindow(void) { return changing_window; }
|
||||||
|
|
|
@ -16,6 +16,7 @@ extern "C" {
|
||||||
#include "otk/screeninfo.hh"
|
#include "otk/screeninfo.hh"
|
||||||
#include "otk/timerqueuemanager.hh"
|
#include "otk/timerqueuemanager.hh"
|
||||||
#include "xeventhandler.hh"
|
#include "xeventhandler.hh"
|
||||||
|
#include "atom.hh"
|
||||||
|
|
||||||
namespace ob {
|
namespace ob {
|
||||||
|
|
||||||
|
@ -112,7 +113,7 @@ public:
|
||||||
//! The main function of the Openbox class
|
//! The main function of the Openbox class
|
||||||
/*!
|
/*!
|
||||||
This function should be called after instantiating the Openbox class.
|
This function should be called after instantiating the Openbox class.
|
||||||
Loops indefinately while handling all events in the application.
|
It loops indefinately while handling all events for the application.
|
||||||
The Openbox::shutdown method will cause this function to exit.
|
The Openbox::shutdown method will cause this function to exit.
|
||||||
*/
|
*/
|
||||||
void eventLoop();
|
void eventLoop();
|
||||||
|
|
|
@ -64,7 +64,7 @@ using std::string;
|
||||||
#include "bbwindow.hh"
|
#include "bbwindow.hh"
|
||||||
#include "workspace.hh"
|
#include "workspace.hh"
|
||||||
#include "util.hh"
|
#include "util.hh"
|
||||||
#include "xatom.hh"
|
#include "atom.hh"
|
||||||
|
|
||||||
#ifndef FONT_ELEMENT_SIZE
|
#ifndef FONT_ELEMENT_SIZE
|
||||||
#define FONT_ELEMENT_SIZE 50
|
#define FONT_ELEMENT_SIZE 50
|
||||||
|
@ -119,11 +119,11 @@ BScreen::BScreen(Blackbox *bb, unsigned int scrn) : ScreenInfo(scrn) {
|
||||||
#endif // HAVE_GETPID
|
#endif // HAVE_GETPID
|
||||||
unsigned long geometry[] = { getWidth(),
|
unsigned long geometry[] = { getWidth(),
|
||||||
getHeight()};
|
getHeight()};
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_desktop_geometry,
|
xatom->setValue(getRootWindow(), OBAtom::net_desktop_geometry,
|
||||||
XAtom::cardinal, geometry, 2);
|
OBAtom::cardinal, geometry, 2);
|
||||||
unsigned long viewport[] = {0,0};
|
unsigned long viewport[] = {0,0};
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_desktop_viewport,
|
xatom->setValue(getRootWindow(), OBAtom::net_desktop_viewport,
|
||||||
XAtom::cardinal, viewport, 2);
|
OBAtom::cardinal, viewport, 2);
|
||||||
|
|
||||||
|
|
||||||
XDefineCursor(otk::OBDisplay::display, getRootWindow(),
|
XDefineCursor(otk::OBDisplay::display, getRootWindow(),
|
||||||
|
@ -194,8 +194,8 @@ BScreen::BScreen(Blackbox *bb, unsigned int scrn) : ScreenInfo(scrn) {
|
||||||
|
|
||||||
current_workspace = workspacesList.front();
|
current_workspace = workspacesList.front();
|
||||||
|
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_current_desktop,
|
xatom->setValue(getRootWindow(), OBAtom::net_current_desktop,
|
||||||
XAtom::cardinal, 0); //first workspace
|
OBAtom::cardinal, 0); //first workspace
|
||||||
|
|
||||||
raiseWindows(0, 0); // this also initializes the empty stacking list
|
raiseWindows(0, 0); // this also initializes the empty stacking list
|
||||||
|
|
||||||
|
@ -630,7 +630,7 @@ void BScreen::load_rc(void) {
|
||||||
resource.col_direction = TopBottom;
|
resource.col_direction = TopBottom;
|
||||||
|
|
||||||
if (config->getValue(screenstr + "workspaceNames", s)) {
|
if (config->getValue(screenstr + "workspaceNames", s)) {
|
||||||
XAtom::StringVect workspaceNames;
|
OBAtom::StringVect workspaceNames;
|
||||||
|
|
||||||
string::const_iterator it = s.begin(), end = s.end();
|
string::const_iterator it = s.begin(), end = s.end();
|
||||||
while(1) {
|
while(1) {
|
||||||
|
@ -642,7 +642,7 @@ void BScreen::load_rc(void) {
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
|
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_desktop_names, XAtom::utf8,
|
xatom->setValue(getRootWindow(), OBAtom::net_desktop_names, OBAtom::utf8,
|
||||||
workspaceNames);
|
workspaceNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1014,8 +1014,8 @@ void BScreen::changeWorkspaceID(unsigned int id) {
|
||||||
|
|
||||||
current_workspace = getWorkspace(id);
|
current_workspace = getWorkspace(id);
|
||||||
|
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_current_desktop,
|
xatom->setValue(getRootWindow(), OBAtom::net_current_desktop,
|
||||||
XAtom::cardinal, id);
|
OBAtom::cardinal, id);
|
||||||
|
|
||||||
current_workspace->showAll();
|
current_workspace->showAll();
|
||||||
|
|
||||||
|
@ -1069,11 +1069,11 @@ void BScreen::updateClientList(void) {
|
||||||
const BlackboxWindowList::iterator end = windowList.end();
|
const BlackboxWindowList::iterator end = windowList.end();
|
||||||
for (; it != end; ++it, ++win_it)
|
for (; it != end; ++it, ++win_it)
|
||||||
*win_it = (*it)->getClientWindow();
|
*win_it = (*it)->getClientWindow();
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_client_list, XAtom::window,
|
xatom->setValue(getRootWindow(), OBAtom::net_client_list, OBAtom::window,
|
||||||
windows, windowList.size());
|
windows, windowList.size());
|
||||||
delete [] windows;
|
delete [] windows;
|
||||||
} else
|
} else
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_client_list, XAtom::window,
|
xatom->setValue(getRootWindow(), OBAtom::net_client_list, OBAtom::window,
|
||||||
0, 0);
|
0, 0);
|
||||||
|
|
||||||
updateStackingList();
|
updateStackingList();
|
||||||
|
@ -1106,12 +1106,12 @@ void BScreen::updateStackingList(void) {
|
||||||
end = stack_order.end();
|
end = stack_order.end();
|
||||||
for (; it != end; ++it, ++win_it)
|
for (; it != end; ++it, ++win_it)
|
||||||
*win_it = (*it)->getClientWindow();
|
*win_it = (*it)->getClientWindow();
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_client_list_stacking,
|
xatom->setValue(getRootWindow(), OBAtom::net_client_list_stacking,
|
||||||
XAtom::window, windows, stack_order.size());
|
OBAtom::window, windows, stack_order.size());
|
||||||
delete [] windows;
|
delete [] windows;
|
||||||
} else
|
} else
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_client_list_stacking,
|
xatom->setValue(getRootWindow(), OBAtom::net_client_list_stacking,
|
||||||
XAtom::window, 0, 0);
|
OBAtom::window, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1120,8 +1120,8 @@ void BScreen::addSystrayWindow(Window window) {
|
||||||
|
|
||||||
XSelectInput(otk::OBDisplay::display, window, StructureNotifyMask);
|
XSelectInput(otk::OBDisplay::display, window, StructureNotifyMask);
|
||||||
systrayWindowList.push_back(window);
|
systrayWindowList.push_back(window);
|
||||||
xatom->setValue(getRootWindow(), XAtom::kde_net_system_tray_windows,
|
xatom->setValue(getRootWindow(), OBAtom::kde_net_system_tray_windows,
|
||||||
XAtom::window,
|
OBAtom::window,
|
||||||
&systrayWindowList[0], systrayWindowList.size());
|
&systrayWindowList[0], systrayWindowList.size());
|
||||||
blackbox->saveSystrayWindowSearch(window, this);
|
blackbox->saveSystrayWindowSearch(window, this);
|
||||||
|
|
||||||
|
@ -1137,8 +1137,8 @@ void BScreen::removeSystrayWindow(Window window) {
|
||||||
for (; it != end; ++it)
|
for (; it != end; ++it)
|
||||||
if (*it == window) {
|
if (*it == window) {
|
||||||
systrayWindowList.erase(it);
|
systrayWindowList.erase(it);
|
||||||
xatom->setValue(getRootWindow(), XAtom::kde_net_system_tray_windows,
|
xatom->setValue(getRootWindow(), OBAtom::kde_net_system_tray_windows,
|
||||||
XAtom::window,
|
OBAtom::window,
|
||||||
&systrayWindowList[0], systrayWindowList.size());
|
&systrayWindowList[0], systrayWindowList.size());
|
||||||
blackbox->removeSystrayWindowSearch(window);
|
blackbox->removeSystrayWindowSearch(window);
|
||||||
XSelectInput(otk::OBDisplay::display, window, NoEventMask);
|
XSelectInput(otk::OBDisplay::display, window, NoEventMask);
|
||||||
|
@ -1154,8 +1154,8 @@ void BScreen::removeSystrayWindow(Window window) {
|
||||||
void BScreen::manageWindow(Window w) {
|
void BScreen::manageWindow(Window w) {
|
||||||
// is the window a KDE systray window?
|
// is the window a KDE systray window?
|
||||||
Window systray;
|
Window systray;
|
||||||
if (xatom->getValue(w, XAtom::kde_net_wm_system_tray_window_for,
|
if (xatom->getValue(w, OBAtom::kde_net_wm_system_tray_window_for,
|
||||||
XAtom::window, systray) && systray != None) {
|
OBAtom::window, systray) && systray != None) {
|
||||||
addSystrayWindow(w);
|
addSystrayWindow(w);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1198,8 +1198,8 @@ void BScreen::unmanageWindow(BlackboxWindow *w, bool remap) {
|
||||||
// is the window a KDE systray window?
|
// is the window a KDE systray window?
|
||||||
Window systray;
|
Window systray;
|
||||||
if (xatom->getValue(w->getClientWindow(),
|
if (xatom->getValue(w->getClientWindow(),
|
||||||
XAtom::kde_net_wm_system_tray_window_for,
|
OBAtom::kde_net_wm_system_tray_window_for,
|
||||||
XAtom::window, systray) && systray != None) {
|
OBAtom::window, systray) && systray != None) {
|
||||||
removeSystrayWindow(w->getClientWindow());
|
removeSystrayWindow(w->getClientWindow());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1271,18 +1271,18 @@ void BScreen::updateWorkArea(void) {
|
||||||
dims[(i * 4) + 2] = area.width();
|
dims[(i * 4) + 2] = area.width();
|
||||||
dims[(i * 4) + 3] = area.height();
|
dims[(i * 4) + 3] = area.height();
|
||||||
}
|
}
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_workarea, XAtom::cardinal,
|
xatom->setValue(getRootWindow(), OBAtom::net_workarea, OBAtom::cardinal,
|
||||||
dims, 4 * workspacesList.size());
|
dims, 4 * workspacesList.size());
|
||||||
delete [] dims;
|
delete [] dims;
|
||||||
} else
|
} else
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_workarea, XAtom::cardinal,
|
xatom->setValue(getRootWindow(), OBAtom::net_workarea, OBAtom::cardinal,
|
||||||
0, 0);
|
0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BScreen::updateNetizenWorkspaceCount(void) {
|
void BScreen::updateNetizenWorkspaceCount(void) {
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_number_of_desktops,
|
xatom->setValue(getRootWindow(), OBAtom::net_number_of_desktops,
|
||||||
XAtom::cardinal, workspacesList.size());
|
OBAtom::cardinal, workspacesList.size());
|
||||||
|
|
||||||
updateWorkArea();
|
updateWorkArea();
|
||||||
}
|
}
|
||||||
|
@ -1292,8 +1292,8 @@ void BScreen::updateNetizenWindowFocus(void) {
|
||||||
Window f = ((blackbox->getFocusedWindow()) ?
|
Window f = ((blackbox->getFocusedWindow()) ?
|
||||||
blackbox->getFocusedWindow()->getClientWindow() : None);
|
blackbox->getFocusedWindow()->getClientWindow() : None);
|
||||||
|
|
||||||
xatom->setValue(getRootWindow(), XAtom::net_active_window,
|
xatom->setValue(getRootWindow(), OBAtom::net_active_window,
|
||||||
XAtom::window, f);
|
OBAtom::window, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1641,7 +1641,7 @@ void BScreen::buttonPressEvent(const XButtonEvent *xbutton) {
|
||||||
|
|
||||||
|
|
||||||
void BScreen::propertyNotifyEvent(const XPropertyEvent *pe) {
|
void BScreen::propertyNotifyEvent(const XPropertyEvent *pe) {
|
||||||
if (pe->atom == xatom->getAtom(XAtom::net_desktop_names)) {
|
if (pe->atom == xatom->getAtom(OBAtom::net_desktop_names)) {
|
||||||
// _NET_WM_DESKTOP_NAMES
|
// _NET_WM_DESKTOP_NAMES
|
||||||
WorkspaceList::iterator it = workspacesList.begin();
|
WorkspaceList::iterator it = workspacesList.begin();
|
||||||
const WorkspaceList::iterator end = workspacesList.end();
|
const WorkspaceList::iterator end = workspacesList.end();
|
||||||
|
|
|
@ -30,7 +30,7 @@ extern "C" {
|
||||||
|
|
||||||
namespace ob {
|
namespace ob {
|
||||||
|
|
||||||
class XAtom;
|
class OBAtom;
|
||||||
struct Strut;
|
struct Strut;
|
||||||
|
|
||||||
enum TextJustify { LeftJustify = 1, RightJustify, CenterJustify };
|
enum TextJustify { LeftJustify = 1, RightJustify, CenterJustify };
|
||||||
|
@ -66,7 +66,7 @@ private:
|
||||||
Blackbox *blackbox;
|
Blackbox *blackbox;
|
||||||
otk::BImageControl *image_control;
|
otk::BImageControl *image_control;
|
||||||
Configuration *config;
|
Configuration *config;
|
||||||
XAtom *xatom;
|
OBAtom *xatom;
|
||||||
|
|
||||||
BlackboxWindowList iconList, windowList;
|
BlackboxWindowList iconList, windowList;
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ using std::string;
|
||||||
#include "util.hh"
|
#include "util.hh"
|
||||||
#include "bbwindow.hh"
|
#include "bbwindow.hh"
|
||||||
#include "workspace.hh"
|
#include "workspace.hh"
|
||||||
#include "xatom.hh"
|
#include "atom.hh"
|
||||||
|
|
||||||
namespace ob {
|
namespace ob {
|
||||||
|
|
||||||
|
@ -424,12 +424,12 @@ void Workspace::setCurrent(void) {
|
||||||
|
|
||||||
|
|
||||||
void Workspace::readName(void) {
|
void Workspace::readName(void) {
|
||||||
XAtom::StringVect namesList;
|
OBAtom::StringVect namesList;
|
||||||
unsigned long numnames = id + 1;
|
unsigned long numnames = id + 1;
|
||||||
|
|
||||||
// attempt to get from the _NET_WM_DESKTOP_NAMES property
|
// attempt to get from the _NET_WM_DESKTOP_NAMES property
|
||||||
if (xatom->getValue(screen->getRootWindow(), XAtom::net_desktop_names,
|
if (xatom->getValue(screen->getRootWindow(), OBAtom::net_desktop_names,
|
||||||
XAtom::utf8, numnames, namesList) &&
|
OBAtom::utf8, numnames, namesList) &&
|
||||||
namesList.size() > id) {
|
namesList.size() > id) {
|
||||||
name = namesList[id];
|
name = namesList[id];
|
||||||
|
|
||||||
|
@ -451,17 +451,17 @@ void Workspace::readName(void) {
|
||||||
|
|
||||||
void Workspace::setName(const string& new_name) {
|
void Workspace::setName(const string& new_name) {
|
||||||
// set the _NET_WM_DESKTOP_NAMES property with the new name
|
// set the _NET_WM_DESKTOP_NAMES property with the new name
|
||||||
XAtom::StringVect namesList;
|
OBAtom::StringVect namesList;
|
||||||
unsigned long numnames = (unsigned) -1;
|
unsigned long numnames = (unsigned) -1;
|
||||||
if (xatom->getValue(screen->getRootWindow(), XAtom::net_desktop_names,
|
if (xatom->getValue(screen->getRootWindow(), OBAtom::net_desktop_names,
|
||||||
XAtom::utf8, numnames, namesList) &&
|
OBAtom::utf8, numnames, namesList) &&
|
||||||
namesList.size() > id)
|
namesList.size() > id)
|
||||||
namesList[id] = new_name;
|
namesList[id] = new_name;
|
||||||
else
|
else
|
||||||
namesList.push_back(new_name);
|
namesList.push_back(new_name);
|
||||||
|
|
||||||
xatom->setValue(screen->getRootWindow(), XAtom::net_desktop_names,
|
xatom->setValue(screen->getRootWindow(), OBAtom::net_desktop_names,
|
||||||
XAtom::utf8, namesList);
|
OBAtom::utf8, namesList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ extern "C" {
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "xatom.hh"
|
#include "atom.hh"
|
||||||
|
|
||||||
namespace ob {
|
namespace ob {
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ class Workspace {
|
||||||
private:
|
private:
|
||||||
BScreen *screen;
|
BScreen *screen;
|
||||||
BlackboxWindow *lastfocus;
|
BlackboxWindow *lastfocus;
|
||||||
XAtom *xatom;
|
OBAtom *xatom;
|
||||||
|
|
||||||
BlackboxWindowList stackingList, windowList;
|
BlackboxWindowList stackingList, windowList;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue