Put some ownership on a vector.
This commit is contained in:
14
dw/layout.cc
14
dw/layout.cc
@ -262,8 +262,6 @@ Layout::Layout (Platform *platform, bool limit)
|
|||||||
topLevel = NULL;
|
topLevel = NULL;
|
||||||
widgetAtPoint = NULL;
|
widgetAtPoint = NULL;
|
||||||
|
|
||||||
queueResizeList = new typed::Vector<Widget> (4, false);
|
|
||||||
|
|
||||||
DBG_OBJ_CREATE ("dw::core::Layout");
|
DBG_OBJ_CREATE ("dw::core::Layout");
|
||||||
|
|
||||||
bgColor = NULL;
|
bgColor = NULL;
|
||||||
@ -331,7 +329,6 @@ Layout::~Layout ()
|
|||||||
topLevel.reset();
|
topLevel.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
delete queueResizeList;
|
|
||||||
delete platform;
|
delete platform;
|
||||||
delete view;
|
delete view;
|
||||||
delete textZone;
|
delete textZone;
|
||||||
@ -383,7 +380,7 @@ void Layout::addWidget (std::unique_ptr< Widget > widget)
|
|||||||
widget_p->container = NULL;
|
widget_p->container = NULL;
|
||||||
DBG_OBJ_SET_PTR_O (widget_p, "container", widget_p->container);
|
DBG_OBJ_SET_PTR_O (widget_p, "container", widget_p->container);
|
||||||
|
|
||||||
queueResizeList->clear ();
|
queueResizeList.clear ();
|
||||||
widget_p->notifySetAsTopLevel ();
|
widget_p->notifySetAsTopLevel ();
|
||||||
|
|
||||||
findtextState.setWidget (widget_p);
|
findtextState.setWidget (widget_p);
|
||||||
@ -404,7 +401,7 @@ void Layout::removeWidget ()
|
|||||||
* \bug Some more attributes must be reset here.
|
* \bug Some more attributes must be reset here.
|
||||||
*/
|
*/
|
||||||
topLevel = NULL;
|
topLevel = NULL;
|
||||||
queueResizeList->clear ();
|
queueResizeList.clear ();
|
||||||
widgetAtPoint = NULL;
|
widgetAtPoint = NULL;
|
||||||
canvasWidth = canvasAscent = canvasDescent = 0;
|
canvasWidth = canvasAscent = canvasDescent = 0;
|
||||||
scrollX = scrollY = 0;
|
scrollX = scrollY = 0;
|
||||||
@ -887,10 +884,7 @@ void Layout::resizeIdle ()
|
|||||||
|
|
||||||
resizeCounter++;
|
resizeCounter++;
|
||||||
|
|
||||||
for (typed::Iterator <Widget> it = queueResizeList->iterator();
|
for( auto &widget: queueResizeList ) {
|
||||||
it.hasNext (); ) {
|
|
||||||
Widget *widget = it.getNext ();
|
|
||||||
|
|
||||||
if (widget->resizeQueued ()) {
|
if (widget->resizeQueued ()) {
|
||||||
widget->setFlags (Widget::NEEDS_RESIZE);
|
widget->setFlags (Widget::NEEDS_RESIZE);
|
||||||
widget->unsetFlags (Widget::RESIZE_QUEUED);
|
widget->unsetFlags (Widget::RESIZE_QUEUED);
|
||||||
@ -906,7 +900,7 @@ void Layout::resizeIdle ()
|
|||||||
widget->unsetFlags (Widget::EXTREMES_QUEUED);
|
widget->unsetFlags (Widget::EXTREMES_QUEUED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
queueResizeList->clear ();
|
queueResizeList.clear ();
|
||||||
|
|
||||||
// Reset here, since below, queueResize() may be called again.
|
// Reset here, since below, queueResize() may be called again.
|
||||||
resizeIdleId = -1;
|
resizeIdleId = -1;
|
||||||
|
|||||||
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
namespace dw {
|
namespace dw {
|
||||||
@ -160,7 +161,7 @@ private:
|
|||||||
View *view;
|
View *view;
|
||||||
std::unique_ptr< Widget > topLevel;
|
std::unique_ptr< Widget > topLevel;
|
||||||
Widget *widgetAtPoint;
|
Widget *widgetAtPoint;
|
||||||
lout::container::typed::Vector<Widget> *queueResizeList;
|
std::vector< Widget * > queueResizeList;
|
||||||
|
|
||||||
/* The state, which must be projected into the view. */
|
/* The state, which must be projected into the view. */
|
||||||
style::Color *bgColor;
|
style::Color *bgColor;
|
||||||
|
|||||||
@ -333,7 +333,7 @@ void Widget::queueResize (int ref, bool extremesChanged, bool fast)
|
|||||||
if (layout) {
|
if (layout) {
|
||||||
// If RESIZE_QUEUED is set, this widget is already in the list.
|
// If RESIZE_QUEUED is set, this widget is already in the list.
|
||||||
if (!resizeQueued ())
|
if (!resizeQueued ())
|
||||||
layout->queueResizeList->put (this);
|
layout->queueResizeList.push_back (this);
|
||||||
|
|
||||||
resizeFlag = RESIZE_QUEUED;
|
resizeFlag = RESIZE_QUEUED;
|
||||||
extremesFlag = EXTREMES_QUEUED;
|
extremesFlag = EXTREMES_QUEUED;
|
||||||
@ -372,7 +372,7 @@ void Widget::queueResize (int ref, bool extremesChanged, bool fast)
|
|||||||
for (widget2 = parent, child = this; widget2;
|
for (widget2 = parent, child = this; widget2;
|
||||||
child = widget2, widget2 = widget2->parent) {
|
child = widget2, widget2 = widget2->parent) {
|
||||||
if (layout && !widget2->resizeQueued ())
|
if (layout && !widget2->resizeQueued ())
|
||||||
layout->queueResizeList->put (widget2);
|
layout->queueResizeList.push_back (widget2);
|
||||||
|
|
||||||
DBG_OBJ_MSGF ("resize", 2, "setting %s and ALLOCATE_QUEUED for %p",
|
DBG_OBJ_MSGF ("resize", 2, "setting %s and ALLOCATE_QUEUED for %p",
|
||||||
resizeFlag == RESIZE_QUEUED ?
|
resizeFlag == RESIZE_QUEUED ?
|
||||||
|
|||||||
Reference in New Issue
Block a user