summaryrefslogtreecommitdiff
path: root/svx/source/dialog
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-02-20 13:59:08 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-02-20 17:00:30 +0100
commit60310e716ef189ea49eeaa7497fe6e4578a7a5c4 (patch)
tree182d7a11036e2c3a908aebdb2d4fd69187a361c4 /svx/source/dialog
parent74ad41f9004746e7a63da218655e951e6a36960a (diff)
Resolves: rhbz#1546997 'search not found' at 0,0 when window too narrow
if the statusbar hadn't got space for the initial label, then it doesn't get set a position, so when later forced visible it draws at 0,0 call Resize on the toolbox to get it to relayout, and while we're at it set the required size of the label so we might have space for it if that text is shorter than the original len allocation Change-Id: I37d20125d8195b2c75e83e9673c82c2011ceda8e Reviewed-on: https://gerrit.libreoffice.org/50041 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svx/source/dialog')
-rw-r--r--svx/source/dialog/srchdlg.cxx42
1 files changed, 17 insertions, 25 deletions
diff --git a/svx/source/dialog/srchdlg.cxx b/svx/source/dialog/srchdlg.cxx
index 6a0701bb1aa0..d23133956212 100644
--- a/svx/source/dialog/srchdlg.cxx
+++ b/svx/source/dialog/srchdlg.cxx
@@ -2364,11 +2364,11 @@ SfxChildWinInfo SvxSearchDialogWrapper::GetInfo() const
}
-static vcl::Window* lcl_GetSearchLabelWindow()
+static void lcl_SetSearchLabelWindow(const OUString& rStr)
{
SfxViewFrame* pViewFrame = SfxViewFrame::Current();
if (!pViewFrame)
- return nullptr;
+ return;
css::uno::Reference< css::beans::XPropertySet > xPropSet(
pViewFrame->GetFrame().GetFrameInterface(), css::uno::UNO_QUERY_THROW);
@@ -2377,7 +2377,7 @@ static vcl::Window* lcl_GetSearchLabelWindow()
css::uno::Reference< css::ui::XUIElement > xUIElement =
xLayoutManager->getElement("private:resource/toolbar/findbar");
if (!xUIElement.is())
- return nullptr;
+ return;
css::uno::Reference< css::awt::XWindow > xWindow(
xUIElement->getRealInterface(), css::uno::UNO_QUERY_THROW);
VclPtr< ToolBox > pToolBox = static_cast<ToolBox*>( VCLUnoHelper::GetWindow(xWindow).get() );
@@ -2385,9 +2385,19 @@ static vcl::Window* lcl_GetSearchLabelWindow()
{
sal_uInt16 id = pToolBox->GetItemId(i);
if (pToolBox->GetItemCommand(id) == ".uno:SearchLabel")
- return pToolBox->GetItemWindow(id);
+ {
+ vcl::Window* pSearchLabel = pToolBox->GetItemWindow(id);
+ assert(pSearchLabel);
+ pSearchLabel->Hide();
+ pSearchLabel->SetText(rStr);
+ if (!rStr.isEmpty())
+ {
+ pSearchLabel->SetSizePixel(pSearchLabel->get_preferred_size());
+ pSearchLabel->Show();
+ }
+ }
}
- return nullptr;
+ pToolBox->Resize();
}
void SvxSearchDialogWrapper::SetSearchLabel(const SearchLabel& rSL)
@@ -2402,16 +2412,7 @@ void SvxSearchDialogWrapper::SetSearchLabel(const SearchLabel& rSL)
else if (rSL == SearchLabel::NotFound)
sStr = SvxResId(RID_SVXSTR_SEARCH_NOT_FOUND);
- if (vcl::Window *pSearchLabel = lcl_GetSearchLabelWindow())
- {
- if (sStr.isEmpty())
- pSearchLabel->Hide();
- else
- {
- pSearchLabel->SetText(sStr);
- pSearchLabel->Show();
- }
- }
+ lcl_SetSearchLabelWindow(sStr);
if (SvxSearchDialogWrapper *pWrp = static_cast<SvxSearchDialogWrapper*>( SfxViewFrame::Current()->
GetChildWindow( SvxSearchDialogWrapper::GetChildWindowId() )))
pWrp->getDialog()->SetSearchLabel(sStr);
@@ -2420,16 +2421,7 @@ void SvxSearchDialogWrapper::SetSearchLabel(const SearchLabel& rSL)
void SvxSearchDialogWrapper::SetSearchLabel(const OUString& sStr)
{
- if (vcl::Window *pSearchLabel = lcl_GetSearchLabelWindow())
- {
- if (sStr.isEmpty())
- pSearchLabel->Hide();
- else
- {
- pSearchLabel->SetText(sStr);
- pSearchLabel->Show();
- }
- }
+ lcl_SetSearchLabelWindow(sStr);
if (SvxSearchDialogWrapper *pWrp = static_cast<SvxSearchDialogWrapper*>( SfxViewFrame::Current()->
GetChildWindow( SvxSearchDialogWrapper::GetChildWindowId() )))
pWrp->getDialog()->SetSearchLabel(sStr);