X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FWindow.hh;h=b923c4bfe14f8a597ab87cee2246142eb18d0778;hb=fa3fb793e7e8a4d7dfdc1d4997983ea59a8b6924;hp=8143ade15cefb6eb9ad97adc4fe20b976e8bc8c5;hpb=bc3268b6f9f86e6aebe0d06ce174b2d603d09c1e;p=chaz%2Fopenbox diff --git a/src/Window.hh b/src/Window.hh index 8143ade1..b923c4bf 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 }; @@ -190,9 +191,9 @@ private: /* * 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; @@ -216,20 +217,20 @@ private: */ struct _frame { - // u -> unfocused, f -> has focus + // u -> unfocused, f -> has focus, p -> pressed unsigned long ulabel_pixel, flabel_pixel, utitle_pixel, ftitle_pixel, uhandle_pixel, fhandle_pixel, ubutton_pixel, - fbutton_pixel, pbutton_pixel, uborder_pixel, fborder_pixel, - ugrip_pixel, fgrip_pixel; + fbutton_pixel, pfbutton_pixel, pubutton_pixel, + uborder_pixel, fborder_pixel, ugrip_pixel, fgrip_pixel; Pixmap ulabel, flabel, utitle, ftitle, uhandle, fhandle, - ubutton, fbutton, pbutton, ugrip, fgrip; + ubutton, fbutton, pfbutton, pubutton, ugrip, fgrip; Window window, // the frame plate, // holds the client 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); @@ -283,19 +285,27 @@ 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 BlackboxWindow::redrawButton(bool pressed, Window win, + Pixmap fppix, unsigned long fppixel, + Pixmap uppix, unsigned long uppixel, + Pixmap fpix, unsigned long fpixel, + Pixmap upix, unsigned long upixel) 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); - bool doWorkspaceWarping(int x_root, int y_root, int dx, int dy); + 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); @@ -378,6 +388,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); @@ -413,6 +425,7 @@ public: #ifdef SHAPE void configureShape(void); + void clearShape(void); void shapeEvent(XShapeEvent * /*unused*/); #endif // SHAPE