[ooo-build-commit] .: patches/dev300
Jan Holesovsky
kendy at kemper.freedesktop.org
Wed May 5 05:30:08 PDT 2010
patches/dev300/apply | 3
patches/dev300/toolbar-decorations-fix-new-table.diff | 643 ++++++++++++++++++
2 files changed, 646 insertions(+)
New commits:
commit 3b5d8aa7d707cf2a00388a0b794c6a92d6423817
Author: Jan Holesovsky <kendy at suse.cz>
Date: Wed May 5 14:28:45 2010 +0200
'New Table' toolbar widget rework.
* patches/dev300/apply:
* patches/dev300/toolbar-decorations-fix-new-table.diff: New.
diff --git a/patches/dev300/apply b/patches/dev300/apply
index d85e18f..d21bd80 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -3852,6 +3852,9 @@ SectionOwner => cbosdo
toolbar-decorations-fix.diff
+# 'New table' toolbar widget rework
+toolbar-decorations-fix-new-table.diff, jholesov
+
[ BorderTypes]
SectionOwner => cbosdo
diff --git a/patches/dev300/toolbar-decorations-fix-new-table.diff b/patches/dev300/toolbar-decorations-fix-new-table.diff
new file mode 100644
index 0000000..1e02b7f
--- /dev/null
+++ b/patches/dev300/toolbar-decorations-fix-new-table.diff
@@ -0,0 +1,643 @@
+diff --git svx/source/tbxctrls/layctrl.cxx svx/source/tbxctrls/layctrl.cxx
+index 27b8bfd..956a768 100644
+--- svx/source/tbxctrls/layctrl.cxx
++++ svx/source/tbxctrls/layctrl.cxx
+@@ -32,9 +32,7 @@
+
+ #include <string> // HACK: prevent conflict between STLPORT and Workshop headers
+ #include <vcl/toolbox.hxx>
+-#ifndef _SV_BUTTON_HXX //autogen
+ #include <vcl/button.hxx>
+-#endif
+ #include <svtools/intitem.hxx>
+ #include <sfx2/dispatch.hxx>
+ #include <sfx2/app.hxx>
+@@ -56,27 +54,36 @@ SFX_IMPL_TOOLBOX_CONTROL(SvxColumnsToolBoxControl,SfxUInt16Item);
+
+ // class TableWindow -----------------------------------------------------
+
++const long TABLE_CELL_WIDTH = 15;
++const long TABLE_CELL_HEIGHT = 15;
++
++const long TABLE_CELLS_HORIZ = 10;
++const long TABLE_CELLS_VERT = 15;
++
++const long TABLE_POS_X = 2;
++const long TABLE_POS_Y = 18;
++
++const long TABLE_WIDTH = TABLE_POS_X + TABLE_CELLS_HORIZ*TABLE_CELL_WIDTH;
++const long TABLE_HEIGHT = TABLE_POS_Y + TABLE_CELLS_VERT*TABLE_CELL_HEIGHT;
++
+ class TableWindow : public SfxPopupWindow
+ {
+ private:
++ FixedText* aTitleTxt;
++ PushButton* aTableButton;
+ ::Color aLineColor;
+- ::Color aHighlightLineColor;
+ ::Color aFillColor;
+ ::Color aHighlightFillColor;
++ ::Color aBackgroundColor;
+ long nCol;
+ long nLine;
+- long nWidth;
+- long nHeight;
+- long nMX;
+- long nMY;
+- long nTextHeight;
+ BOOL bInitialKeyInput;
+ BOOL m_bMod1;
+ ToolBox& rTbx;
+ Reference< XFrame > mxFrame;
+ rtl::OUString maCommand;
+
+- void UpdateSize_Impl( long nNewCol, long nNewLine);
++ DECL_LINK( SelectHdl, void * );
+
+ public:
+ TableWindow( USHORT nSlotId,
+@@ -87,20 +94,31 @@ public:
+
+ void KeyInput( const KeyEvent& rKEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+- virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void Paint( const Rectangle& );
+- virtual void PopupModeEnd();
+ virtual SfxPopupWindow* Clone() const;
+
+- USHORT GetColCount() const { return (USHORT)nCol; }
+- USHORT GetLineCount() const { return (USHORT)nLine; }
++private:
++ void Update( long nNewCol, long nNewLine );
++ void TableDialog( const Sequence< PropertyValue >& rArgs );
++ void CloseAndCreateTable( bool bSucess );
++ void CloseAndShowTableDialog();
+ };
+
+ // -----------------------------------------------------------------------
+
++IMPL_LINK( TableWindow, SelectHdl, void *, EMPTYARG )
++{
++ CloseAndShowTableDialog();
++ return NULL;
++}
++
++// -----------------------------------------------------------------------
++
+ TableWindow::TableWindow( USHORT nSlotId, const rtl::OUString& rCmd, ToolBox& rParentTbx, const Reference< XFrame >& rFrame ) :
+ SfxPopupWindow( nSlotId, rFrame, WB_SYSTEMWINDOW ),
++ nCol( 0 ),
++ nLine( 0 ),
+ bInitialKeyInput(TRUE),
+ m_bMod1(FALSE),
+ rTbx(rParentTbx),
+@@ -109,33 +127,45 @@ TableWindow::TableWindow( USHORT nSlotId, const rtl::OUString& rCmd, ToolBox& rP
+ {
+ const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings();
+ svtools::ColorConfig aColorConfig;
+- aLineColor = ::Color( aColorConfig.GetColorValue( svtools::FONTCOLOR ).nColor );
+- aHighlightLineColor = rStyles.GetHighlightTextColor();
++
++ aLineColor = rStyles.GetShadowColor();
+ aFillColor = rStyles.GetWindowColor();
+ aHighlightFillColor = rStyles.GetHighlightColor();
++ aBackgroundColor = GetSettings().GetStyleSettings().GetFaceColor();
+
+- nTextHeight = GetTextHeight()+1;
+- SetBackground();
++ SetBackground( aBackgroundColor );
+ Font aFont = GetFont();
+- aFont.SetColor( aLineColor );
+- aFont.SetFillColor( aFillColor );
++ aFont.SetColor( ::Color( aColorConfig.GetColorValue( svtools::FONTCOLOR ).nColor ) );
++ aFont.SetFillColor( aBackgroundColor );
+ aFont.SetTransparent( FALSE );
+ SetFont( aFont );
+
+- nCol = 0;
+- nLine = 0;
+- nWidth = 5;
+- nHeight = 5;
+-
+- Size aLogicSize = LogicToPixel( Size( 55, 35 ), MapMode( MAP_10TH_MM ) );
+- nMX = aLogicSize.Width();
+- nMY = aLogicSize.Height();
+- SetOutputSizePixel( Size( nMX*nWidth-1, nMY*nHeight-1+nTextHeight ) );
++ aTitleTxt = new FixedText( this );
++ aTitleTxt->SetPosPixel( Point( 2, 2 ) );
++ aTitleTxt->SetSizePixel( Size( 106, 15 ) );
++ aTitleTxt->SetText( String( SVX_RESSTR( RID_SVXSTR_TABLE ) ) );
++ aFont = aTitleTxt->GetFont();
++ aFont.SetWeight( WEIGHT_BOLD );
++ aTitleTxt->SetFont( aFont );
++ aTitleTxt->SetBackground( GetBackground() );
++ aTitleTxt->Show();
++
++ aTableButton = new PushButton( this );
++ aTableButton->SetPosPixel( Point( TABLE_POS_X + TABLE_CELL_WIDTH, TABLE_HEIGHT + 5 ) );
++ aTableButton->SetSizePixel( Size( TABLE_WIDTH - TABLE_POS_X - 2*TABLE_CELL_WIDTH, 24 ) );
++ aTableButton->SetText( String( SVX_RESSTR( RID_SVXSTR_MORE ) ) );
++ aTableButton->SetClickHdl( LINK( this, TableWindow, SelectHdl ) );
++ aTableButton->Show();
++
++ SetOutputSizePixel( Size( TABLE_WIDTH + 3, TABLE_HEIGHT + 33 ) );
+ }
++
+ // -----------------------------------------------------------------------
++
+ TableWindow::~TableWindow()
+ {
+ }
++
+ // -----------------------------------------------------------------------
+
+ SfxPopupWindow* TableWindow::Clone() const
+@@ -151,164 +181,64 @@ void TableWindow::MouseMove( const MouseEvent& rMEvt )
+ Point aPos = rMEvt.GetPosPixel();
+ Point aMousePos( aPos );
+
+- if ( rMEvt.IsEnterWindow() )
+- CaptureMouse();
+- else if ( aMousePos.X() < 0 || aMousePos.Y() < 0 )
+- {
+- nCol = 0;
+- nLine = 0;
+- ReleaseMouse();
+- Invalidate();
+- return;
+- }
+-
+- long nNewCol = 0;
+- long nNewLine = 0;
+-
+- if ( aPos.X() > 0 )
+- nNewCol = aPos.X() / nMX + 1;
+- if ( aPos.Y() > 0 )
+- nNewLine = aPos.Y() / nMY + 1;
+-
+- if ( nNewCol > 500 )
+- nNewCol = 500;
+- if ( nNewLine > 1000 )
+- nNewLine = 1000;
+-
+- UpdateSize_Impl( nNewCol, nNewLine);
++ long nNewCol = ( aMousePos.X() - TABLE_POS_X + TABLE_CELL_WIDTH ) / TABLE_CELL_WIDTH;
++ long nNewLine = ( aMousePos.Y() - TABLE_POS_Y + TABLE_CELL_HEIGHT ) / TABLE_CELL_HEIGHT;
+
++ Update( nNewCol, nNewLine );
+ }
+-/* -----------------------------15.05.2002 17:14------------------------------
+-
+- ---------------------------------------------------------------------------*/
+-void TableWindow::UpdateSize_Impl( long nNewCol, long nNewLine)
+-{
+- Size aWinSize = GetOutputSizePixel();
+- Point aWinPos = GetPosPixel();
+- Point aMaxPos = OutputToScreenPixel( GetDesktopRectPixel().BottomRight() );
+- if ( (nWidth <= nNewCol) || (nHeight < nNewLine) )
+- {
+- long nOff = 0;
+-
+- if ( nWidth <= nNewCol )
+- {
+- nWidth = nNewCol;
+- nWidth++;
+- }
+- if ( nHeight <= nNewLine )
+- {
+- nHeight = nNewLine;
+- nOff = 1;
+- }
+- while ( nWidth > 0 &&
+- (short)(aWinPos.X()+(nMX*nWidth-1)) >= aMaxPos.X()-3 )
+- nWidth--;
+-
+- while ( nHeight > 0 &&
+- (short)(aWinPos.Y()+(nMY*nHeight-1+nTextHeight)) >=
+- aMaxPos.Y()-3 )
+- nHeight--;
+-
+- if ( nNewCol > nWidth )
+- nNewCol = nWidth;
+-
+- if ( nNewLine > nHeight )
+- nNewLine = nHeight;
+-
+- Size _aWinSize = GetOutputSizePixel();
+- Invalidate( Rectangle( 0, _aWinSize.Height()-nTextHeight+2-nOff,
+- _aWinSize.Width(), _aWinSize.Height() ) );
+- SetOutputSizePixel( Size( nMX*nWidth-1, nMY*nHeight-1+nTextHeight ) );
+- }
+- long nMinCol = 0;
+- long nMaxCol = 0;
+- long nMinLine = 0;
+- long nMaxLine = 0;
+- if ( nNewCol < nCol )
+- {
+- nMinCol = nNewCol;
+- nMaxCol = nCol;
+- }
+- else
+- {
+- nMinCol = nCol;
+- nMaxCol = nNewCol;
+- }
+- if ( nNewLine < nLine )
+- {
+- nMinLine = nNewLine;
+- nMaxLine = nLine;
+- }
+- else
+- {
+- nMinLine = nLine;
+- nMaxLine = nNewLine;
+- }
+-
+- if ( (nNewCol != nCol) || (nNewLine != nLine) )
+- {
+- Invalidate( Rectangle( 0, aWinSize.Height()-nTextHeight+2,
+- aWinSize.Width(), aWinSize.Height() ) );
+
+- if ( nNewCol != nCol )
+- {
+- Invalidate( Rectangle( nMinCol*nMX-1, 0, nMaxCol*nMX+1, nMaxLine*nMY ) );
+- nCol = nNewCol;
+- }
+- if ( nNewLine != nLine )
+- {
+- Invalidate( Rectangle( 0, nMinLine*nMY-2, nMaxCol*nMX, nMaxLine*nMY+1 ) );
+- nLine = nNewLine;
+- }
+- }
+- Update();
+-}
+-/* -----------------------------15.05.2002 14:22------------------------------
++// -----------------------------------------------------------------------
+
+- ---------------------------------------------------------------------------*/
+ void TableWindow::KeyInput( const KeyEvent& rKEvt )
+ {
+- BOOL bHandled = FALSE;
++ bool bHandled = false;
+ USHORT nModifier = rKEvt.GetKeyCode().GetModifier();
+ USHORT nKey = rKEvt.GetKeyCode().GetCode();
+- if(!nModifier)
++ if ( !nModifier )
+ {
+- if( KEY_UP == nKey || KEY_DOWN == nKey ||
+- KEY_LEFT == nKey || KEY_RIGHT == nKey ||
+- KEY_ESCAPE == nKey ||KEY_RETURN == nKey )
++ bHandled = true;
++ long nNewCol = nCol;
++ long nNewLine = nLine;
++ switch(nKey)
+ {
+- bHandled = TRUE;
+- long nNewCol = nCol;
+- long nNewLine = nLine;
+- switch(nKey)
+- {
+- case KEY_UP :
+- if(nNewLine > 1)
+- {
+- nNewLine--;
+- break;
+- }
+- //no break;
+- case KEY_ESCAPE:
+- EndPopupMode( FLOATWIN_POPUPMODEEND_CANCEL);
++ case KEY_UP:
++ if ( nNewLine > 1 )
++ nNewLine--;
++ else
++ CloseAndCreateTable( false );
+ break;
+- case KEY_DOWN :
++ case KEY_DOWN:
++ if ( nNewLine < TABLE_CELLS_VERT )
+ nNewLine++;
++ else
++ CloseAndShowTableDialog();
+ break;
+- case KEY_LEFT :
+-
+- if(nNewCol)
+- nNewCol--;
++ case KEY_LEFT:
++ if ( nNewCol > 1 )
++ nNewCol--;
++ else
++ CloseAndCreateTable( false );
+ break;
+- case KEY_RIGHT :
++ case KEY_RIGHT:
++ if ( nNewCol < TABLE_CELLS_HORIZ )
+ nNewCol++;
++ else
++ CloseAndShowTableDialog();
+ break;
+- case KEY_RETURN :
+- if(IsMouseCaptured())
+- ReleaseMouse();
+- EndPopupMode(FLOATWIN_POPUPMODEEND_CLOSEALL );
++ case KEY_ESCAPE:
++ CloseAndCreateTable( false );
+ break;
+- }
++ case KEY_RETURN:
++ CloseAndCreateTable( true );
++ break;
++ case KEY_TAB:
++ CloseAndShowTableDialog();
++ break;
++ default:
++ bHandled = false;
++ }
++ if ( bHandled )
++ {
+ //make sure that a table can initially be created
+ if(bInitialKeyInput)
+ {
+@@ -318,27 +248,17 @@ void TableWindow::KeyInput( const KeyEvent& rKEvt )
+ if(!nNewCol)
+ nNewCol = 1;
+ }
+- UpdateSize_Impl( nNewCol, nNewLine);
++ Update( nNewCol, nNewLine );
+ }
+ }
+ else if(KEY_MOD1 == nModifier && KEY_RETURN == nKey)
+ {
+ m_bMod1 = TRUE;
+- if(IsMouseCaptured())
+- ReleaseMouse();
+- EndPopupMode(FLOATWIN_POPUPMODEEND_CLOSEALL );
++ CloseAndCreateTable( true );
+ }
+
+ if(!bHandled)
+ SfxPopupWindow::KeyInput(rKEvt);
+-
+-}
+-// -----------------------------------------------------------------------
+-
+-void TableWindow::MouseButtonDown( const MouseEvent& rMEvt )
+-{
+- SfxPopupWindow::MouseButtonDown( rMEvt );
+- CaptureMouse();
+ }
+
+ // -----------------------------------------------------------------------
+@@ -346,56 +266,45 @@ void TableWindow::MouseButtonDown( const MouseEvent& rMEvt )
+ void TableWindow::MouseButtonUp( const MouseEvent& rMEvt )
+ {
+ SfxPopupWindow::MouseButtonUp( rMEvt );
+- ReleaseMouse();
+-
+- if ( IsInPopupMode() )
+- EndPopupMode( FLOATWIN_POPUPMODEEND_CLOSEALL );
++ CloseAndCreateTable( true );
+ }
+
+ // -----------------------------------------------------------------------
+
+ void TableWindow::Paint( const Rectangle& )
+ {
+- long i;
+- long nStart;
+- Size aSize = GetOutputSizePixel();
++ const long nSelectionWidth = TABLE_POS_X + nCol*TABLE_CELL_WIDTH;
++ const long nSelectionHeight = TABLE_POS_Y + nLine*TABLE_CELL_HEIGHT;
+
+- SetLineColor();
+- SetFillColor( aHighlightFillColor );
+- DrawRect( Rectangle( 0, 0, nCol*nMX-1, nLine*nMY-1 ) );
+- SetFillColor( aFillColor );
+- DrawRect( Rectangle( nCol*nMX-1, 0,
+- aSize.Width(), aSize.Height()-nTextHeight+1 ) );
+- DrawRect( Rectangle( 0, nLine*nMY-1,
+- aSize.Width(), aSize.Height()-nTextHeight+1 ) );
+-
+- SetLineColor( aHighlightLineColor );
+- for ( i = 1; i < nCol; i++ )
+- DrawLine( Point( i*nMX-1, 0 ), Point( i*nMX-1, nLine*nMY-1 ) );
+- for ( i = 1; i < nLine; i++ )
+- DrawLine( Point( 0, i*nMY-1 ), Point( nCol*nMX-1, i*nMY-1 ) );
++ // the non-selected parts of the table
+ SetLineColor( aLineColor );
+- for ( i = 1; i <= nWidth; i++ )
+- {
+- if ( i < nCol )
+- nStart = nLine*nMY-1;
+- else
+- nStart = 0;
+- DrawLine( Point( i*nMX-1, nStart ), Point( i*nMX-1, nHeight*nMY-1 ) );
+- }
+- for ( i = 1; i <= nHeight; i++ )
++ SetFillColor( aFillColor );
++ DrawRect( Rectangle( nSelectionWidth, TABLE_POS_Y, TABLE_WIDTH, nSelectionHeight ) );
++ DrawRect( Rectangle( TABLE_POS_X, nSelectionHeight, nSelectionWidth, TABLE_HEIGHT ) );
++ DrawRect( Rectangle( nSelectionWidth, nSelectionHeight, TABLE_WIDTH, TABLE_HEIGHT ) );
++
++ // the selection
++ if ( nCol > 0 && nLine > 0 )
+ {
+- if ( i < nLine )
+- nStart = nCol*nMX-1;
+- else
+- nStart = 0;
+- DrawLine( Point( nStart, i*nMY-1 ), Point( nWidth*nMX-1, i*nMY-1 ) );
++ SetFillColor( aHighlightFillColor );
++ DrawRect( Rectangle( TABLE_POS_X, TABLE_POS_Y,
++ nSelectionWidth, nSelectionHeight ) );
+ }
+
+- SetLineColor();
+- String aText;
++ // lines inside of the table
++ SetLineColor( aLineColor );
++ for ( long i = 1; i < TABLE_CELLS_VERT; ++i )
++ DrawLine( Point( TABLE_POS_X, TABLE_POS_Y + i*TABLE_CELL_HEIGHT ),
++ Point( TABLE_WIDTH, TABLE_POS_Y + i*TABLE_CELL_HEIGHT ) );
++
++ for ( long i = 1; i < TABLE_CELLS_HORIZ; ++i )
++ DrawLine( Point( TABLE_POS_X + i*TABLE_CELL_WIDTH, TABLE_POS_Y ),
++ Point( TABLE_POS_X + i*TABLE_CELL_WIDTH, TABLE_HEIGHT ) );
++
++ // the text near the mouse cursor telling the table dimensions
+ if ( nCol && nLine )
+ {
++ String aText;
+ aText += String::CreateFromInt32( nCol );
+ aText.AppendAscii( " x " );
+ aText += String::CreateFromInt32( nLine );
+@@ -405,61 +314,107 @@ void TableWindow::Paint( const Rectangle& )
+ aText += String(SVX_RESSTR(RID_SVXSTR_PAGES));
+ }
+
++ Size aSize = GetOutputSizePixel();
++ Size aTextSize( GetTextWidth( aText ), GetTextHeight() );
++
++ long nTextX = nSelectionWidth + TABLE_CELL_WIDTH;
++ long nTextY = nSelectionHeight + TABLE_CELL_HEIGHT;
++ const long nTipBorder = 2;
++
++ if ( aTextSize.Width() + TABLE_POS_X + TABLE_CELL_WIDTH + 2*nTipBorder < nSelectionWidth )
++ nTextX = nSelectionWidth - TABLE_CELL_WIDTH - aTextSize.Width();
++
++ if ( aTextSize.Height() + TABLE_POS_Y + TABLE_CELL_HEIGHT + 2*nTipBorder < nSelectionHeight )
++ nTextY = nSelectionHeight - TABLE_CELL_HEIGHT - aTextSize.Height();
++
++ SetLineColor( aLineColor );
++ SetFillColor( aBackgroundColor );
++ DrawRect( Rectangle ( nTextX - 2*nTipBorder, nTextY - 2*nTipBorder,
++ nTextX + aTextSize.Width() + nTipBorder, nTextY + aTextSize.Height() + nTipBorder ) );
++
++ // #i95350# force RTL output
++ if ( IsRTLEnabled() )
++ aText.Insert( 0x202D, 0 );
++
++ DrawText( Point( nTextX, nTextY ), aText );
+ }
+- else
+- aText = Button::GetStandardText( BUTTON_CANCEL );
+- Size aTextSize( GetTextWidth( aText ), GetTextHeight() );
++}
+
+- Rectangle aClearRect( 0, aSize.Height()-nTextHeight+2, (aSize.Width()), aSize.Height() );
+- DrawRect( aClearRect );
++// -----------------------------------------------------------------------
++
++void TableWindow::Update( long nNewCol, long nNewLine )
++{
++ if ( nNewCol < 0 || nNewCol > TABLE_CELLS_HORIZ )
++ nNewCol = 0;
+
+- // #i95350# force RTL output
+- if( IsRTLEnabled() && nCol && nLine )
+- aText.Insert(0x202D, 0);
+- DrawText( Point( (aSize.Width() - aTextSize.Width()) / 2, aSize.Height() - nTextHeight + 2 ), aText );
++ if ( nNewLine < 0 || nNewLine > TABLE_CELLS_VERT )
++ nNewLine = 0;
+
+- SetLineColor( aLineColor );
+- SetFillColor();
+- DrawRect( Rectangle( Point(0,0), aSize ) );
++ if ( nNewCol != nCol || nNewLine != nLine )
++ {
++ nCol = nNewCol;
++ nLine = nNewLine;
++ Invalidate( Rectangle( TABLE_POS_X, TABLE_POS_Y, TABLE_WIDTH, TABLE_HEIGHT ) );
++ }
+ }
+
+ // -----------------------------------------------------------------------
+
+-void TableWindow::PopupModeEnd()
++void TableWindow::TableDialog( const Sequence< PropertyValue >& rArgs )
+ {
+- if ( !IsPopupModeCanceled() && nCol && nLine )
++ Window* pParent = rTbx.GetParent();
++ USHORT nId = GetId();
++ pParent->UserEvent(SVX_EVENT_COLUM_WINDOW_EXECUTE, reinterpret_cast<void*>(nId));
++
++ Reference< XDispatchProvider > xDispatchProvider( mxFrame, UNO_QUERY );
++ if ( xDispatchProvider.is() )
+ {
+- Window* pParent = rTbx.GetParent();
+- USHORT nId = GetId();
+- pParent->UserEvent(SVX_EVENT_COLUM_WINDOW_EXECUTE, reinterpret_cast<void*>(nId));
++ com::sun::star::util::URL aTargetURL;
++ Reference < XURLTransformer > xTrans( ::comphelper::getProcessServiceFactory()->createInstance(
++ rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer" )),
++ UNO_QUERY );
++ aTargetURL.Complete = maCommand;
++ xTrans->parseStrict( aTargetURL );
++
++ Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( aTargetURL, rtl::OUString(), 0 );
++ if ( xDispatch.is() )
++ xDispatch->dispatch( aTargetURL, rArgs );
++ }
++}
+
+- Reference< XDispatchProvider > xDispatchProvider( mxFrame, UNO_QUERY );
+- if ( xDispatchProvider.is() )
+- {
+- com::sun::star::util::URL aTargetURL;
+- Reference < XURLTransformer > xTrans( ::comphelper::getProcessServiceFactory()->createInstance(
+- rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer" )),
+- UNO_QUERY );
+- aTargetURL.Complete = maCommand;
+- xTrans->parseStrict( aTargetURL );
+- Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( aTargetURL, rtl::OUString(), 0 );
+- if ( xDispatch.is() )
+- {
+- Sequence< PropertyValue > aArgs( 2 );
+- aArgs[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Columns" ));
+- aArgs[0].Value = makeAny( sal_Int16( nCol ));
+- aArgs[1].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Rows" ));
+- aArgs[1].Value = makeAny( sal_Int16( nLine ));
++// -----------------------------------------------------------------------
+
+- xDispatch->dispatch( aTargetURL, aArgs );
+- }
+- }
++void TableWindow::CloseAndCreateTable( bool bCreate )
++{
++ if ( !GetDockingManager()->IsInPopupMode( this ) )
++ return;
++
++ if ( bCreate && nCol && nLine )
++ {
++ Sequence< PropertyValue > aArgs( 2 );
++ aArgs[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Columns" ));
++ aArgs[0].Value = makeAny( sal_Int16( nCol ));
++ aArgs[1].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Rows" ));
++ aArgs[1].Value = makeAny( sal_Int16( nLine ));
++
++ TableDialog( aArgs );
+ }
+- else if ( IsPopupModeCanceled() )
+- ReleaseMouse();
+- SfxPopupWindow::PopupModeEnd();
++
++ GetDockingManager()->EndPopupMode( this );
++ doLazyDelete();
+ }
+
++// -----------------------------------------------------------------------
++
++void TableWindow::CloseAndShowTableDialog()
++{
++ // close the toolbar tool
++ CloseAndCreateTable( false );
++
++ // and open the table dialog instead
++ TableDialog( Sequence< PropertyValue >() );
++}
++
+ // class ColumnsWindow ---------------------------------------------------
+
+ class ColumnsWindow : public SfxPopupWindow
+@@ -735,7 +690,8 @@ void ColumnsWindow::Paint( const Rectangle& )
+ if ( nCol )
+ aText = String( String::CreateFromInt32(nCol) );
+ else
+- aText = Button::GetStandardText( BUTTON_CANCEL );
++ aText = Button::GetStandardText( BUTTON_CANCEL ).EraseAllChars( '~' );
++
+ Size aTextSize(GetTextWidth( aText ), GetTextHeight());
+ DrawText( Point( ( aSize.Width() - aTextSize.Width() ) / 2, aSize.Height() - nTextHeight + 2 ), aText );
+
+@@ -803,8 +759,8 @@ SfxPopupWindow* SvxTableToolBoxControl::CreatePopupWindow()
+ {
+ ToolBox& rTbx = GetToolBox();
+ TableWindow* pWin = new TableWindow( GetSlotId(), m_aCommandURL, rTbx, m_xFrame );
+- pWin->StartPopupMode( &rTbx, FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_NOKEYCLOSE );
+- SetPopupWindow( pWin );
++ pWin->EnableDocking(true);
++ pWin->GetDockingManager()->StartPopupMode(&GetToolBox(),pWin);
+ return pWin;
+ }
+ return 0;
More information about the ooo-build-commit
mailing list