aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Window.cc64
-rw-r--r--src/Window.hh9
2 files changed, 67 insertions, 6 deletions
diff --git a/src/Window.cc b/src/Window.cc
index aee5504..ee149a2 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -22,7 +22,7 @@
22// 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
23// DEALINGS IN THE SOFTWARE. 23// DEALINGS IN THE SOFTWARE.
24 24
25// $Id: Window.cc,v 1.29 2002/02/17 18:48:22 fluxgen Exp $ 25// $Id: Window.cc,v 1.30 2002/02/26 22:35:58 fluxgen Exp $
26 26
27//use GNU extensions 27//use GNU extensions
28#ifndef _GNU_SOURCE 28#ifndef _GNU_SOURCE
@@ -73,6 +73,7 @@ timer(0),
73display(0), 73display(0),
74lastButtonPressTime(0), 74lastButtonPressTime(0),
75windowmenu(0), 75windowmenu(0),
76m_layer(LAYER_NORMAL),
76tab(0) 77tab(0)
77#ifdef GNOME 78#ifdef GNOME
78,gnome_hints(0) 79,gnome_hints(0)
@@ -921,7 +922,19 @@ int FluxboxWindow::getGnomeWindowState() {
921 922
922//TODO 923//TODO
923int FluxboxWindow::getGnomeLayer() { 924int FluxboxWindow::getGnomeLayer() {
924 return WIN_LAYER_NORMAL; 925 switch (m_layer) {
926 case LAYER_NORMAL:
927 return WIN_LAYER_NORMAL;
928 case LAYER_BOTTOM:
929 return WIN_LAYER_BELOW;
930 case LAYER_TOP:
931 return WIN_LAYER_ONTOP;
932 case LAYER_BELOW:
933 return WIN_LAYER_BELOW;
934 default:
935 break;
936 }
937 return WIN_LAYER_NORMAL;
925} 938}
926 939
927bool FluxboxWindow::handleGnomePropertyNotify(Atom atom) { 940bool FluxboxWindow::handleGnomePropertyNotify(Atom atom) {
@@ -945,7 +958,7 @@ bool FluxboxWindow::handleGnomePropertyNotify(Atom atom) {
945 #ifdef DEBUG 958 #ifdef DEBUG
946 cerr<<__FILE__<<"("<<__LINE__<<"): gnome layer"<<endl; 959 cerr<<__FILE__<<"("<<__LINE__<<"): gnome layer"<<endl;
947 #endif 960 #endif
948 961 loadGnomeLayerAtom();
949 } else 962 } else
950 return false; 963 return false;
951 964
@@ -994,12 +1007,36 @@ void FluxboxWindow::setGnomeState(int state) {
994 cerr<<"Arrange Ignore"<<endl; 1007 cerr<<"Arrange Ignore"<<endl;
995 */ 1008 */
996} 1009}
1010
1011void FluxboxWindow::setGnomeLayer(int layer) {
1012 switch (layer) {
1013 case WIN_LAYER_DESKTOP:
1014 m_layer = LAYER_BOTTOM;
1015 break;
1016 case WIN_LAYER_BELOW:
1017 m_layer = LAYER_BELOW;
1018 break;
1019 case WIN_LAYER_NORMAL:
1020 m_layer = LAYER_NORMAL;
1021 break;
1022 case WIN_LAYER_ONTOP:
1023 case WIN_LAYER_DOCK:
1024 case WIN_LAYER_ABOVE_DOCK:
1025 case WIN_LAYER_MENU:
1026 m_layer = LAYER_TOP;
1027 break;
1028 default:
1029 m_layer = LAYER_NORMAL;
1030 break;
1031 }
1032}
997//------------ loadGnomeAtoms ------------ 1033//------------ loadGnomeAtoms ------------
998// Loads the values from the atoms 1034// Loads the values from the atoms
999//---------------------------------------- 1035//----------------------------------------
1000void FluxboxWindow::loadGnomeAtoms() { 1036void FluxboxWindow::loadGnomeAtoms() {
1001 loadGnomeStateAtom(); 1037 loadGnomeStateAtom();
1002 loadGnomeHintsAtom(); 1038 loadGnomeHintsAtom();
1039 loadGnomeLayerAtom();
1003} 1040}
1004//----------- loadGnomeStateAtom ------- 1041//----------- loadGnomeStateAtom -------
1005// Gets gnome state from the atom 1042// Gets gnome state from the atom
@@ -1040,7 +1077,26 @@ void FluxboxWindow::loadGnomeHintsAtom() {
1040 XFree (data); 1077 XFree (data);
1041 } 1078 }
1042} 1079}
1043 1080//---------- loadGnomeLayerAtom ------------
1081// Gets the gnome layer from the atom
1082//------------------------------------------
1083void FluxboxWindow::loadGnomeLayerAtom() {
1084 Atom ret_type;
1085 int fmt;
1086 unsigned long nitems, bytes_after;
1087 long *data = 0;
1088 BaseDisplay *bd = screen->getBaseDisplay();
1089 if (XGetWindowProperty (bd->getXDisplay(), getClientWindow(),
1090 bd->getGnomeLayerAtom(), 0, 1, False, XA_CARDINAL,
1091 &ret_type, &fmt, &nitems, &bytes_after,
1092 (unsigned char **) &data) == Success && data) {
1093 setGnomeLayer(static_cast<int>(*data));
1094 #ifdef DEBUG
1095 cerr<<__FILE__<<"("<<__LINE__<<"): gnome hints:0x"<<hex<<*data<<dec<<endl;
1096 #endif
1097 XFree (data);
1098 }
1099}
1044#endif //!GNOME 1100#endif //!GNOME
1045 1101
1046#ifdef NEWWMSPEC 1102#ifdef NEWWMSPEC
diff --git a/src/Window.hh b/src/Window.hh
index 584d187..c65fa2f 100644
--- a/src/Window.hh
+++ b/src/Window.hh
@@ -22,7 +22,7 @@
22// 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
23// DEALINGS IN THE SOFTWARE. 23// DEALINGS IN THE SOFTWARE.
24 24
25// $Id: Window.hh,v 1.10 2002/02/17 18:47:45 fluxgen Exp $ 25// $Id: Window.hh,v 1.11 2002/02/26 22:35:58 fluxgen Exp $
26 26
27#ifndef WINDOW_HH 27#ifndef WINDOW_HH
28#define WINDOW_HH 28#define WINDOW_HH
@@ -156,7 +156,7 @@ public:
156 inline const int &getYClient(void) const { return client.y; } 156 inline const int &getYClient(void) const { return client.y; }
157 inline const int &getWorkspaceNumber(void) const { return workspace_number; } 157 inline const int &getWorkspaceNumber(void) const { return workspace_number; }
158 inline const int &getWindowNumber(void) const { return window_number; } 158 inline const int &getWindowNumber(void) const { return window_number; }
159 159 inline const WinLayer getLayer(void) const { return m_layer; }
160 inline const unsigned int &getWidth(void) const { return frame.width; } 160 inline const unsigned int &getWidth(void) const { return frame.width; }
161 inline const unsigned int &getHeight(void) const { return frame.height; } 161 inline const unsigned int &getHeight(void) const { return frame.height; }
162 inline const unsigned int &getClientHeight(void) const 162 inline const unsigned int &getClientHeight(void) const
@@ -229,6 +229,7 @@ private:
229 229
230 int focus_mode, window_number, workspace_number; 230 int focus_mode, window_number, workspace_number;
231 unsigned long current_state; 231 unsigned long current_state;
232 WinLayer m_layer;
232 233
233 struct _client { 234 struct _client {
234 FluxboxWindow *transient_for, // which window are we a transient for? 235 FluxboxWindow *transient_for, // which window are we a transient for?
@@ -309,12 +310,16 @@ private:
309 void updateGnomeLayerAtom(); 310 void updateGnomeLayerAtom();
310 void updateGnomeWorkspaceAtom(); 311 void updateGnomeWorkspaceAtom();
311 312
313 void setGnomeLayer(int layer);
314
312 int getGnomeWindowState(); 315 int getGnomeWindowState();
313 bool handleGnomePropertyNotify(Atom atom); 316 bool handleGnomePropertyNotify(Atom atom);
314 int getGnomeLayer(); 317 int getGnomeLayer();
315 void loadGnomeAtoms(); 318 void loadGnomeAtoms();
316 void loadGnomeStateAtom(); 319 void loadGnomeStateAtom();
317 void loadGnomeHintsAtom(); 320 void loadGnomeHintsAtom();
321 void loadGnomeLayerAtom();
322
318 int gnome_hints; 323 int gnome_hints;
319 #endif //GNOME 324 #endif //GNOME
320 325