aboutsummaryrefslogtreecommitdiff
path: root/dw/layout.cc
diff options
context:
space:
mode:
authorcorvid <corvid@lavabit.com>2011-02-23 18:39:01 +0000
committercorvid <corvid@lavabit.com>2011-02-23 18:39:01 +0000
commitbc476c13039158dea4e5370987f5f5adbff4f02d (patch)
tree771130aea1f6721fcbc2f0a656012d68c0ef9ad0 /dw/layout.cc
parent144a37853adef52ba8024329859daea1c5c96c6f (diff)
different fix for the getWidgetAtPoint problems
Diffstat (limited to 'dw/layout.cc')
-rw-r--r--dw/layout.cc24
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;