#endif // SHAPE
-bool BlackboxWindow::validateClient(void) {
+bool BlackboxWindow::validateClient(void) const {
XSync(blackbox->getXDisplay(), False);
XEvent e;
default:
case DecorNormal:
- decorations |= Decor_Titlebar | Decor_Handle | Decor_Border |
- Decor_Iconify | Decor_Maximize;
+ decorations |= Decor_Titlebar | Decor_Border | Decor_Iconify;
+
+ decorations = ((functions & Func_Resize) && !isTransient() ?
+ decorations | Decor_Handle :
+ decorations &= ~Decor_Handle);
+ decorations = (functions & Func_Maximize ?
+ decorations | Decor_Maximize :
+ decorations &= ~Decor_Maximize);
break;
case DecorTiny:
decorations |= Decor_Titlebar | Decor_Iconify;
- decorations &= ~(Decor_Border | Decor_Handle | Decor_Maximize);
+ decorations &= ~(Decor_Border | Decor_Handle);
+
+ decorations = (functions & Func_Maximize ?
+ decorations | Decor_Maximize :
+ decorations &= ~Decor_Maximize);
break;
case DecorTool:
decorations |= Decor_Titlebar;
- decorations &= ~(Decor_Iconify | Decor_Border | Decor_Handle);
- functions |= Func_Move;
+ decorations &= ~(Decor_Iconify | Decor_Border);
+
+ decorations = ((functions & Func_Resize) && !isTransient() ?
+ decorations | Decor_Handle :
+ decorations &= ~Decor_Handle);
+ decorations = (functions & Func_Maximize ?
+ decorations | Decor_Maximize :
+ decorations &= ~Decor_Maximize);
break;
}
Func_Iconify = (1l << 2),
Func_Maximize = (1l << 3),
Func_Close = (1l << 4) };
- typedef unsigned int FunctionFlags;
+ typedef unsigned char FunctionFlags;
enum Decoration { Decor_Titlebar = (1l << 0),
Decor_Handle = (1l << 1),
Decor_Iconify = (1l << 3),
Decor_Maximize = (1l << 4),
Decor_Close = (1l << 5) };
- typedef unsigned int DecorationFlags;
+ typedef unsigned char DecorationFlags;
private:
Blackbox *blackbox;
{ return client.transientList; }
BlackboxWindow *getTransientFor(void) const;
- inline BScreen *getScreen(void) { return screen; }
+ inline BScreen *getScreen(void) const { return screen; }
inline Window getFrameWindow(void) const { return frame.window; }
inline Window getClientWindow(void) const { return client.window; }
inline Window getGroupWindow(void) const { return client.window_group; }
- inline Windowmenu * getWindowmenu(void) { return windowmenu; }
+ inline Windowmenu * getWindowmenu(void) const { return windowmenu; }
inline const char *getTitle(void) const
{ return client.title.c_str(); }
inline void setWindowNumber(int n) { window_number = n; }
- bool validateClient(void);
+ bool validateClient(void) const;
bool setInputFocus(void);
void setFocusFlag(bool focus);