fixed autohide bug

This commit is contained in:
fluxgen 2003-12-20 19:05:42 +00:00
parent b3723c2094
commit 044aa68e34

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// $Id: Toolbar.cc,v 1.133 2003/12/19 03:57:40 fluxgen Exp $ // $Id: Toolbar.cc,v 1.134 2003/12/20 19:05:42 fluxgen Exp $
#include "Toolbar.hh" #include "Toolbar.hh"
@ -353,7 +353,10 @@ void Toolbar::lower() {
void Toolbar::reconfigure() { void Toolbar::reconfigure() {
updateVisibleState(); updateVisibleState();
if (!doAutoHide() && isHidden())
toggleHidden();
m_tool_factory.updateThemes(); m_tool_factory.updateThemes();
// parse resource tools and determine if we need to rebuild toolbar // parse resource tools and determine if we need to rebuild toolbar
@ -501,10 +504,12 @@ void Toolbar::buttonReleaseEvent(XButtonEvent &re) {
screen().prevWorkspace(1); screen().prevWorkspace(1);
} }
void Toolbar::enterNotifyEvent(XCrossingEvent &not_used) { void Toolbar::enterNotifyEvent(XCrossingEvent &not_used) {
if (! doAutoHide()) if (! doAutoHide()) {
if (isHidden())
toggleHidden();
return; return;
}
if (isHidden()) { if (isHidden()) {
if (! m_hide_timer.isTiming()) if (! m_hide_timer.isTiming())
@ -515,9 +520,13 @@ void Toolbar::enterNotifyEvent(XCrossingEvent &not_used) {
} }
} }
void Toolbar::leaveNotifyEvent(XCrossingEvent &not_used) { void Toolbar::leaveNotifyEvent(XCrossingEvent &event) {
if (! doAutoHide()) if (! doAutoHide())
return; return;
// still inside?
if (event.x_root > x() && event.x_root <= (int)(x() + width()) &&
event.y_root > y() && event.y_root <= (int)(y() + height()))
return;
if (isHidden()) { if (isHidden()) {
if (m_hide_timer.isTiming()) if (m_hide_timer.isTiming())
@ -529,16 +538,13 @@ void Toolbar::leaveNotifyEvent(XCrossingEvent &not_used) {
void Toolbar::exposeEvent(XExposeEvent &ee) { void Toolbar::exposeEvent(XExposeEvent &ee) {
if (ee.window == frame.window) if (ee.window == frame.window) {
frame.window.clearArea(ee.x, ee.y, frame.window.clearArea(ee.x, ee.y,
ee.width, ee.height); ee.width, ee.height);
}
} }
void Toolbar::keyPressEvent(XKeyEvent &ke) {
}
void Toolbar::handleEvent(XEvent &event) { void Toolbar::handleEvent(XEvent &event) {
if (event.type == ConfigureNotify && if (event.type == ConfigureNotify &&
event.xconfigure.window != window().window()) event.xconfigure.window != window().window())
@ -721,7 +727,7 @@ void Toolbar::updateVisibleState() {
} }
void Toolbar::toggleHidden() { void Toolbar::toggleHidden() {
m_hide_timer.fireOnce(true);
// toggle hidden // toggle hidden
m_hidden = ! m_hidden; m_hidden = ! m_hidden;