]> Dogcows Code - chaz/openbox/blobdiff - src/Window.hh
Added missing header for clearShape, which was breaking compilation
[chaz/openbox] / src / Window.hh
index eb5baefb862335a47992baf8ec4a153f08f32a00..0f10cfbcd17ec137dd7fb10f903be41ae659b113 100644 (file)
@@ -38,11 +38,6 @@ extern "C" {
 #include "Timer.hh"
 #include "Util.hh"
 #include "Windowmenu.hh"
-#include "Workspace.hh"
-#include "Screen.hh"
-
-class XAtom;
-class BInput;
 
 #define MwmHintsFunctions     (1l << 0)
 #define MwmHintsDecorations   (1l << 1)
@@ -131,7 +126,6 @@ private:
   Blackbox *blackbox;
   BScreen *screen;
   XAtom *xatom;
-  BInput *input;
   BTimer *timer;
   BlackboxAttributes blackbox_attrib;
 
@@ -140,6 +134,7 @@ private:
 
   unsigned int window_number;
   unsigned long current_state;
+  unsigned int mod_mask;    // the mod mask used to grab buttons
 
   enum FocusMode { F_NoInput = 0, F_Passive,
                    F_LocallyActive, F_GloballyActive };
@@ -182,21 +177,23 @@ private:
       min_width, min_height,        // can not be resized smaller
       max_width, max_height,        // can not be resized larger
       width_inc, height_inc,        // increment step
+#if 0 // not supported at the moment
       min_aspect_x, min_aspect_y,   // minimum aspect ratio
       max_aspect_x, max_aspect_y,   // maximum aspect ratio
+#endif
       base_width, base_height,
       win_gravity;
 
-    unsigned long initial_state, normal_hint_flags, wm_hint_flags;
+    unsigned long initial_state, normal_hint_flags;
   } client;
 
   FunctionFlags functions;
   /*
    * what decorations do we have?
    * this is based on the type of the client window as well as user input
-   * the menu is not really decor, but it goes hand in hand with the decor
    */
   DecorationFlags decorations;
+  DecorationFlags mwm_decorations;
   Corner resize_dir;
   WindowType window_type;
 
@@ -258,9 +255,10 @@ private:
 
   bool getState(void);
   Window createToplevelWindow();
-  Window createChildWindow(Window parent, Cursor = None);
+  Window createChildWindow(Window parent, unsigned long event_mask,
+                           Cursor = None);
 
-  void getWindowType(void);
+  bool getWindowType(void);
   void updateStrut(void);
   void getWMName(void);
   void getWMIconName(void);
@@ -271,7 +269,6 @@ private:
   void getMWMHints(void);
   bool getBlackboxHints(void);
   void getTransientInfo(void);
-  bool isKDESystrayWindow(void);
   void setNetWMAttributes(void);
   void associateClientWindow(void);
   void decorate(void);
@@ -300,11 +297,13 @@ private:
   void setState(unsigned long new_state);
   void upsize(void);
   void doMove(int x_root, int y_root);
+  void doWorkspaceWarping(int x_root, int y_root, int &dx);
+  void doWindowSnapping(int &dx, int &dy);
   void endMove(void);
   void doResize(int x_root, int y_root);
   void endResize(void);
 
-  void constrain(Corner anchor, int *pw = 0, int *ph = 0);
+  void constrain(Corner anchor, unsigned int *pw = 0, unsigned int *ph = 0);
 
 public:
   BlackboxWindow(Blackbox *b, Window w, BScreen *s);
@@ -324,10 +323,16 @@ public:
   inline bool isIconifiable(void) const { return functions & Func_Iconify; }
   inline bool isMaximizable(void) const { return functions & Func_Maximize; }
   inline bool isResizable(void) const { return functions & Func_Resize; }
-  inline bool isMovable(void) const { return functions & Func_Move; }
   inline bool isClosable(void) const { return functions & Func_Close; }
-  inline bool isDesktop(void) const { return window_type == Type_Desktop; }
 
+  // is a 'normal' window? meaning, a standard client application
+  inline bool isNormal(void) const
+  { return window_type == Type_Dialog || window_type == Type_Normal ||
+           window_type == Type_Toolbar || window_type == Type_Utility; }
+  inline bool isTopmost(void) const
+  { return window_type == Type_Toolbar || window_type == Type_Utility; }
+  inline bool isDesktop(void) const { return window_type == Type_Desktop; }
+  
   inline bool hasTitlebar(void) const { return decorations & Decor_Titlebar; }
 
   inline const BlackboxWindowList &getTransients(void) const
@@ -375,19 +380,18 @@ public:
 
   void beginMove(int x_root, int y_root);
   void beginResize(int x_root, int y_root, Corner dir);
+  void enableDecor(bool enable);
+  void setupDecor();
   void setFocusFlag(bool focus);
   void iconify(void);
   void deiconify(bool reassoc = True, bool raise = True);
   void show(void);
-  void showWindowMenu(int root_x, int root_y);
   void close(void);
   void withdraw(void);
   void maximize(unsigned int button);
   void remaximize(void);
   void shade(void);
   void stick(void);
-  void raise(void);
-  void lower(void);
   void reconfigure(void);
   void grabButtons(void);
   void ungrabButtons(void);
@@ -395,22 +399,25 @@ public:
   void restore(bool remap);
   void configure(int dx, int dy, unsigned int dw, unsigned int dh);
   void setWorkspace(unsigned int n);
-  void changeBlackboxHints(BlackboxHints *net);
+  void changeBlackboxHints(const BlackboxHints *net);
   void restoreAttributes(void);
 
   void buttonPressEvent(const XButtonEvent *be);
   void buttonReleaseEvent(const XButtonEvent *re);
   void motionNotifyEvent(const XMotionEvent *me);
-  void destroyNotifyEvent(const XDestroyWindowEvent */*unused*/);
+  void destroyNotifyEvent(const XDestroyWindowEvent/*unused*/);
   void mapRequestEvent(const XMapRequestEvent *mre);
-  void unmapNotifyEvent(const XUnmapEvent */*unused*/);
-  void reparentNotifyEvent(const XReparentEvent */*unused*/);
-  void propertyNotifyEvent(Atom atom);
+  void unmapNotifyEvent(const XUnmapEvent/*unused*/);
+  void reparentNotifyEvent(const XReparentEvent/*unused*/);
+  void propertyNotifyEvent(const XPropertyEvent *pe);
   void exposeEvent(const XExposeEvent *ee);
   void configureRequestEvent(const XConfigureRequestEvent *cr);
+  void enterNotifyEvent(const XCrossingEvent *ce);
+  void leaveNotifyEvent(const XCrossingEvent* /*unused*/);
 
 #ifdef    SHAPE
   void configureShape(void);
+  void clearShape(void);
   void shapeEvent(XShapeEvent * /*unused*/);
 #endif // SHAPE
 
This page took 0.026061 seconds and 4 git commands to generate.