diff options
author | corvid <corvid@lavabit.com> | 2011-02-23 18:39:01 +0000 |
---|---|---|
committer | corvid <corvid@lavabit.com> | 2011-02-23 18:39:01 +0000 |
commit | bc476c13039158dea4e5370987f5f5adbff4f02d (patch) | |
tree | 771130aea1f6721fcbc2f0a656012d68c0ef9ad0 /dw/layout.cc | |
parent | 144a37853adef52ba8024329859daea1c5c96c6f (diff) |
different fix for the getWidgetAtPoint problems
Diffstat (limited to 'dw/layout.cc')
-rw-r--r-- | dw/layout.cc | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/dw/layout.cc b/dw/layout.cc index bfaf9969..3680e0c8 100644 --- a/dw/layout.cc +++ b/dw/layout.cc @@ -185,7 +185,6 @@ Layout::Layout (Platform *platform) view = NULL; topLevel = NULL; widgetAtPoint = NULL; - deletingTopLevel = false; DBG_OBJ_CREATE (this, "DwRenderLayout"); @@ -226,10 +225,11 @@ Layout::~Layout () platform->removeIdle (resizeIdleId); if (bgColor) bgColor->unref (); - deletingTopLevel = true; - if (topLevel) - delete topLevel; - deletingTopLevel = false; + if (topLevel) { + Widget *w = topLevel; + topLevel = NULL; + delete w; + } delete platform; delete view; delete anchorsTable; @@ -282,10 +282,11 @@ void Layout::removeWidget () void Layout::setWidget (Widget *widget) { widgetAtPoint = NULL; - deletingTopLevel = true; - if (topLevel) - delete topLevel; - deletingTopLevel = false; + if (topLevel) { + Widget *w = topLevel; + topLevel = NULL; + delete w; + } textZone->zoneFree (); addWidget (widget); @@ -775,9 +776,6 @@ bool Layout::motionNotify (View *view, int x, int y, ButtonState state) { EventButton event; - if (deletingTopLevel) - return true; - moveToWidgetAtPoint (x, y, state); event.xCanvas = x; @@ -836,7 +834,7 @@ Widget *Layout::getWidgetAtPoint (int x, int y) { _MSG ("------------------------------------------------------------\n"); _MSG ("widget at (%d, %d)\n", x, y); - if (topLevel && !deletingTopLevel) + if (topLevel) return topLevel->getWidgetAtPoint (x, y, 0); else return NULL; |