_desk_press(false),
_iconify_press(false),
_icon_press(false),
- _close_press(false)
+ _close_press(false),
+ _press_button(0)
{
assert(client);
}
}
+void Frame::buttonPressHandler(const XButtonEvent &e)
+{
+ if (_press_button) return;
+ _press_button = e.button;
+
+ if (e.window == _max) {
+ _max_press = true;
+ renderMax();
+ }
+ if (e.window == _close) {
+ _close_press = true;
+ renderClose();
+ }
+ if (e.window == _desk) {
+ _desk_press = true;
+ renderDesk();
+ }
+ if (e.window == _iconify) {
+ _iconify_press = true;
+ renderIconify();
+ }
+ if (e.window == _icon) {
+ _icon_press = true;
+ renderIcon();
+ }
+}
+
+void Frame::buttonReleaseHandler(const XButtonEvent &e)
+{
+ if (e.button != _press_button) return;
+ _press_button = 0;
+
+ if (e.window == _max) {
+ _max_press = false;
+ renderMax();
+ }
+ if (e.window == _close) {
+ _close_press = false;
+ renderClose();
+ }
+ if (e.window == _desk) {
+ _desk_press = false;
+ renderDesk();
+ }
+ if (e.window == _iconify) {
+ _iconify_press = false;
+ renderIconify();
+ }
+ if (e.window == _icon) {
+ _icon_press = false;
+ renderIcon();
+ }
+}
+
MouseContext::MC Frame::mouseContext(Window win) const
{
if (win == _frame) return MouseContext::Frame;
otk::Surface *_close_sur;
std::string _layout; // layout of the titlebar
+
bool _max_press;
bool _desk_press;
bool _iconify_press;
bool _icon_press;
bool _close_press;
+ unsigned int _press_button; // mouse button that started the press
FrameGeometry geom;
//! Hides the frame
void hide();
+ void buttonPressHandler(const XButtonEvent &e);
+ void buttonReleaseHandler(const XButtonEvent &e);
+
//! Returns the MouseContext for the given window id
/*!
Returns '-1' if no valid mouse context exists in the frame for the given