19
19
#include "networkarearegion.h"
21
COMPIZ_PLUGIN_20090315 (networkarearegion, UnityNETWorkareaRegionPluginVTable);
24
UnityNETWorkareaRegionScreen::setProperty ()
28
unsigned int dataSize;
29
unsigned int offset = 0;
31
sr = sr.united (CompRect (0, 0, screen->width (), screen->height ()));
33
foreach (CompWindow *w, screen->clientList ())
38
sr -= CompRect (w->struts ()->left.x, w->struts ()->left.y, w->struts ()->left.width, w->struts ()->left.height);
39
sr -= CompRect (w->struts ()->right.x, w->struts ()->right.y, w->struts ()->right.width, w->struts ()->right.height);
40
sr -= CompRect (w->struts ()->top.x, w->struts ()->top.y, w->struts ()->top.width, w->struts ()->top.height);
41
sr -= CompRect (w->struts ()->bottom.x, w->struts ()->bottom.y, w->struts ()->bottom.width, w->struts ()->bottom.height);
44
dataSize = sr.rects ().size () * 4;
45
data = new unsigned long[dataSize];
47
foreach (const CompRect &r, sr.rects ())
49
data[offset * 4 + 0] = r.x ();
50
data[offset * 4 + 1] = r.y ();
51
data[offset * 4 + 2] = r.width ();
52
data[offset * 4 + 3] = r.height ();
57
XChangeProperty (screen->dpy (), screen->root (), mUnityNETWorkareaRegionAtom,
58
XA_CARDINAL, 32, PropModeReplace, (const unsigned char *) data, dataSize);
64
UnityNETWorkareaRegionScreen::outputChangeNotify ()
70
UnityNETWorkareaRegionScreen::handleEvent (XEvent *event)
72
screen->handleEvent (event);
78
if (event->xproperty.atom == (int) Atoms::wmStrut ||
79
event->xproperty.atom == (int) Atoms::wmStrutPartial)
21
COMPIZ_PLUGIN_20090315(networkarearegion, UnityNETWorkareaRegionPluginVTable);
24
UnityNETWorkareaRegionScreen::setProperty()
28
unsigned int dataSize;
29
unsigned int offset = 0;
31
sr = sr.united(CompRect(0, 0, screen->width(), screen->height()));
33
foreach(CompWindow * w, screen->clientList())
38
sr -= CompRect(w->struts()->left.x, w->struts()->left.y, w->struts()->left.width, w->struts()->left.height);
39
sr -= CompRect(w->struts()->right.x, w->struts()->right.y, w->struts()->right.width, w->struts()->right.height);
40
sr -= CompRect(w->struts()->top.x, w->struts()->top.y, w->struts()->top.width, w->struts()->top.height);
41
sr -= CompRect(w->struts()->bottom.x, w->struts()->bottom.y, w->struts()->bottom.width, w->struts()->bottom.height);
44
dataSize = sr.rects().size() * 4;
45
data = new unsigned long[dataSize];
47
foreach(const CompRect & r, sr.rects())
49
data[offset * 4 + 0] = r.x();
50
data[offset * 4 + 1] = r.y();
51
data[offset * 4 + 2] = r.width();
52
data[offset * 4 + 3] = r.height();
57
XChangeProperty(screen->dpy(), screen->root(), mUnityNETWorkareaRegionAtom,
58
XA_CARDINAL, 32, PropModeReplace, (const unsigned char*) data, dataSize);
64
UnityNETWorkareaRegionScreen::outputChangeNotify()
70
UnityNETWorkareaRegionScreen::handleEvent(XEvent* event)
72
screen->handleEvent(event);
78
if (event->xproperty.atom == (int) Atoms::wmStrut ||
79
event->xproperty.atom == (int) Atoms::wmStrutPartial)
81
CompWindow* w = screen->findWindow(event->xproperty.window);
81
CompWindow *w = screen->findWindow (event->xproperty.window);
87
UnityNETWorkareaRegionWindow *unwmh = UnityNETWorkareaRegionWindow::get (w);
89
w->moveNotifySetEnabled (unwmh, true);
90
w->resizeNotifySetEnabled (unwmh, true);
92
/* The struts got updated, so we need to set the property again */
87
UnityNETWorkareaRegionWindow* unwmh = UnityNETWorkareaRegionWindow::get(w);
89
w->moveNotifySetEnabled(unwmh, true);
90
w->resizeNotifySetEnabled(unwmh, true);
92
/* The struts got updated, so we need to set the property again */
101
UnityNETWorkareaRegionWindow::moveNotify (int dx, int dy, bool immediate)
103
UnityNETWorkareaRegionScreen::get (screen)->setProperty ();
104
window->moveNotify (dx, dy, immediate);
108
UnityNETWorkareaRegionWindow::resizeNotify (int dx, int dy, unsigned int dwidth, unsigned int dheight)
110
UnityNETWorkareaRegionScreen::get (screen)->setProperty ();
111
window->resizeNotify (dx, dy, dwidth, dheight);
115
UnityNETWorkareaRegionScreen::addSupportedAtoms (std::vector<Atom> &atoms)
117
atoms.push_back (mUnityNETWorkareaRegionAtom);
119
screen->addSupportedAtoms (atoms);
122
UnityNETWorkareaRegionScreen::UnityNETWorkareaRegionScreen (CompScreen *s) :
123
PluginClassHandler <UnityNETWorkareaRegionScreen, CompScreen> (s),
124
mUnityNETWorkareaRegionAtom (XInternAtom (screen->dpy (), "_UNITY_NET_WORKAREA_REGION", 0))
126
ScreenInterface::setHandler (screen);
127
screen->updateSupportedWmHints ();
130
UnityNETWorkareaRegionScreen::~UnityNETWorkareaRegionScreen ()
132
/* Delete the property and the bit saying we support it */
133
screen->addSupportedAtomsSetEnabled (this, false);
134
screen->updateSupportedWmHints ();
136
XDeleteProperty (screen->dpy (), screen->root (), mUnityNETWorkareaRegionAtom);
140
UnityNETWorkareaRegionWindow::UnityNETWorkareaRegionWindow (CompWindow *w) :
141
PluginClassHandler <UnityNETWorkareaRegionWindow, CompWindow> (w),
146
UnityNETWorkareaRegionScreen::get (screen)->setProperty ();
147
WindowInterface::setHandler (w, true);
150
WindowInterface::setHandler (w, false);
153
UnityNETWorkareaRegionWindow::~UnityNETWorkareaRegionWindow ()
155
if (window->struts ())
156
UnityNETWorkareaRegionScreen::get (screen)->setProperty ();
101
UnityNETWorkareaRegionWindow::moveNotify(int dx, int dy, bool immediate)
103
UnityNETWorkareaRegionScreen::get(screen)->setProperty();
104
window->moveNotify(dx, dy, immediate);
108
UnityNETWorkareaRegionWindow::resizeNotify(int dx, int dy, unsigned int dwidth, unsigned int dheight)
110
UnityNETWorkareaRegionScreen::get(screen)->setProperty();
111
window->resizeNotify(dx, dy, dwidth, dheight);
115
UnityNETWorkareaRegionScreen::addSupportedAtoms(std::vector<Atom> &atoms)
117
atoms.push_back(mUnityNETWorkareaRegionAtom);
119
screen->addSupportedAtoms(atoms);
122
UnityNETWorkareaRegionScreen::UnityNETWorkareaRegionScreen(CompScreen* s) :
123
PluginClassHandler <UnityNETWorkareaRegionScreen, CompScreen> (s),
124
mUnityNETWorkareaRegionAtom(XInternAtom(screen->dpy(), "_UNITY_NET_WORKAREA_REGION", 0))
126
ScreenInterface::setHandler(screen);
127
screen->updateSupportedWmHints();
130
UnityNETWorkareaRegionScreen::~UnityNETWorkareaRegionScreen()
132
/* Delete the property and the bit saying we support it */
133
screen->addSupportedAtomsSetEnabled(this, false);
134
screen->updateSupportedWmHints();
136
XDeleteProperty(screen->dpy(), screen->root(), mUnityNETWorkareaRegionAtom);
140
UnityNETWorkareaRegionWindow::UnityNETWorkareaRegionWindow(CompWindow* w) :
141
PluginClassHandler <UnityNETWorkareaRegionWindow, CompWindow> (w),
146
UnityNETWorkareaRegionScreen::get(screen)->setProperty();
147
WindowInterface::setHandler(w, true);
150
WindowInterface::setHandler(w, false);
153
UnityNETWorkareaRegionWindow::~UnityNETWorkareaRegionWindow()
155
if (window->struts())
156
UnityNETWorkareaRegionScreen::get(screen)->setProperty();
160
UnityNETWorkareaRegionPluginVTable::init ()
160
UnityNETWorkareaRegionPluginVTable::init()
162
if (!CompPlugin::checkPluginABI ("core", CORE_ABIVERSION))
162
if (!CompPlugin::checkPluginABI("core", CORE_ABIVERSION))