X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FWindow.hh;h=e2b5d9b0a7a59c322ecdd7b8e1bc9a11db77883d;hb=01732a20dbb6b75431dc34fbe8401bfca952f43a;hp=72cefe618a4d4513376922d80ccec88d649c4a09;hpb=300491ce5a932ba777274e7f5c3d085f5ca59ee0;p=chaz%2Fopenbox diff --git a/src/Window.hh b/src/Window.hh index 72cefe61..e2b5d9b0 100644 --- a/src/Window.hh +++ b/src/Window.hh @@ -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