smarter expose. stop when the window is found
This commit is contained in:
parent
b7dba88a0a
commit
6d68ac2256
4 changed files with 9 additions and 6 deletions
|
@ -65,10 +65,10 @@ void OtkButton::update(void)
|
|||
OtkFocusWidget::update();
|
||||
}
|
||||
|
||||
void OtkButton::expose(const XExposeEvent &e)
|
||||
bool OtkButton::expose(const XExposeEvent &e)
|
||||
{
|
||||
_dirty = true;
|
||||
OtkFocusWidget::expose(e);
|
||||
return OtkFocusWidget::expose(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ public:
|
|||
void release(void);
|
||||
|
||||
virtual void update(void);
|
||||
virtual void expose(const XExposeEvent &e);
|
||||
virtual bool expose(const XExposeEvent &e);
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -390,16 +390,19 @@ void OtkWidget::removeChild(OtkWidget *child)
|
|||
_children.erase(it);
|
||||
}
|
||||
|
||||
void OtkWidget::expose(const XExposeEvent &e)
|
||||
bool OtkWidget::expose(const XExposeEvent &e)
|
||||
{
|
||||
if (e.window == _window) {
|
||||
_dirty = true;
|
||||
update();
|
||||
return true;
|
||||
} else {
|
||||
OtkWidgetList::iterator it = _children.begin(), end = _children.end();
|
||||
for (; it != end; ++it)
|
||||
(*it)->expose(e);
|
||||
if ((*it)->expose(e))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ public:
|
|||
|
||||
virtual void update(void);
|
||||
|
||||
virtual void expose(const XExposeEvent &e);
|
||||
virtual bool expose(const XExposeEvent &e);
|
||||
|
||||
inline Window getWindow(void) const { return _window; }
|
||||
inline const OtkWidget *getParent(void) const { return _parent; }
|
||||
|
|
Loading…
Reference in a new issue