How does the SpecialSpacer system work?

Friedrich W. H. Kossebau kossebau at kde.org
Sat Apr 7 14:28:20 BST 2012


Am Samstag, 7. April 2012, 15:10:02 schrieben Sie:
> On Saturday 07 April 2012 14:56:01 you wrote:
> > Hi,
> > 
> > I fear some of my UI-related commits have ignored the concept of the
> > SpecialSpacer system, as I simply removed that extra widget because it
> > looked like garbage to me and did not result in any visual or functional
> > difference for what I tested (and reviewers have missed this as well :) ).
> > 
> > But I am wondering ATM why the high-priorized stretching bottom spacer is
> > only added if all sub-UIs have a SpecialSpacer, not in any case.
> > KoModeBox.cpp and KoToolDocker.cpp both count the numbers of those
> > 
> >     if (specialCount == optionWidgetList.count()) {
> >     
> >         layout->setRowStretch(cnt, 100);
> >     
> >     }
> > 
> > So e.g. in the tool options docker with the "Draw a path." tool has also
> > the WdgGeometryOptions as sub-UI, which is without a SpecialSpacer, so the
> > bottom stretching spacer is not added.
> > 
> > So:
> > What is the concept behind this?
> > Why is the bottom stretching spacer not added in any case?
> > Should I readd the SpecialSpacer for all cases where I removed it? (need
> > to
> > check)
> 
> The SpecialSpacer means that it should NOT stretch stretch if there are no
> optionwidgets for that tool which can use the extraspace.

Such optionwidgets are e.g. those with list views? Then e.g. 
WdgGeometryOptions (krita/ui/forms/wdgshapeoptions.ui) misses such a 
SpecialSpacer marker, right?

> If no option
> widget can use any space we put all extra space after the final
> optionwidget.
> 
> If we always added the bottom spacer the available space would be share
> between that spacer and the optionwidgets that could actually use it.
> 
> We need the SpecialSpacer to signal to the modebox and tooldocker, that this
> option widget don't want to stretch. However we can't just fix it's size as
> the option widgets needs to be able to strecht in the opposite direction of
> the modebox/tooldocker's main direction.
> 
> Consequently if you remove the SpecialSpacer any extra space will be
> distributed to all those. so yes please add it back in.
> 
> hope this make sense

If my assumptions as given above are correct, than it makes sense for me, yes, 
thanks :)
 
Cheers
Friedrich



More information about the calligra-devel mailing list