diff options
Diffstat (limited to 'src/FbTk')
-rw-r--r-- | src/FbTk/Button.cc | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/FbTk/Button.cc b/src/FbTk/Button.cc index 6d2fd21..8b0a478 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.9 2003/08/04 12:46:49 fluxgen Exp $ | 22 | // $Id: Button.cc,v 1.10 2003/08/11 14:40:15 fluxgen Exp $ |
23 | 23 | ||
24 | #include "Button.hh" | 24 | #include "Button.hh" |
25 | 25 | ||
@@ -89,15 +89,15 @@ void Button::setPressedPixmap(Pixmap pm) { | |||
89 | } | 89 | } |
90 | 90 | ||
91 | void Button::setBackgroundColor(const Color &color) { | 91 | void Button::setBackgroundColor(const Color &color) { |
92 | m_win.setBackgroundColor(color); | 92 | m_background_color = color; |
93 | m_background_color = color; | 93 | window().setBackgroundColor(color); |
94 | clear(); | 94 | clear(); |
95 | window().updateTransparent(); | 95 | window().updateTransparent(); |
96 | } | 96 | } |
97 | 97 | ||
98 | void Button::setBackgroundPixmap(Pixmap pm) { | 98 | void Button::setBackgroundPixmap(Pixmap pm) { |
99 | m_win.setBackgroundPixmap(pm); | ||
100 | m_background_pm = pm; | 99 | m_background_pm = pm; |
100 | window().setBackgroundPixmap(pm); | ||
101 | clear(); | 101 | clear(); |
102 | window().updateTransparent(); | 102 | window().updateTransparent(); |
103 | } | 103 | } |
@@ -124,21 +124,18 @@ void Button::buttonReleaseEvent(XButtonEvent &event) { | |||
124 | m_win.setBackgroundPixmap(m_background_pm); | 124 | m_win.setBackgroundPixmap(m_background_pm); |
125 | else | 125 | else |
126 | m_win.setBackgroundColor(m_background_color); | 126 | m_win.setBackgroundColor(m_background_color); |
127 | |||
127 | clear(); // clear background | 128 | clear(); // clear background |
128 | 129 | ||
129 | if (m_foreground_pm) { // draw foreground | 130 | if (m_foreground_pm) { // draw foreground pixmap |
130 | Display *disp = App::instance()->display(); | 131 | Display *disp = App::instance()->display(); |
131 | 132 | ||
132 | if (m_gc == 0) // get default gc | 133 | if (m_gc == 0) // get default gc if we dont have one |
133 | m_gc = DefaultGC(disp, m_win.screenNumber()); | 134 | m_gc = DefaultGC(disp, m_win.screenNumber()); |
134 | 135 | ||
135 | XCopyArea(disp, m_foreground_pm, m_win.window(), m_gc, 0, 0, width(), height(), 0, 0); | 136 | XCopyArea(disp, m_foreground_pm, m_win.window(), m_gc, 0, 0, width(), height(), 0, 0); |
136 | } | 137 | } |
137 | 138 | ||
138 | if (event.x < 0 || event.y < 0 || | ||
139 | event.x > width() || event.y > height()) | ||
140 | return; | ||
141 | |||
142 | if (event.button > 0 && event.button <= 5 && | 139 | if (event.button > 0 && event.button <= 5 && |
143 | m_onclick[event.button -1].get() != 0) | 140 | m_onclick[event.button -1].get() != 0) |
144 | m_onclick[event.button - 1]->execute(); | 141 | m_onclick[event.button - 1]->execute(); |
@@ -147,6 +144,11 @@ void Button::buttonReleaseEvent(XButtonEvent &event) { | |||
147 | } | 144 | } |
148 | 145 | ||
149 | void Button::exposeEvent(XExposeEvent &event) { | 146 | void Button::exposeEvent(XExposeEvent &event) { |
147 | if (m_background_pm) | ||
148 | m_win.setBackgroundPixmap(m_background_pm); | ||
149 | else | ||
150 | m_win.setBackgroundColor(m_background_color); | ||
151 | |||
150 | clear(); | 152 | clear(); |
151 | window().updateTransparent(event.x, event.y, event.width, event.height); | 153 | window().updateTransparent(event.x, event.y, event.width, event.height); |
152 | } | 154 | } |