summaryrefslogtreecommitdiff
path: root/svtools/source/edit
diff options
context:
space:
mode:
Diffstat (limited to 'svtools/source/edit')
-rw-r--r--svtools/source/edit/editsyntaxhighlighter.cxx14
-rw-r--r--svtools/source/edit/svmedit.cxx80
2 files changed, 55 insertions, 39 deletions
diff --git a/svtools/source/edit/editsyntaxhighlighter.cxx b/svtools/source/edit/editsyntaxhighlighter.cxx
index 74d72e32155c..990e3041d903 100644
--- a/svtools/source/edit/editsyntaxhighlighter.cxx
+++ b/svtools/source/edit/editsyntaxhighlighter.cxx
@@ -29,14 +29,14 @@
************************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svtools.hxx"
-
+#include "precompiled_svtools.hxx"
+
#include <svtools/svmedit.hxx>
-#include <svtools/xtextedt.hxx>
-#include <svtools/editsyntaxhighlighter.hxx>
-#include "../../inc/txtattr.hxx"
-
-
+#include <svtools/xtextedt.hxx>
+#include <svtools/editsyntaxhighlighter.hxx>
+#include "../../inc/txtattr.hxx"
+
+
MultiLineEditSyntaxHighlight::MultiLineEditSyntaxHighlight( Window* pParent, WinBits nWinStyle,
HighlighterLanguage aLanguage): MultiLineEdit(pParent,nWinStyle), mbDoBracketHilight(true)
{
diff --git a/svtools/source/edit/svmedit.cxx b/svtools/source/edit/svmedit.cxx
index 279af7c83cef..135761195e48 100644
--- a/svtools/source/edit/svmedit.cxx
+++ b/svtools/source/edit/svmedit.cxx
@@ -452,46 +452,62 @@ String ImpSvMEdit::GetSelected( LineEnd aSeparator ) const
void ImpSvMEdit::Resize()
{
- WinBits nWinStyle( pSvMultiLineEdit->GetStyle() );
- if ( ( nWinStyle & WB_AUTOVSCROLL ) == WB_AUTOVSCROLL )
- ImpUpdateSrollBarVis( nWinStyle );
-
- Size aSz = pSvMultiLineEdit->GetOutputSizePixel();
- Size aEditSize = aSz;
- long nSBWidth = pSvMultiLineEdit->GetSettings().GetStyleSettings().GetScrollBarSize();
- nSBWidth = pSvMultiLineEdit->CalcZoom( nSBWidth );
-
- if ( mpHScrollBar )
- aSz.Height() -= nSBWidth+1;
- if ( mpVScrollBar )
- aSz.Width() -= nSBWidth+1;
+ size_t nIteration = 1;
+ do
+ {
+ WinBits nWinStyle( pSvMultiLineEdit->GetStyle() );
+ if ( ( nWinStyle & WB_AUTOVSCROLL ) == WB_AUTOVSCROLL )
+ ImpUpdateSrollBarVis( nWinStyle );
- Size aTextWindowSz( aSz );
- aTextWindowSz.Width() -= maTextWindowOffset.X();
- aTextWindowSz.Height() -= maTextWindowOffset.Y();
- Point aTextWindowPos( maTextWindowOffset );
+ Size aSz = pSvMultiLineEdit->GetOutputSizePixel();
+ Size aEditSize = aSz;
+ long nSBWidth = pSvMultiLineEdit->GetSettings().GetStyleSettings().GetScrollBarSize();
+ nSBWidth = pSvMultiLineEdit->CalcZoom( nSBWidth );
- if ( !mpHScrollBar )
- mpTextWindow->GetTextEngine()->SetMaxTextWidth( aSz.Width() );
+ if ( mpHScrollBar )
+ aSz.Height() -= nSBWidth+1;
+ if ( mpVScrollBar )
+ aSz.Width() -= nSBWidth+1;
- if ( mpHScrollBar )
- mpHScrollBar->SetPosSizePixel( 0, aEditSize.Height()-nSBWidth, aSz.Width(), nSBWidth );
+ if ( !mpHScrollBar )
+ mpTextWindow->GetTextEngine()->SetMaxTextWidth( aSz.Width() );
+ else
+ mpHScrollBar->SetPosSizePixel( 0, aEditSize.Height()-nSBWidth, aSz.Width(), nSBWidth );
- if ( mpVScrollBar )
- {
- if( Application::GetSettings().GetLayoutRTL() )
+ Point aTextWindowPos( maTextWindowOffset );
+ if ( mpVScrollBar )
{
- mpVScrollBar->SetPosSizePixel( 0, 0, nSBWidth, aSz.Height() );
- aTextWindowPos.X() += nSBWidth;
+ if( Application::GetSettings().GetLayoutRTL() )
+ {
+ mpVScrollBar->SetPosSizePixel( 0, 0, nSBWidth, aSz.Height() );
+ aTextWindowPos.X() += nSBWidth;
+ }
+ else
+ mpVScrollBar->SetPosSizePixel( aEditSize.Width()-nSBWidth, 0, nSBWidth, aSz.Height() );
}
- else
- mpVScrollBar->SetPosSizePixel( aEditSize.Width()-nSBWidth, 0, nSBWidth, aSz.Height() );
- }
- mpTextWindow->SetPosSizePixel( aTextWindowPos, aTextWindowSz );
+ if ( mpScrollBox )
+ mpScrollBox->SetPosSizePixel( aSz.Width(), aSz.Height(), nSBWidth, nSBWidth );
+
+ Size aTextWindowSize( aSz );
+ aTextWindowSize.Width() -= maTextWindowOffset.X();
+ aTextWindowSize.Height() -= maTextWindowOffset.Y();
+ if ( aTextWindowSize.Width() < 0 )
+ aTextWindowSize.Width() = 0;
+ if ( aTextWindowSize.Height() < 0 )
+ aTextWindowSize.Height() = 0;
+
+ Size aOldTextWindowSize( mpTextWindow->GetSizePixel() );
+ mpTextWindow->SetPosSizePixel( aTextWindowPos, aTextWindowSize );
+ if ( aOldTextWindowSize == aTextWindowSize )
+ break;
+
+ // Changing the text window size might effectively have changed the need for
+ // scrollbars, so do another iteration.
+ ++nIteration;
+ OSL_ENSURE( nIteration < 3, "ImpSvMEdit::Resize: isn't this expected to terminate with the second iteration?" );
- if ( mpScrollBox )
- mpScrollBox->SetPosSizePixel( aSz.Width(), aSz.Height(), nSBWidth, nSBWidth );
+ } while ( nIteration <= 3 ); // artificial break after four iterations
ImpInitScrollBars();
}