Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


Hi, all!

I believe I found the cause of fdo#49859 "FORMATTING, UI: numbering
alignment or
indentation is not applied in Impress"

When the "Position" tab is deactivated,
SvxNumPositionTabPage::DeactivatePage()
is called. This call serves two purposes:

1: To check whether the Tab Page may be deactivated (answer: sal_True)
2: To retrieve the user input from this Tab Page

The Position tab contains two MetricFields: aDistBorderMF and aIndentMF. The
processing of input in these fields is triggered when they lose focus, by:

    SvxNumPositionTabPage::DistanceHdl_Impl()

When either aDistBorderMF or aIndentMF has focus when the Position tab is
deactivated, it faithfully triggers a call to DistanceHdl_Impl(). But this
happens AFTER the call to DeactivatePage(). Therefore, the user input
retrieved from DeactivatePage() doesn't reflect the last changes made
in aDistBorderMF or aIndentMF.

I propose an addition to DeactivatePage():

int  SvxNumPositionTabPage::DeactivatePage(SfxItemSet *_pSet)
{
    if(_pSet)
    {
        if(aDistBorderMF.IsEnabled())
            DistanceHdl_Impl(&aDistBorderMF);
        DistanceHdl_Impl(&aIndentMF);
        FillItemSet(*_pSet);
    }
    return sal_True;
}

Question:

Ideally, I would wrap the DistanceHdl_Impl() calls in ..MF.HasFocus() checks
to prevent unnecessary calls:

        if(aDistBorderMF.HasFocus() && aDistBorderMF.IsEnabled())
            DistanceHdl_Impl(&aDistBorderMF);
        if(aIndentMF.HasFocus())
            DistanceHdl_Impl(&aIndentMF);
        FillItemSet(*_pSet);

But both aDistBorderMF.HasFocus() and aIndentMF.HasFocus() always seem to
return
false! Is this intentional, or a bug?

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.