aboutsummaryrefslogtreecommitdiff
path: root/src/Netizen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Netizen.cc')
-rw-r--r--src/Netizen.cc129
1 files changed, 47 insertions, 82 deletions
diff --git a/src/Netizen.cc b/src/Netizen.cc
index 24f4a4c..1536be1 100644
--- a/src/Netizen.cc
+++ b/src/Netizen.cc
@@ -1,3 +1,6 @@
1// Netizen.cc for Fluxbox
2// Copyright (c) 2001-2003 Henrik Kinnunen (fluxgen(at)users.sourceforge.net)
3//
1// Netizen.cc for Blackbox - An X11 Window Manager 4// Netizen.cc for Blackbox - An X11 Window Manager
2// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net) 5// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
3// 6//
@@ -13,133 +16,95 @@
13// 16//
14// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20// DEALINGS IN THE SOFTWARE. 23// DEALINGS IN THE SOFTWARE.
21 24
22// stupid macros needed to access some functions in version 2 of the GNU C
23// library
24#ifndef _GNU_SOURCE
25#define _GNU_SOURCE
26#endif // _GNU_SOURCE
27
28#ifdef HAVE_CONFIG_H
29#include "../config.h"
30#endif // HAVE_CONFIG_H
31
32#include "Netizen.hh" 25#include "Netizen.hh"
33 26
27#include "Screen.hh"
28#include "FbAtoms.hh"
34 29
35Netizen::Netizen(BScreen *scr, Window win) { 30Netizen::Netizen(const BScreen &scr, Window win):
36 screen = scr; 31 m_screen(scr),
37 basedisplay = screen->getBaseDisplay(); 32 m_display(FbTk::App::instance()->display()),
38 window = win; 33 m_window(win) {
39 34
40 event.type = ClientMessage; 35 event.type = ClientMessage;
41 event.xclient.message_type = basedisplay->getFluxboxStructureMessagesAtom(); 36 event.xclient.message_type = FbAtoms::instance()->getFluxboxStructureMessagesAtom();
42 event.xclient.display = basedisplay->getXDisplay(); 37 event.xclient.display = m_display;
43 event.xclient.window = window; 38 event.xclient.window = window();
44 event.xclient.format = 32; 39 event.xclient.format = 32;
45 event.xclient.data.l[0] = basedisplay->getFluxboxNotifyStartupAtom(); 40 event.xclient.data.l[0] = FbAtoms::instance()->getFluxboxNotifyStartupAtom();
46 event.xclient.data.l[1] = event.xclient.data.l[2] = 41 event.xclient.data.l[1] = event.xclient.data.l[2] =
47 event.xclient.data.l[3] = event.xclient.data.l[4] = 0l; 42 event.xclient.data.l[3] = event.xclient.data.l[4] = 0l;
48 43
49 XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event); 44 XSendEvent(m_display, window(), False, NoEventMask, &event);
50} 45}
51 46
52 47
53void Netizen::sendWorkspaceCount(void) { 48void Netizen::sendWorkspaceCount() {
54 49
55 #ifdef GNOME 50 event.xclient.data.l[0] = FbAtoms::instance()->getFluxboxNotifyWorkspaceCountAtom();
56/* long val = screen->getCount(); 51 event.xclient.data.l[1] = m_screen.getCount();
57 XChangeProperty(basedisplay->getXDisplay(), screen->getRootWindow(),
58 basedisplay->getGnomeWorkspaceCountAtom(), XA_CARDINAL, 32,
59 PropModeReplace, (unsigned char *)&val, 1);*/
60 printf("UPDATE!\n");
61 unsigned long data=(unsigned long) screen->getCount();
62 Atom atom_set;
63 // CARD32 val;
64
65 atom_set = XInternAtom(basedisplay->getXDisplay(), "_WIN_WORKSPACE_COUNT", False);
66 // val = mode.numdesktops;
67 XChangeProperty(basedisplay->getXDisplay(), window, atom_set,
68 XA_CARDINAL, 32, PropModeReplace,(unsigned char *)&data, 1);
69 #endif //GNOME
70
71 event.xclient.data.l[0] = basedisplay->getFluxboxNotifyWorkspaceCountAtom();
72 event.xclient.data.l[1] = screen->getCount();
73
74 XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event);
75
76
77}
78 52
53 XSendEvent(m_display, window(), False, NoEventMask, &event);
54}
79 55
80void Netizen::sendCurrentWorkspace(void) {
81 #ifdef GNOME
82 //update atom to workspace
83 long val;
84 val = screen->getCurrentWorkspaceID();
85 XChangeProperty(basedisplay->getXDisplay(), screen->getRootWindow(),
86 basedisplay->getGnomeWorkspaceAtom(), XA_CARDINAL, 32,
87 PropModeReplace, (unsigned char *)&val, 1);
88
89 #endif
90 56
91 event.xclient.data.l[0] = basedisplay->getFluxboxNotifyCurrentWorkspaceAtom(); 57void Netizen::sendCurrentWorkspace() {
92 event.xclient.data.l[1] = screen->getCurrentWorkspaceID();
93 58
94 XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event); 59 event.xclient.data.l[0] = FbAtoms::instance()->getFluxboxNotifyCurrentWorkspaceAtom();
60 event.xclient.data.l[1] = m_screen.currentWorkspaceID();
95 61
62 XSendEvent(m_display, window(), False, NoEventMask, &event);
96} 63}
97 64
98 65
99void Netizen::sendWindowFocus(Window w) { 66void Netizen::sendWindowFocus(Window w) {
100 event.xclient.data.l[0] = basedisplay->getFluxboxNotifyWindowFocusAtom(); 67 event.xclient.data.l[0] = FbAtoms::instance()->getFluxboxNotifyWindowFocusAtom();
101 event.xclient.data.l[1] = w; 68 event.xclient.data.l[1] = w;
102 69
103 XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event); 70 XSendEvent(m_display, window(), False, NoEventMask, &event);
104} 71}
105 72
106 73
107void Netizen::sendWindowAdd(Window w, unsigned long p) { 74void Netizen::sendWindowAdd(Window w, unsigned long wkspc) {
108 event.xclient.data.l[0] = basedisplay->getFluxboxNotifyWindowAddAtom(); 75 event.xclient.data.l[0] = FbAtoms::instance()->getFluxboxNotifyWindowAddAtom();
109 event.xclient.data.l[1] = w; 76 event.xclient.data.l[1] = w;
110 event.xclient.data.l[2] = p; 77 event.xclient.data.l[2] = wkspc;
111 78
112 XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event); 79 XSendEvent(m_display, window(), False, NoEventMask, &event);
113 80
114 event.xclient.data.l[2] = 0l; 81 event.xclient.data.l[2] = 0l;
115} 82}
116 83
117 84
118void Netizen::sendWindowDel(Window w) { 85void Netizen::sendWindowDel(Window w) {
119 event.xclient.data.l[0] = basedisplay->getFluxboxNotifyWindowDelAtom(); 86 event.xclient.data.l[0] = FbAtoms::instance()->getFluxboxNotifyWindowDelAtom();
120 event.xclient.data.l[1] = w; 87 event.xclient.data.l[1] = w;
121 88
122 XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event); 89 XSendEvent(m_display, window(), False, NoEventMask, &event);
123} 90}
124 91
125 92
126void Netizen::sendWindowRaise(Window w) { 93void Netizen::sendWindowRaise(Window w) {
127 event.xclient.data.l[0] = basedisplay->getFluxboxNotifyWindowRaiseAtom(); 94 event.xclient.data.l[0] = FbAtoms::instance()->getFluxboxNotifyWindowRaiseAtom();
128 event.xclient.data.l[1] = w; 95 event.xclient.data.l[1] = w;
129 96
130 XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event); 97 XSendEvent(m_display, window(), False, NoEventMask, &event);
131} 98}
132 99
133 100
134void Netizen::sendWindowLower(Window w) { 101void Netizen::sendWindowLower(Window w) {
135 event.xclient.data.l[0] = basedisplay->getFluxboxNotifyWindowLowerAtom(); 102 event.xclient.data.l[0] = FbAtoms::instance()->getFluxboxNotifyWindowLowerAtom();
136 event.xclient.data.l[1] = w; 103 event.xclient.data.l[1] = w;
137 104
138 XSendEvent(basedisplay->getXDisplay(), window, False, NoEventMask, &event); 105 XSendEvent(m_display, window(), False, NoEventMask, &event);
139} 106}
140 107
141
142void Netizen::sendConfigNotify(XEvent *e) { 108void Netizen::sendConfigNotify(XEvent *e) {
143 XSendEvent(basedisplay->getXDisplay(), window, False, 109 XSendEvent(m_display, window(), False, StructureNotifyMask, e);
144 StructureNotifyMask, e);
145} 110}