]> Dogcows Code - chaz/openbox/blobdiff - src/Window.hh
fixed menu placement on menus with very small windows
[chaz/openbox] / src / Window.hh
index 72cefe618a4d4513376922d80ccec88d649c4a09..e2b5d9b0a7a59c322ecdd7b8e1bc9a11db77883d 100644 (file)
@@ -134,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 };
@@ -183,16 +184,16 @@ private:
       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;
 
@@ -229,7 +230,7 @@ private:
       title,
       label,
       handle,
-      close_button, iconify_button, maximize_button,
+      close_button, iconify_button, maximize_button, stick_button,
       right_grip, left_grip;
 
     /*
@@ -254,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);
@@ -267,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);
@@ -284,23 +285,28 @@ private:
   void destroyIconifyButton(void);
   void createMaximizeButton(void);
   void destroyMaximizeButton(void);
+  void createStickyButton(void);
+  void destroyStickyButton(void);
   void redrawWindowFrame(void) const;
   void redrawLabel(void) const;
   void redrawAllButtons(void) const;
   void redrawCloseButton(bool pressed) const;
   void redrawIconifyButton(bool pressed) const;
   void redrawMaximizeButton(bool pressed) const;
+  void redrawStickyButton(bool pressed) const;
   void applyGravity(Rect &r);
   void restoreGravity(Rect &r);
   void setAllowedActions(void);
   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);
@@ -321,8 +327,15 @@ public:
   inline bool isMaximizable(void) const { return functions & Func_Maximize; }
   inline bool isResizable(void) const { return functions & Func_Resize; }
   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
@@ -370,6 +383,8 @@ 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);
@@ -387,22 +402,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 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.026037 seconds and 4 git commands to generate.