diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/FbTk/Button.cc | 30 | ||||
-rw-r--r-- | src/FbTk/Button.hh | 17 |
2 files changed, 18 insertions, 29 deletions
diff --git a/src/FbTk/Button.cc b/src/FbTk/Button.cc index b415724..0c568a2 100644 --- a/src/FbTk/Button.cc +++ b/src/FbTk/Button.cc | |||
@@ -19,7 +19,7 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: Button.cc,v 1.2 2002/12/16 11:05:35 fluxgen Exp $ | 22 | // $Id: Button.cc,v 1.3 2002/12/25 11:27:29 fluxgen Exp $ |
23 | 23 | ||
24 | #include "Button.hh" | 24 | #include "Button.hh" |
25 | 25 | ||
@@ -56,6 +56,14 @@ Button::~Button() { | |||
56 | FbTk::EventManager::instance()->remove(m_win); | 56 | FbTk::EventManager::instance()->remove(m_win); |
57 | } | 57 | } |
58 | 58 | ||
59 | void Button::setOnClick(RefCount<Command> &cmd, int button) { | ||
60 | // we only handle buttons 1 to 5 | ||
61 | if (button > 5 || button == 0) | ||
62 | return; | ||
63 | //set on click command for the button | ||
64 | m_onclick[button - 1] = cmd; | ||
65 | } | ||
66 | |||
59 | void Button::move(int x, int y) { | 67 | void Button::move(int x, int y) { |
60 | m_win.move(x, y); | 68 | m_win.move(x, y); |
61 | } | 69 | } |
@@ -124,23 +132,9 @@ void Button::buttonReleaseEvent(XButtonEvent &event) { | |||
124 | event.x > width() || event.y > height()) | 132 | event.x > width() || event.y > height()) |
125 | return; | 133 | return; |
126 | 134 | ||
127 | // call commands | 135 | if (event.button > 0 && event.button <= 5) |
128 | switch (event.button) { | 136 | m_onclick[event.button - 1]->execute(); |
129 | case Button1: | 137 | |
130 | if (*m_onclick_left != 0) | ||
131 | m_onclick_left->execute(); | ||
132 | break; | ||
133 | case Button2: | ||
134 | if (*m_onclick_middle != 0) | ||
135 | m_onclick_middle->execute(); | ||
136 | break; | ||
137 | case Button3: | ||
138 | if (*m_onclick_right != 0) | ||
139 | m_onclick_right->execute(); | ||
140 | break; | ||
141 | }; | ||
142 | |||
143 | |||
144 | } | 138 | } |
145 | 139 | ||
146 | void Button::exposeEvent(XExposeEvent &event) { | 140 | void Button::exposeEvent(XExposeEvent &event) { |
diff --git a/src/FbTk/Button.hh b/src/FbTk/Button.hh index c49815d..a96dcd8 100644 --- a/src/FbTk/Button.hh +++ b/src/FbTk/Button.hh | |||
@@ -19,7 +19,7 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: Button.hh,v 1.2 2002/12/16 11:02:41 fluxgen Exp $ | 22 | // $Id: Button.hh,v 1.3 2002/12/25 11:28:43 fluxgen Exp $ |
23 | 23 | ||
24 | #ifndef FBTK_BUTTON_HH | 24 | #ifndef FBTK_BUTTON_HH |
25 | #define FBTK_BUTTON_HH | 25 | #define FBTK_BUTTON_HH |
@@ -41,13 +41,10 @@ class Button:public EventHandler, | |||
41 | public: | 41 | public: |
42 | Button(int screen_num, int x, int y, unsigned int width, unsigned int height); | 42 | Button(int screen_num, int x, int y, unsigned int width, unsigned int height); |
43 | Button(const FbWindow &parent, int x, int y, unsigned int width, unsigned int height); | 43 | Button(const FbWindow &parent, int x, int y, unsigned int width, unsigned int height); |
44 | virtual ~Button(); | 44 | virtual ~Button(); |
45 | /// sets action when the button is clicked with left mouse btn | 45 | |
46 | void setOnClick(RefCount<Command> &com) { m_onclick_left = com; } | 46 | /// sets action when the button is clicked with #button mouse btn |
47 | /// sets action when the button is clicked with middle mouse btn | 47 | void setOnClick(RefCount<Command> &com, int button = 1); |
48 | void setOnClickMiddle(RefCount<Command> &com) { m_onclick_middle = com; } | ||
49 | /// sets action when the button is clicked with right mouse btn | ||
50 | void setOnClickRight(RefCount<Command> &com) { m_onclick_right = com; } | ||
51 | 48 | ||
52 | void move(int x, int y); | 49 | void move(int x, int y); |
53 | void resize(unsigned int width, unsigned int height); | 50 | void resize(unsigned int width, unsigned int height); |
@@ -100,9 +97,7 @@ private: | |||
100 | Pixmap m_pressed_pm; ///< pressed pixmap | 97 | Pixmap m_pressed_pm; ///< pressed pixmap |
101 | GC m_gc; ///< graphic context for button | 98 | GC m_gc; ///< graphic context for button |
102 | bool m_pressed; ///< if the button is pressed | 99 | bool m_pressed; ///< if the button is pressed |
103 | RefCount<Command> m_onclick_left; ///< what to do when this button is clicked with lmb | 100 | RefCount<Command> m_onclick[5]; ///< what to do when this button is clicked with button num |
104 | RefCount<Command> m_onclick_middle; ///< what to do when this button is clicked with mmb | ||
105 | RefCount<Command> m_onclick_right; ///< what to do when this button is clicked with rmb | ||
106 | }; | 101 | }; |
107 | 102 | ||
108 | }; | 103 | }; |