Kaydet (Commit) 5f5171f1 authored tarafından Rüdiger Timm's avatar Rüdiger Timm

INTEGRATION: CWS fwk80_SRC680 (1.29.14); FILE MERGED

2008/01/02 12:24:04 mav 1.29.14.1: #i84941# use the MediaDescriptor only to handle the macro execution
üst a0d2c8cd
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
* *
* $RCSfile: docholder.cxx,v $ * $RCSfile: docholder.cxx,v $
* *
* $Revision: 1.29 $ * $Revision: 1.30 $
* *
* last change: $Author: vg $ $Date: 2007-03-26 14:47:53 $ * last change: $Author: rt $ $Date: 2008-01-29 15:26:03 $
* *
* The Contents of this file are made available subject to * The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1. * the terms of GNU Lesser General Public License Version 2.1.
...@@ -127,6 +127,13 @@ ...@@ -127,6 +127,13 @@
#ifndef _COM_SUN_STAR_EMBED_XVISUALOBJECT_HPP_ #ifndef _COM_SUN_STAR_EMBED_XVISUALOBJECT_HPP_
#include <com/sun/star/embed/XVisualObject.hpp> #include <com/sun/star/embed/XVisualObject.hpp>
#endif #endif
#ifndef _COM_SUN_STAR_DOCUMENT_MACROEXECMODE_HPP_
#include <com/sun/star/document/MacroExecMode.hpp>
#endif
#ifndef _COM_SUN_STAR_TASK_XINTERACTIONHANDLER_HPP_
#include <com/sun/star/task/XInteractionHandler.hpp>
#endif
#ifndef _OSL_DIAGNOSE_H_ #ifndef _OSL_DIAGNOSE_H_
#include <osl/diagnose.h> #include <osl/diagnose.h>
#endif #endif
...@@ -158,6 +165,7 @@ DocumentHolder::DocumentHolder( ...@@ -158,6 +165,7 @@ DocumentHolder::DocumentHolder(
m_nMenuHandle(NULL), m_nMenuHandle(NULL),
m_nMenuShared(NULL), m_nMenuShared(NULL),
m_nOLEMenu(NULL), m_nOLEMenu(NULL),
m_nMacroExecMode( document::MacroExecMode::USE_CONFIG ),
m_bLink( sal_False ) m_bLink( sal_False )
{ {
static const ::rtl::OUString aServiceName ( static const ::rtl::OUString aServiceName (
...@@ -178,6 +186,95 @@ DocumentHolder::~DocumentHolder() ...@@ -178,6 +186,95 @@ DocumentHolder::~DocumentHolder()
} }
void DocumentHolder::LoadDocInFrame( sal_Bool bPluginMode )
{
uno::Reference<frame::XComponentLoader> xComponentLoader(
m_xFrame,uno::UNO_QUERY);
if( xComponentLoader.is() && m_xDocument.is() )
{
uno::Reference< task::XInteractionHandler > xHandler(
m_xFactory->createInstance(
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.task.InteractionHandler" ) ) ),
uno::UNO_QUERY );
uno::Any aAny;
sal_Int32 nLen = 3;
uno::Sequence<beans::PropertyValue> aSeq( nLen );
aAny <<= uno::Reference<uno::XInterface>(
m_xDocument, uno::UNO_QUERY);
aSeq[0] = beans::PropertyValue(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("Model")),
-1,
aAny,
beans::PropertyState_DIRECT_VALUE);
aAny <<= sal_False;
aSeq[1] = beans::PropertyValue(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("ReadOnly")),
-1,
aAny,
beans::PropertyState_DIRECT_VALUE);
aAny <<= (sal_Bool) sal_True;
aSeq[2] = beans::PropertyValue(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("NoAutoSave")),
-1,
aAny,
beans::PropertyState_DIRECT_VALUE);
if ( bPluginMode )
{
aSeq.realloc( ++nLen );
aAny <<= (sal_Int16) 3;
aSeq[nLen-1] = beans::PropertyValue(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("PluginMode")),
-1,
aAny,
beans::PropertyState_DIRECT_VALUE);
}
if ( xHandler.is() )
{
aSeq.realloc( nLen+=2 );
aAny <<= xHandler;
aSeq[nLen-2] = beans::PropertyValue(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("InteractionHandler")),
-1,
aAny,
beans::PropertyState_DIRECT_VALUE);
aAny <<= m_nMacroExecMode;
aSeq[nLen-1] = beans::PropertyValue(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("MacroExecutionMode")),
-1,
aAny,
beans::PropertyState_DIRECT_VALUE);
}
xComponentLoader->loadComponentFromURL(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("private:object")),
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_self")),
0,
aSeq);
uno::Sequence< beans::PropertyValue > aResArgs = m_xDocument->getArgs();
for ( int nInd = 0; nInd < aResArgs.getLength(); nInd++ )
if ( aResArgs[nInd].Name.equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MacroExecutionMode" ) ) ) )
{
aResArgs[nInd].Value >>= m_nMacroExecMode;
break;
}
}
}
void DocumentHolder::OnPosRectChanged(LPRECT lpRect) const void DocumentHolder::OnPosRectChanged(LPRECT lpRect) const
{ {
lpRect->left += m_aBorder.left; lpRect->left += m_aBorder.left;
...@@ -226,6 +323,9 @@ HRESULT DocumentHolder::InPlaceActivate( ...@@ -226,6 +323,9 @@ HRESULT DocumentHolder::InPlaceActivate(
return NOERROR; return NOERROR;
} }
if ( !m_xDocument.is() )
return ERROR;
//1. Initialization, obtaining interfaces, OnInPlaceActivate. //1. Initialization, obtaining interfaces, OnInPlaceActivate.
hr=pActiveSite->QueryInterface( hr=pActiveSite->QueryInterface(
IID_IOleInPlaceSite, IID_IOleInPlaceSite,
...@@ -259,220 +359,181 @@ HRESULT DocumentHolder::InPlaceActivate( ...@@ -259,220 +359,181 @@ HRESULT DocumentHolder::InPlaceActivate(
uno::Sequence<sal_Int8> aProcessIdent(16); uno::Sequence<sal_Int8> aProcessIdent(16);
rtl_getGlobalProcessId((sal_uInt8*)aProcessIdent.getArray()); rtl_getGlobalProcessId((sal_uInt8*)aProcessIdent.getArray());
if(!m_xEditWindow.is()) try
{ // determine XWindow and window handle of parent {
HWND hWndxWinParent(0); if(!m_xEditWindow.is())
uno::Reference<awt::XWindow> xWin; { // determine XWindow and window handle of parent
HWND hWndxWinParent(0);
static const ::rtl::OUString aToolkitServiceName( uno::Reference<awt::XWindow> xWin;
RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.awt.Toolkit" ) );
uno::Reference<awt::XSystemChildFactory> xToolkit( static const ::rtl::OUString aToolkitServiceName(
m_xFactory->createInstance(aToolkitServiceName ),uno::UNO_QUERY); RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.awt.Toolkit" ) );
uno::Reference<awt::XSystemChildFactory> xToolkit(
if(xToolkit.is()) { m_xFactory->createInstance(aToolkitServiceName ),uno::UNO_QUERY);
// create system window wrapper for hwnd
if( !m_pCHatchWin ) if(xToolkit.is()) {
m_pCHatchWin = new winwrap::CHatchWin( // create system window wrapper for hwnd
m_hInstance,this); if( !m_pCHatchWin )
m_pCHatchWin = new winwrap::CHatchWin(
if(m_pCHatchWin->Init(hWndSite,/*ID_HATCHWINDOW*/2000, NULL)) { m_hInstance,this);
m_pCHatchWin->RectsSet(&rcPos,&rcClip); //set visible area
hWndxWinParent = m_pCHatchWin->Window(); if(m_pCHatchWin->Init(hWndSite,/*ID_HATCHWINDOW*/2000, NULL)) {
ShowWindow(hWndxWinParent,SW_SHOW); //Make visible. m_pCHatchWin->RectsSet(&rcPos,&rcClip); //set visible area
} hWndxWinParent = m_pCHatchWin->Window();
else { ShowWindow(hWndxWinParent,SW_SHOW); //Make visible.
// no success initializing hatch window }
delete m_pCHatchWin, m_pCHatchWin = 0; else {
hWndxWinParent = hWndSite; // no success initializing hatch window
delete m_pCHatchWin, m_pCHatchWin = 0;
hWndxWinParent = hWndSite;
}
aAny <<= sal_Int32(hWndxWinParent);
xWin = uno::Reference<awt::XWindow>(
xToolkit->createSystemChild(
aAny,
aProcessIdent,
lang::SystemDependent::SYSTEM_WIN32),
uno::UNO_QUERY);
} }
aAny <<= sal_Int32(hWndxWinParent); if(xWin.is()) {
xWin = uno::Reference<awt::XWindow>( xWin->setPosSize(
xToolkit->createSystemChild( m_pCHatchWin ? HATCHWIN_BORDERWIDTHDEFAULT : 0,
aAny, m_pCHatchWin ? HATCHWIN_BORDERWIDTHDEFAULT : 0,
aProcessIdent, rcPos.right-rcPos.left,
lang::SystemDependent::SYSTEM_WIN32), rcPos.bottom - rcPos.top,
uno::UNO_QUERY); awt::PosSize::POSSIZE);
xWin->setVisible(sal_True);
m_xEditWindow = xWin;
m_hWndxWinParent = hWndxWinParent;
}
else
return ERROR;
} }
else {
if(m_hWndxWinParent) {
SetParent(m_hWndxWinParent,hWndSite);
ShowWindow(m_hWndxWinParent,SW_SHOW); //Make visible.
}
if(xWin.is()) { if ( !m_xFrame.is() )
xWin->setPosSize( // initially set size to "empty", this guarantees that the final resize
m_pCHatchWin ? HATCHWIN_BORDERWIDTHDEFAULT : 0, // is always executed (will be done by "SetObjectRects" after getting internal border)
m_pCHatchWin ? HATCHWIN_BORDERWIDTHDEFAULT : 0, m_xEditWindow->setPosSize(
rcPos.right-rcPos.left, 0,
rcPos.bottom - rcPos.top, 0,
awt::PosSize::POSSIZE); 0,
xWin->setVisible(sal_True); 0,
awt::PosSize::POSSIZE);
m_xEditWindow = xWin; m_xEditWindow->setVisible(sal_True);
m_hWndxWinParent = hWndxWinParent;
} }
else
return ERROR;
}
else {
if(m_hWndxWinParent) {
SetParent(m_hWndxWinParent,hWndSite);
ShowWindow(m_hWndxWinParent,SW_SHOW); //Make visible.
}
if ( !m_xFrame.is() )
// initially set size to "empty", this guarantees that the final resize
// is always executed (will be done by "SetObjectRects" after getting internal border)
m_xEditWindow->setPosSize(
0,
0,
0,
0,
awt::PosSize::POSSIZE);
m_xEditWindow->setVisible(sal_True);
}
if(m_xContainerWindow.is()) { if(m_xContainerWindow.is()) {
if(m_hWndxWinCont) { if(m_hWndxWinCont) {
if(m_pIOleIPFrame) { if(m_pIOleIPFrame) {
HWND hWndCont; HWND hWndCont;
m_pIOleIPFrame->GetWindow(&hWndCont); m_pIOleIPFrame->GetWindow(&hWndCont);
SetParent(m_hWndxWinCont,hWndCont); SetParent(m_hWndxWinCont,hWndCont);
ShowWindow(m_hWndxWinCont,SW_SHOW); ShowWindow(m_hWndxWinCont,SW_SHOW);
}
} }
m_xContainerWindow->setVisible(true);
} }
m_xContainerWindow->setVisible(true);
}
if(m_xFrame.is()) if(m_xFrame.is())
m_xFrame->activate(); m_xFrame->activate();
else { else {
// create frame and initialize it with with the created window // create frame and initialize it with with the created window
static const ::rtl::OUString aFrameServiceName( static const ::rtl::OUString aFrameServiceName(
RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.frame.Frame" ) ); RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.frame.Frame" ) );
m_xFrame = uno::Reference<frame::XFrame>( m_xFrame = uno::Reference<frame::XFrame>(
m_xFactory->createInstance(aFrameServiceName), m_xFactory->createInstance(aFrameServiceName),
uno::UNO_QUERY); uno::UNO_QUERY);
if(!m_xFrame.is()) if(!m_xFrame.is())
return ERROR; return ERROR;
m_xFrame->initialize(m_xEditWindow); m_xFrame->initialize(m_xEditWindow);
uno::Reference<frame::XDispatchProviderInterception> uno::Reference<frame::XDispatchProviderInterception>
xDPI(m_xFrame,uno::UNO_QUERY); xDPI(m_xFrame,uno::UNO_QUERY);
if(xDPI.is()) if(xDPI.is())
xDPI->registerDispatchProviderInterceptor( CreateNewInterceptor() ); xDPI->registerDispatchProviderInterceptor( CreateNewInterceptor() );
uno::Reference<beans::XPropertySet> xPS(m_xFrame,uno::UNO_QUERY); uno::Reference<beans::XPropertySet> xPS(m_xFrame,uno::UNO_QUERY);
if( xPS.is() ) if( xPS.is() )
{ {
aAny = xPS->getPropertyValue( aAny = xPS->getPropertyValue(
rtl::OUString::createFromAscii("LayoutManager")); rtl::OUString::createFromAscii("LayoutManager"));
aAny >>= m_xLayoutManager; aAny >>= m_xLayoutManager;
}
if(m_xLayoutManager.is())
m_xLayoutManager->setDockingAreaAcceptor(this);
// load the model into the frame
LoadDocInFrame( sal_True );
static const ::rtl::OUString aDesktopServiceName (
RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.frame.Desktop" ) );
uno::Reference< frame::XFramesSupplier > xDesktop(
m_xFactory->createInstance( aDesktopServiceName ),
uno::UNO_QUERY );
if(xDesktop.is())
xDesktop->getFrames()->append(m_xFrame);
// determine the menuhandle to get menutitems.
if(m_xLayoutManager.is()) {
uno::Reference< ::com::sun::star::ui::XUIElement > xUIEl(
m_xLayoutManager->getElement(
rtl::OUString::createFromAscii(
"private:resource/menubar/menubar")));
OSL_ENSURE(xUIEl.is(),"no menubar");
uno::Reference<awt::XSystemDependentMenuPeer> xSDMP(
xUIEl->getRealInterface(),
uno::UNO_QUERY);
aAny = xSDMP->getMenuHandle(
aProcessIdent,lang::SystemDependent::SYSTEM_WIN32);
sal_Int32 tmp;
if( aAny >>= tmp )
m_nMenuHandle = HMENU(tmp);
m_xLayoutManager->hideElement(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM(
"private:resource/menubar/menubar" )));
}
} }
// TODO/cd: Workaround for status indicator bug. It always makes the
// document window visible, when someone tries to use the status
// indicator. As we save our document when we get the deactivation
// from OLE this conflict to hide floating windows.
if(m_xLayoutManager.is()) if(m_xLayoutManager.is())
m_xLayoutManager->setDockingAreaAcceptor(this); m_xLayoutManager->setVisible(true);
// load the model into the frame // get document border and resize rects according to border
uno::Reference<frame::XComponentLoader> xComponentLoader( GetDocumentBorder( &m_aBorder );
m_xFrame,uno::UNO_QUERY); SetObjectRects( &rcPos, &rcClip );
if(xComponentLoader.is())
{
uno::Any aAny;
uno::Sequence<beans::PropertyValue> aSeq(4);
aAny <<= uno::Reference<uno::XInterface>( if ( m_xOleAccess.is() )
GetDocument(),uno::UNO_QUERY); {
aSeq[0] = beans::PropertyValue( LockedEmbedDocument_Impl aDocLock = m_xOleAccess->GetEmbedDocument();
rtl::OUString( if ( aDocLock.m_pEmbedDocument )
RTL_CONSTASCII_USTRINGPARAM("Model")), aDocLock.m_pEmbedDocument->ShowObject();
-1,
aAny,
beans::PropertyState_DIRECT_VALUE);
aAny <<= sal_False;
aSeq[1] = beans::PropertyValue(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("ReadOnly")),
-1,
aAny,
beans::PropertyState_DIRECT_VALUE);
aAny <<= (sal_Int16) 3;
aSeq[2] = beans::PropertyValue(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("PluginMode")),
-1,
aAny,
beans::PropertyState_DIRECT_VALUE);
aAny <<= (sal_Bool) sal_True;
aSeq[3] = beans::PropertyValue(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("NoAutoSave")),
-1,
aAny,
beans::PropertyState_DIRECT_VALUE);
xComponentLoader->loadComponentFromURL(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("private:object")),
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_self")),
0,
aSeq);
}
static const ::rtl::OUString aDesktopServiceName (
RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.frame.Desktop" ) );
uno::Reference< frame::XFramesSupplier > xDesktop(
m_xFactory->createInstance( aDesktopServiceName ),
uno::UNO_QUERY );
if(xDesktop.is())
xDesktop->getFrames()->append(m_xFrame);
// determine the menuhandle to get menutitems.
if(m_xLayoutManager.is()) {
uno::Reference< ::com::sun::star::ui::XUIElement > xUIEl(
m_xLayoutManager->getElement(
rtl::OUString::createFromAscii(
"private:resource/menubar/menubar")));
OSL_ENSURE(xUIEl.is(),"no menubar");
uno::Reference<awt::XSystemDependentMenuPeer> xSDMP(
xUIEl->getRealInterface(),
uno::UNO_QUERY);
aAny = xSDMP->getMenuHandle(
aProcessIdent,lang::SystemDependent::SYSTEM_WIN32);
sal_Int32 tmp;
if( aAny >>= tmp )
m_nMenuHandle = HMENU(tmp);
m_xLayoutManager->hideElement(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM(
"private:resource/menubar/menubar" )));
} }
}
// TODO/cd: Workaround for status indicator bug. It always makes the
// document window visible, when someone tries to use the status
// indicator. As we save our document when we get the deactivation
// from OLE this conflict to hide floating windows.
if(m_xLayoutManager.is())
m_xLayoutManager->setVisible(true);
// get document border and resize rects according to border // setTitle(m_aDocumentNamePart);
GetDocumentBorder( &m_aBorder ); if (fIncludeUI)
SetObjectRects( &rcPos, &rcClip ); hr=UIActivate();
if ( m_xOleAccess.is() ) m_pIOleIPSite->DiscardUndoState();
}
catch( uno::Exception& )
{ {
LockedEmbedDocument_Impl aDocLock = m_xOleAccess->GetEmbedDocument(); hr = ERROR;
if ( aDocLock.m_pEmbedDocument )
aDocLock.m_pEmbedDocument->ShowObject();
} }
// setTitle(m_aDocumentNamePart);
if (fIncludeUI)
hr=UIActivate();
m_pIOleIPSite->DiscardUndoState();
return hr; return hr;
} }
...@@ -900,76 +961,33 @@ void DocumentHolder::ClearInterceptor() ...@@ -900,76 +961,33 @@ void DocumentHolder::ClearInterceptor()
void DocumentHolder::show() void DocumentHolder::show()
{ {
if(m_xFrame.is()) { try
m_xFrame->activate(); {
uno::Reference<awt::XTopWindow> xTopWindow( if(m_xFrame.is())
m_xFrame->getContainerWindow(),uno::UNO_QUERY);
if(xTopWindow.is())
xTopWindow->toFront();
}
else {
uno::Reference<frame::XComponentLoader> xComponentLoader(
DocumentFrame(),uno::UNO_QUERY);
if(xComponentLoader.is())
{ {
uno::Sequence<beans::PropertyValue> aSeq(3); m_xFrame->activate();
uno::Reference<awt::XTopWindow> xTopWindow(
uno::Any aAny; m_xFrame->getContainerWindow(),uno::UNO_QUERY);
aAny <<= uno::Reference<uno::XInterface>( if(xTopWindow.is())
GetDocument(),uno::UNO_QUERY); xTopWindow->toFront();
aSeq[0] = beans::PropertyValue( }
rtl::OUString( else if( DocumentFrame().is() )
RTL_CONSTASCII_USTRINGPARAM("Model")), {
-1, LoadDocInFrame( sal_False );
aAny,
beans::PropertyState_DIRECT_VALUE);
aAny <<= sal_False;
aSeq[1] = beans::PropertyValue(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("ReadOnly")),
-1,
aAny,
beans::PropertyState_DIRECT_VALUE);
aAny <<= (sal_Bool) sal_True;
aSeq[2] = beans::PropertyValue(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("NoAutoSave")),
-1,
aAny,
beans::PropertyState_DIRECT_VALUE);
xComponentLoader->loadComponentFromURL(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM("private:object")),
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_self")),
0,
aSeq);
try // get rid of second closer if it is there
uno::Reference< beans::XPropertySet > xProps( m_xFrame, uno::UNO_QUERY );
if ( xProps.is() )
{ {
// get rid of second closer if it is there uno::Reference< frame::XLayoutManager > xLayoutManager;
uno::Reference< beans::XPropertySet > xProps( m_xFrame, uno::UNO_QUERY ); xProps->getPropertyValue( rtl::OUString::createFromAscii( "LayoutManager" ) ) >>= xLayoutManager;
if ( xProps.is() ) uno::Reference< beans::XPropertySet > xLMProps( xLayoutManager, uno::UNO_QUERY );
if ( xLMProps.is() )
{ {
uno::Reference< frame::XLayoutManager > xLayoutManager; xLMProps->setPropertyValue( ::rtl::OUString::createFromAscii( "MenuBarCloser" ),
xProps->getPropertyValue( rtl::OUString::createFromAscii( "LayoutManager" ) ) >>= xLayoutManager; uno::makeAny( uno::Reference< frame::XStatusListener >() ) );
uno::Reference< beans::XPropertySet > xLMProps( xLayoutManager, uno::UNO_QUERY );
if ( xLMProps.is() )
{
xLMProps->setPropertyValue( ::rtl::OUString::createFromAscii( "MenuBarCloser" ),
uno::makeAny( uno::Reference< frame::XStatusListener >() ) );
}
} }
} }
catch( uno::Exception& )
{
OSL_ENSURE( sal_False, "Can not adjust the frame!\n" );
}
if ( !m_bLink ) if ( !m_bLink )
{ {
...@@ -981,11 +999,16 @@ void DocumentHolder::show() ...@@ -981,11 +999,16 @@ void DocumentHolder::show()
catch( uno::Exception& ) catch( uno::Exception& )
{} {}
} }
}
if ( !m_bLink ) if ( !m_bLink )
setTitle(m_aDocumentNamePart); setTitle(m_aDocumentNamePart);
}
} }
catch( uno::Exception& )
{
OSL_ENSURE( sal_False, "Can not show the frame!\n" );
}
} }
void DocumentHolder::resizeWin( const SIZEL& rNewSize ) void DocumentHolder::resizeWin( const SIZEL& rNewSize )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment