From f89831466220b6219a15fa3e670149191055ba5a Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Thu, 13 Feb 2003 07:30:11 +0000 Subject: [PATCH] buttons press! --- src/frame.cc | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++- src/frame.hh | 5 +++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/src/frame.cc b/src/frame.cc index 027b7afc..68ff2252 100644 --- a/src/frame.cc +++ b/src/frame.cc @@ -58,7 +58,8 @@ Frame::Frame(Client *client) _desk_press(false), _iconify_press(false), _icon_press(false), - _close_press(false) + _close_press(false), + _press_button(0) { assert(client); @@ -156,6 +157,60 @@ void Frame::hide() } } +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; diff --git a/src/frame.hh b/src/frame.hh index c75194c4..c5a9a312 100644 --- a/src/frame.hh +++ b/src/frame.hh @@ -94,11 +94,13 @@ private: 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; @@ -168,6 +170,9 @@ public: //! 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 -- 2.45.2