Hello There,
I'm posting here the git diff of the work I've done till now.
@Kohei Since I do not want to disturb my master branch I'm here
pasting the diff only. Please create a feature branch and apply it, so
that I can clone that branch and commit on that.
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index a293c22..8019fee 100644
--- a/sc/source/ui/app/inputwin.cxx
+++ b/sc/source/ui/app/inputwin.cxx
@@ -31,6 +31,8 @@
#include <algorithm>
+#include<stdio.h>
+
#include "scitems.hxx"
#include <editeng/eeitem.hxx>
@@ -137,10 +139,11 @@ ScInputWindow::ScInputWindow( Window* pParent,
SfxBindings* pBind ) :
// mit WB_CLIPCHILDREN, sonst Flicker
ToolBox ( pParent,
WinBits(WB_BORDER|WB_3DLOOK|WB_CLIPCHILDREN) ),
aWndPos ( this ),
+// maScrollBar ( this, WB_VERT | WB_DRAG ),
aTextWindow ( this ),
pInputHdl ( NULL ),
pBindings ( pBind ),
- aTextOk ( ScResId( SCSTR_QHELP_BTNOK ) ), // nicht
immer
neu aus Resource
+ aTextOk ( ScResId( SCSTR_QHELP_BTNOK ) ), // not
always
new from Resource
aTextCancel ( ScResId( SCSTR_QHELP_BTNCANCEL ) ),
aTextSum ( ScResId( SCSTR_QHELP_BTNSUM ) ),
aTextEqual ( ScResId( SCSTR_QHELP_BTNEQUAL ) ),
@@ -161,7 +164,7 @@ ScInputWindow::ScInputWindow( Window* pParent,
SfxBindings* pBind ) :
}
DBG_ASSERT( pViewSh, "no view shell for input window" );
- // Positionsfenster, 3 Buttons, Eingabefenster
+ // Position window, 3 buttons, input window
InsertWindow ( 1, &aWndPos, 0,
0 );
InsertSeparator (
1 );
InsertItem ( SID_INPUT_FUNCTION, IMAGE( SID_INPUT_FUNCTION ), 0, 2 );
@@ -169,12 +172,21 @@ ScInputWindow::ScInputWindow( Window* pParent,
SfxBindings* pBind ) :
InsertItem ( SID_INPUT_EQUAL, IMAGE( SID_INPUT_EQUAL ), 0, 4 );
InsertSeparator (
5 );
InsertWindow ( 7, &aTextWindow, 0, 6 );
+// InsertWindow ( 8, &maScrollBar, 0, 8 );
aWndPos .SetQuickHelpText( ScResId( SCSTR_QHELP_POSWND ) );
aWndPos .SetHelpId ( HID_INSWIN_POS );
aTextWindow.SetQuickHelpText( ScResId( SCSTR_QHELP_INPUTWND ) );
aTextWindow.SetHelpId ( HID_INSWIN_INPUT );
+/*
+ maScrollBar.SetPageSize( 1 );
+ maScrollBar.SetVisibleSize( 1 );
+ maScrollBar.SetLineSize( 1 );
+ maScrollBar.SetRange( Range( 0, 1 ) );
+ maScrollBar.SetThumbPos( 10 );
+*/
+
// kein SetHelpText, die Hilfetexte kommen aus der Hilfe
SetItemText ( SID_INPUT_FUNCTION, ScResId( SCSTR_QHELP_BTNCALC ) );
@@ -189,6 +201,7 @@ ScInputWindow::ScInputWindow( Window* pParent,
SfxBindings* pBind ) :
SetHelpId( HID_SC_INPUTWIN ); // fuer die ganze Eingabezeile
aWndPos .Show();
+// maScrollBar .Show();
aTextWindow .Show();
pInputHdl = SC_MOD()->GetInputHdl( pViewSh, false ); // use
own handler even if ref-handler is set
@@ -489,7 +502,11 @@ void ScInputWindow::Resize()
long nLeft = aTextWindow.GetPosPixel().X();
Size aSize = aTextWindow.GetSizePixel();
- aSize.Width() = Max( ((long)(nWidth - nLeft - 5)), (long)0 );
+ aSize.Width() = Max( ((long)(nWidth - nLeft - 40)), (long)0 );
+
+ printf("Inside ScInputWindow:Resize()\n");
+ printf("nWidth %ld nLeft %ld aSize.Width%ld \n",nWidth, nLeft,
aSize.Width());
+
aTextWindow.SetSizePixel( aSize );
aTextWindow.Invalidate();
}
@@ -534,10 +551,15 @@ void ScInputWindow::SetPosString( const String& rStr )
void ScInputWindow::SetTextString( const String& rString )
{
+ int i = rString.Len();
if (rString.Len() <= 32767)
+ {
aTextWindow.SetTextString(rString);
+ printf("%d ScInputWnd:SetTextString(), if \n",i);
+ }
else
{
+ printf("%d ScInputWnd:SetTextString(), else \n",i);
String aNew = rString;
aNew.Erase(32767);
aTextWindow.SetTextString(aNew);
@@ -705,7 +727,7 @@ void ScInputWindow::DataChanged( const
DataChangedEvent& rDCEvt )
}
//========================================================================
-// Eingabefenster
+// Input Window
//========================================================================
ScTextWnd::ScTextWnd( Window* pParent )
@@ -779,6 +801,8 @@ void ScTextWnd::Paint( const Rectangle& rRec )
// LayoutMode isn't changed as long as ModifyRTLDefaults
doesn't include SvxFrameDirectionItem
}
+ printf("ScTextWnd::Paint() nDiff: %ld GOSP height %ld text
height \n",nDiff, GetOutputSizePixel().Height(), LogicToPixel( Size(
0, GetTextHeight() ) ).Height());
+
DrawText( PixelToLogic( Point( nStartPos, nDiff/2 ) ), aString );
}
}
@@ -793,6 +817,8 @@ void ScTextWnd::Resize()
aSize.Width() -= 2 * TEXT_STARTPOS - 1;
+ printf("ScTextWnd:Resize() width %ld \n",aSize.Width());
+
pEditView->SetOutputArea(
PixelToLogic( Rectangle( Point( TEXT_STARTPOS, (nDiff >
0) ? nDiff/2 : 1 ),
aSize ) ) );
@@ -1036,8 +1062,16 @@ void ScTextWnd::StartEditEngine()
pNew->SetExecuteURL( false );
pEditEngine = pNew;
+ Size barSize=GetOutputSizePixel();
+
+ long barHeight=barSize.Height();
+ long textHeight=LogicToPixel( Size( 0, GetTextHeight() ) ).Height();
+ long nDiff = barHeight - textHeight;
+
+ barSize.Height()=nDiff+barHeight;
+ barSize.Width() -= 2*TEXT_STARTPOS-4;
pEditEngine->SetUpdateMode( false );
- pEditEngine->SetPaperSize( Size( bIsRTL ? USHRT_MAX : THESIZE, 300 ) );
+ pEditEngine->SetPaperSize( PixelToLogic(barSize) );
pEditEngine->SetWordDelimiters(
ScEditUtil::ModifyDelimiters(
pEditEngine->GetWordDelimiters() ) );
diff --git a/sc/source/ui/inc/inputwin.hxx b/sc/source/ui/inc/inputwin.hxx
index 6c3785d..338020a 100644
--- a/sc/source/ui/inc/inputwin.hxx
+++ b/sc/source/ui/inc/inputwin.hxx
@@ -34,6 +34,7 @@
#include <sfx2/childwin.hxx>
#include <svl/lstner.hxx>
#include <vcl/combobox.hxx>
+#include <vcl/scrbar.hxx>
#include <vcl/window.hxx>
#include <svtools/transfer.hxx>
@@ -115,7 +116,7 @@ private:
//========================================================================
-class ScPosWnd : public ComboBox, public SfxListener // Positionsanzeige
+class ScPosWnd : public ComboBox, public SfxListener // Position window
{
private:
String aPosStr;
@@ -199,6 +200,7 @@ protected:
private:
ScPosWnd aWndPos;
+// ScrollBar maScrollBar;
ScTextWnd aTextWindow;
ScInputHandler* pInputHdl;
SfxBindings* pBindings;
Thanks and regards.
--
Anurag Jain
Final yr B.Tech CSE
SASTRA University
Thanjavur(T.N.)-613402
Context
- [Libreoffice] [GSOC][PATCH] Multiline inputbar · Anurag Jain
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.