MCPcopy Create free account
hub / github.com/dillo-browser/dillo / queueResize

Method queueResize

dw/widget.cc:321–413  ·  view source on GitHub ↗

* \brief This method should be called, when a widget changes its size. * * A "fast" queueResize will ignore the ancestors, and furthermore * not trigger the idle function. Used only within * viewportSizeChanged, and not available outside Layout and Widget. */

Source from the content-addressed store, hash-verified

319 * viewportSizeChanged, and not available outside Layout and Widget.
320 */
321void Widget::queueResize (int ref, bool extremesChanged, bool fast)
322{
323 DBG_OBJ_ENTER ("resize", 0, "queueResize", "%d, %s, %s",
324 ref, extremesChanged ? "true" : "false",
325 fast ? "true" : "false");
326
327 enterQueueResize ();
328
329 Widget *widget2, *child;
330
331 Flags resizeFlag, extremesFlag, totalFlags;
332
333 if (layout) {
334 // If RESIZE_QUEUED is set, this widget is already in the list.
335 if (!resizeQueued ())
336 layout->queueResizeList->put (this);
337
338 resizeFlag = RESIZE_QUEUED;
339 extremesFlag = EXTREMES_QUEUED;
340 } else {
341 resizeFlag = NEEDS_RESIZE;
342 extremesFlag = EXTREMES_CHANGED;
343 }
344
345 setFlags (resizeFlag);
346 setFlags (ALLOCATE_QUEUED);
347 markSizeChange (ref);
348
349 totalFlags = resizeFlag;
350
351 if (extremesChanged) {
352 totalFlags = (Flags)(totalFlags | extremesFlag);
353
354 setFlags (extremesFlag);
355 markExtremesChange (ref);
356 }
357
358 if (fast) {
359 if (parent) {
360 // In this case, queueResize is called from top (may be a
361 // random entry point) to bottom, so markSizeChange and
362 // markExtremesChange have to be called explicitly for the
363 // parent. The tests (needsResize etc.) are uses to check
364 // whether queueResize has been called for the parent, or
365 // whether this widget is the entry point.
366 if (parent->needsResize () || parent->resizeQueued ())
367 parent->markSizeChange (parentRef);
368 if (parent->extremesChanged () || parent->extremesQueued ())
369 parent->markExtremesChange (parentRef);
370 }
371 } else {
372 for (widget2 = parent, child = this; widget2;
373 child = widget2, widget2 = widget2->parent) {
374 if (layout && !widget2->resizeQueued ())
375 layout->queueResizeList->put (widget2);
376
377 DBG_OBJ_MSGF ("resize", 2, "setting %s and ALLOCATE_QUEUED for %p",
378 resizeFlag == RESIZE_QUEUED ?

Callers

nothing calls this directly

Calls 7

enterQueueResizeFunction · 0.85
resizeQueuedFunction · 0.85
setFlagsFunction · 0.85
putMethod · 0.45
resizeQueuedMethod · 0.45
markSizeChangeMethod · 0.45
markExtremesChangeMethod · 0.45

Tested by

no test coverage detected