diff options
Diffstat (limited to 'dw')
-rw-r--r-- | dw/layout.cc | 5 | ||||
-rw-r--r-- | dw/layout.hh | 3 | ||||
-rw-r--r-- | dw/ui.cc | 4 |
3 files changed, 8 insertions, 4 deletions
diff --git a/dw/layout.cc b/dw/layout.cc index 4a5be74e..ed6f55db 100644 --- a/dw/layout.cc +++ b/dw/layout.cc @@ -255,7 +255,7 @@ Layout::Anchor::~Anchor () // --------------------------------------------------------------------- -Layout::Layout (Platform *platform) +Layout::Layout (Platform *platform, bool limit) { this->platform = platform; view = NULL; @@ -308,6 +308,7 @@ Layout::Layout (Platform *platform) resizeIdleCounter = queueResizeCounter = sizeAllocateCounter = sizeRequestCounter = getExtremesCounter = resizeCounter = 0; + resizeLimit = limit; } Layout::~Layout () @@ -882,7 +883,7 @@ void Layout::resizeIdle () /* Prevent infinite resize loop, if we reach this point it is very likely * there is a bug in the layouting process */ - if (resizeCounter >= 1000) { + if (resizeLimit && resizeCounter >= 1000) { MSG_ERR("Emergency layout stop after %d iterations\n", resizeCounter); MSG_ERR("Please file a bug report with the complete console output\n"); resizeIdleId = -1; diff --git a/dw/layout.hh b/dw/layout.hh index e2b64901..08360e19 100644 --- a/dw/layout.hh +++ b/dw/layout.hh @@ -247,12 +247,13 @@ private: int resizeIdleCounter, queueResizeCounter, sizeAllocateCounter, sizeRequestCounter, getExtremesCounter, resizeCounter; + bool resizeLimit; void enterResizeIdle () { resizeIdleCounter++; } void leaveResizeIdle () { resizeIdleCounter--; } public: - Layout (Platform *platform); + Layout (Platform *platform, bool limit=true); ~Layout (); inline void connectLink (LinkReceiver *receiver) @@ -2,6 +2,7 @@ * Dillo Widget * * Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org> + * Copyright 2024 Rodrigo Arias Mallo <rodarima@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -343,7 +344,8 @@ void ComplexButtonResource::init (Widget *widget) { childWidget = widget; - layout = new Layout (createPlatform ()); + /* FIXME: Buttons should not need a full Layout */ + layout = new Layout (createPlatform (), false); setLayout (layout); DBG_OBJ_ASSOC_CHILD (layout); layout->setWidget (widget); |