aboutsummaryrefslogtreecommitdiff
path: root/dw/layout.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dw/layout.cc')
-rw-r--r--dw/layout.cc24
1 files changed, 21 insertions, 3 deletions
diff --git a/dw/layout.cc b/dw/layout.cc
index b93a1b70..f9b3f763 100644
--- a/dw/layout.cc
+++ b/dw/layout.cc
@@ -91,6 +91,10 @@ void Layout::LayoutImgRenderer::draw (int x, int y, int width, int height)
// ----------------------------------------------------------------------
+void Layout::Receiver::resizeQueued (bool extremesChanged)
+{
+}
+
void Layout::Receiver::canvasSizeChanged (int width, int ascent, int descent)
{
}
@@ -110,6 +114,10 @@ bool Layout::Emitter::emitToReceiver (lout::signal::Receiver *receiver,
((Integer*)argv[2])->getValue ());
break;
+ case RESIZE_QUEUED:
+ layoutReceiver->resizeQueued (((Boolean*)argv[0])->getValue ());
+ break;
+
default:
misc::assertNotReached ();
}
@@ -117,6 +125,13 @@ bool Layout::Emitter::emitToReceiver (lout::signal::Receiver *receiver,
return false;
}
+void Layout::Emitter::emitResizeQueued (bool extremesChanged)
+{
+ Boolean ec (extremesChanged);
+ Object *argv[1] = { &ec };
+ emitVoid (RESIZE_QUEUED, 1, argv);
+}
+
void Layout::Emitter::emitCanvasSizeChanged (int width,
int ascent, int descent)
{
@@ -963,9 +978,10 @@ void Layout::queueDrawExcept (int x, int y, int width, int height,
queueDraw (ix2, iy1, x + width - ix2, iy2 - iy1);
}
-void Layout::queueResize ()
+void Layout::queueResize (bool extremesChanged)
{
- DBG_OBJ_MSG ("resize", 0, "<b>queueResize</b>");
+ DBG_OBJ_MSGF ("resize", 0, "<b>queueResize</b> (%s)",
+ extremesChanged ? "true" : "false");
DBG_OBJ_MSG_START ();
if (resizeIdleId == -1) {
@@ -975,6 +991,8 @@ void Layout::queueResize ()
DBG_OBJ_MSGF ("resize", 1, "setting resizeIdleId = %d", resizeIdleId);
}
+ emitter.emitResizeQueued (extremesChanged);
+
DBG_OBJ_MSG_END ();
}
@@ -1261,7 +1279,7 @@ void Layout::viewportSizeChanged (View *view, int width, int height)
// similar to addWidget()
topLevel->queueResize (-1, false);
else
- queueResize ();
+ queueResize (false);
}
viewportWidth = width;