manage VCL widgets using rtl::Reference
Change-Id: Ie95790cbaa5d459c8e849d7333098d857d31ed0a
diff --git a/include/vcl/button.hxx b/include/vcl/button.hxx
index 1a100c0..8cc6fe2 100644
--- a/include/vcl/button.hxx
+++ b/include/vcl/button.hxx
@@ -28,7 +28,7 @@
#include <vcl/bitmap.hxx>
#include <vcl/salnativewidgets.hxx>
#include <rsc/rsc-vcl-shared-types.hxx>
#include <vcl/vclref.hxx>
#include <vector>
class UserDrawEvent;
@@ -200,6 +200,8 @@ public:
virtual bool set_property(const OString &rKey, const OString &rValue) SAL_OVERRIDE;
};
typedef VclReference<PushButton> PushButtonPtr;
inline void PushButton::Check( bool bCheck )
{
SetState( (bCheck) ? TRISTATE_TRUE : TRISTATE_FALSE );
@@ -226,6 +228,7 @@ public:
virtual void Click() SAL_OVERRIDE;
};
typedef VclReference<OKButton> OKButtonPtr;
class VCL_DLLPUBLIC CancelButton : public PushButton
{
@@ -243,6 +246,8 @@ public:
virtual void Click() SAL_OVERRIDE;
};
typedef VclReference<CancelButton> CancelButtonPtr;
class VCL_DLLPUBLIC CloseButton : public CancelButton
{
public:
@@ -270,6 +275,7 @@ public:
virtual void Click() SAL_OVERRIDE;
};
typedef VclReference<HelpButton> HelpButtonPtr;
// - RadioButton -
class VCL_DLLPUBLIC RadioButton : public Button
@@ -493,6 +499,8 @@ public:
virtual bool set_property(const OString &rKey, const OString &rValue) SAL_OVERRIDE;
};
typedef VclReference<CheckBox> CheckBoxPtr;
inline void CheckBox::Check( bool bCheck )
{
SetState( (bCheck) ? TRISTATE_TRUE : TRISTATE_FALSE );
@@ -553,7 +561,7 @@ public:
virtual void KeyInput( const KeyEvent& rKEvt ) SAL_OVERRIDE;
};
typedef rtl::Reference<DisclosureButton> DisclosureButtonPtr;
typedef VclReference<DisclosureButton> DisclosureButtonPtr;
#endif // INCLUDED_VCL_BUTTON_HXX
diff --git a/include/vcl/fixed.hxx b/include/vcl/fixed.hxx
index 109cecf..30bbd95 100644
--- a/include/vcl/fixed.hxx
+++ b/include/vcl/fixed.hxx
@@ -82,6 +82,8 @@ public:
vcl::Window* get_mnemonic_widget() const { return m_pMnemonicWindow; }
};
typedef VclReference<FixedText> FixedTextPtr;
class VCL_DLLPUBLIC SelectableFixedText : public Edit
{
public:
@@ -124,6 +126,8 @@ public:
virtual Size GetOptimalSize() const SAL_OVERRIDE;
};
typedef VclReference<FixedLine> FixedLinePtr;
// - FixedBitmap -
class VCL_DLLPUBLIC FixedBitmap : public Control
{
diff --git a/include/vcl/group.hxx b/include/vcl/group.hxx
index 9e7b933fe..3d6c2a4 100644
--- a/include/vcl/group.hxx
+++ b/include/vcl/group.hxx
@@ -55,6 +55,8 @@ public:
virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
};
typedef VclReference<GroupBox> GroupBoxPtr;
#endif // INCLUDED_VCL_GROUP_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/imgctrl.hxx b/include/vcl/imgctrl.hxx
index 753ad9f..8ec454a 100644
--- a/include/vcl/imgctrl.hxx
+++ b/include/vcl/imgctrl.hxx
@@ -51,6 +51,8 @@ protected:
void ImplDraw( OutputDevice& rDev, sal_uLong nDrawFlags, const Point& rPos, const Size& rSize ) const;
};
typedef VclReference<ImageControl> ImageControlPtr;
#endif // INCLUDED_VCL_IMGCTRL_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/layout.hxx b/include/vcl/layout.hxx
index 24ad217..e2893de 100644
--- a/include/vcl/layout.hxx
+++ b/include/vcl/layout.hxx
@@ -544,7 +544,7 @@ public:
protected:
virtual Size calculateRequisition() const SAL_OVERRIDE;
virtual void setAllocation(const Size &rAllocation) SAL_OVERRIDE;
void dispose() SAL_OVERRIDE { m_pDisclosureButton.clear(); VclBin::dispose(); }
void dispose() SAL_OVERRIDE { m_pDisclosureButton.disposeAndClear(); VclBin::dispose(); }
private:
bool m_bResizeTopLevel;
DisclosureButtonPtr m_pDisclosureButton;
@@ -571,7 +571,7 @@ protected:
DECL_LINK(ScrollBarHdl, void *);
void InitScrollBars(const Size &rRequest);
virtual bool Notify(NotifyEvent& rNEvt) SAL_OVERRIDE;
void dispose() SAL_OVERRIDE { m_pVScroll.clear(); m_pHScroll.clear(); VclBin::dispose(); }
void dispose() SAL_OVERRIDE { m_pVScroll.disposeAndClear(); m_pHScroll.disposeAndClear(); VclBin::dispose(); }
private:
bool m_bUserManagedScrolling;
ScrollBarPtr m_pVScroll;
diff --git a/include/vcl/lstbox.hxx b/include/vcl/lstbox.hxx
index 29d2199..3e53ab9 100644
--- a/include/vcl/lstbox.hxx
+++ b/include/vcl/lstbox.hxx
@@ -239,6 +239,7 @@ public:
void EnableQuickSelection( const bool& b );
};
typedef VclReference<ListBox> ListBoxPtr;
// - MultiListBox -
diff --git a/include/vcl/menubtn.hxx b/include/vcl/menubtn.hxx
index 41e03c6..9159a6d 100644
--- a/include/vcl/menubtn.hxx
+++ b/include/vcl/menubtn.hxx
@@ -82,6 +82,8 @@ public:
const Link& GetSelectHdl() const { return maSelectHdl; }
};
typedef VclReference<MenuButton> MenuButtonPtr;
#endif // INCLUDED_VCL_MENUBTN_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/scrbar.hxx b/include/vcl/scrbar.hxx
index da949dfd..6255db3 100644
--- a/include/vcl/scrbar.hxx
+++ b/include/vcl/scrbar.hxx
@@ -141,7 +141,7 @@ public:
virtual Size GetOptimalSize() const SAL_OVERRIDE;
};
typedef rtl::Reference<ScrollBar> ScrollBarPtr;
typedef VclReference<ScrollBar> ScrollBarPtr;
// - ScrollBarBox -
diff --git a/include/vcl/vclref.hxx b/include/vcl/vclref.hxx
new file mode 100644
index 0000000..ddbff3e
--- /dev/null
+++ b/include/vcl/vclref.hxx
@@ -0,0 +1,87 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_VCL_REFERENCE_HXX
#define INCLUDED_VCL_REFERENCE_HXX
#include <rtl/ref.hxx>
/**
* A thin wrapper around rtl::Reference to implement the acquire and dispose semantics we want for references to vcl::Window subclasses.
* @param reference_type must be a subclass of vcl::Window
*/
template <class reference_type>
class VclReference
{
::rtl::Reference<reference_type> m_rInnerRef;
public:
/** Constructor...
*/
inline VclReference()
: m_rInnerRef()
{}
/** Constructor...
*/
inline VclReference (reference_type * pBody)
: m_rInnerRef(pBody)
{}
/** Copy constructor...
*/
inline VclReference (const VclReference<reference_type> & handle)
: m_rInnerRef (handle)
{}
/** Get the body. Can be used instead of operator->().
I.e. handle->someBodyOp() and handle.get()->someBodyOp()
are the same.
*/
inline reference_type * SAL_CALL get() const
{
return m_rInnerRef.get();
}
/** Probably most common used: handle->someBodyOp().
*/
inline reference_type * SAL_CALL operator->() const
{
return m_rInnerRef.get();
}
inline void disposeAndClear()
{
// hold it alive for the lifetime of this method
::rtl::Reference<reference_type> aTmp(m_rInnerRef);
m_rInnerRef.clear(); // we should use some 'swap' method ideally ;-)
assert(aTmp.get());
if (aTmp.get())
aTmp->dispose();
}
}; // class VclReference
#endif // INCLUDED_VCL_REFERENCE_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx
index bc20cbe..189f15b 100644
--- a/include/vcl/window.hxx
+++ b/include/vcl/window.hxx
@@ -119,6 +119,8 @@ namespace vcl {
namespace svt { class PopupWindowControllerImpl; }
template<class T> class VclReference;
// - WindowTypes -
@@ -497,6 +499,7 @@ public:
private:
template<typename T> friend class ::rtl::Reference;
template<typename T> friend class ::VclReference;
inline void acquire() const
{
@@ -512,7 +515,7 @@ private:
protected:
/** This is intended to be used to clear any locally held references to other Window-subclass objects */
virtual void dispose() {}
virtual void dispose();
SAL_DLLPRIVATE void ImplInit( vcl::Window* pParent, WinBits nStyle, SystemParentData* pSystemParentData );
diff --git a/vcl/inc/ilstbox.hxx b/vcl/inc/ilstbox.hxx
index 2fec055..82d33c00f 100644
--- a/vcl/inc/ilstbox.hxx
+++ b/vcl/inc/ilstbox.hxx
@@ -377,13 +377,15 @@ protected:
virtual void SelectEntry( ::vcl::StringEntryIdentifier _entry ) SAL_OVERRIDE;
};
typedef rtl::Reference<ImplListBoxWindow> ImplListBoxWindowPtr;
class ImplListBox : public Control
{
private:
ImplListBoxWindow maLBWindow;
ScrollBar* mpHScrollBar;
ScrollBar* mpVScrollBar;
ScrollBarBox* mpScrollBarBox;
ImplListBoxWindowPtr maLBWindow;
ScrollBar* mpHScrollBar;
ScrollBar* mpVScrollBar;
ScrollBarBox* mpScrollBarBox;
/// bitfield
bool mbVScroll : 1; // VScroll an oder aus
@@ -400,6 +402,7 @@ protected:
virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
virtual bool Notify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
virtual void dispose() SAL_OVERRIDE;
void ImplResizeControls();
void ImplCheckScrollBars();
@@ -413,8 +416,8 @@ public:
ImplListBox( vcl::Window* pParent, WinBits nWinStyle );
virtual ~ImplListBox();
const ImplEntryList* GetEntryList() const { return maLBWindow.GetEntryList(); }
ImplListBoxWindow& GetMainWindow() { return maLBWindow; }
const ImplEntryList* GetEntryList() const { return maLBWindow->GetEntryList(); }
ImplListBoxWindowPtr GetMainWindow() { return maLBWindow; }
virtual void Resize() SAL_OVERRIDE;
virtual const Wallpaper& GetDisplayBackground() const SAL_OVERRIDE;
@@ -423,84 +426,84 @@ public:
sal_Int32 InsertEntry( sal_Int32 nPos, const OUString& rStr );
sal_Int32 InsertEntry( sal_Int32 nPos, const OUString& rStr, const Image& rImage );
void RemoveEntry( sal_Int32 nPos );
void SetEntryData( sal_Int32 nPos, void* pNewData ) { maLBWindow.GetEntryList()->SetEntryData( nPos, pNewData ); }
void SetEntryData( sal_Int32 nPos, void* pNewData ) { maLBWindow->GetEntryList()->SetEntryData( nPos, pNewData ); }
void Clear();
void SetEntryFlags( sal_Int32 nPos, long nFlags );
void SelectEntry( sal_Int32 nPos, bool bSelect );
void SetNoSelection();
void ResetCurrentPos() { maLBWindow.ResetCurrentPos(); }
sal_Int32 GetCurrentPos() const { return maLBWindow.GetCurrentPos(); }
void ResetCurrentPos() { maLBWindow->ResetCurrentPos(); }
sal_Int32 GetCurrentPos() const { return maLBWindow->GetCurrentPos(); }
bool ProcessKeyInput( const KeyEvent& rKEvt ) { return maLBWindow.ProcessKeyInput( rKEvt ); }
bool ProcessKeyInput( const KeyEvent& rKEvt ) { return maLBWindow->ProcessKeyInput( rKEvt ); }
bool HandleWheelAsCursorTravel( const CommandEvent& rCEvt );
void SetSeparatorPos( sal_Int32 n ) { maLBWindow.SetSeparatorPos( n ); }
sal_Int32 GetSeparatorPos() const { return maLBWindow.GetSeparatorPos(); }
void SetSeparatorPos( sal_Int32 n ) { maLBWindow->SetSeparatorPos( n ); }
sal_Int32 GetSeparatorPos() const { return maLBWindow->GetSeparatorPos(); }
void SetTopEntry( sal_Int32 nTop ) { maLBWindow.SetTopEntry( nTop ); }
sal_Int32 GetTopEntry() const { return maLBWindow.GetTopEntry(); }
void ShowProminentEntry( sal_Int32 nPos ) { maLBWindow.ShowProminentEntry( nPos ); }
void SetTopEntry( sal_Int32 nTop ) { maLBWindow->SetTopEntry( nTop ); }
sal_Int32 GetTopEntry() const { return maLBWindow->GetTopEntry(); }
void ShowProminentEntry( sal_Int32 nPos ) { maLBWindow->ShowProminentEntry( nPos ); }
using Window::IsVisible;
bool IsVisible( sal_Int32 nEntry ) const { return maLBWindow.IsVisible( nEntry ); }
bool IsVisible( sal_Int32 nEntry ) const { return maLBWindow->IsVisible( nEntry ); }
void SetProminentEntryType( ProminentEntry eType ) { maLBWindow.SetProminentEntryType( eType ); }
ProminentEntry GetProminentEntryType() const { return maLBWindow.GetProminentEntryType(); }
void SetProminentEntryType( ProminentEntry eType ) { maLBWindow->SetProminentEntryType( eType ); }
ProminentEntry GetProminentEntryType() const { return maLBWindow->GetProminentEntryType(); }
long GetLeftIndent() const { return maLBWindow.GetLeftIndent(); }
void SetLeftIndent( sal_uInt16 n ) { maLBWindow.SetLeftIndent( n ); }
void ScrollHorz( short nDiff ) { maLBWindow.ScrollHorz( nDiff ); }
long GetLeftIndent() const { return maLBWindow->GetLeftIndent(); }
void SetLeftIndent( sal_uInt16 n ) { maLBWindow->SetLeftIndent( n ); }
void ScrollHorz( short nDiff ) { maLBWindow->ScrollHorz( nDiff ); }
void SetTravelSelect( bool bTravelSelect ) { maLBWindow.SetTravelSelect( bTravelSelect ); }
bool IsTravelSelect() const { return maLBWindow.IsTravelSelect(); }
bool IsTrackingSelect() const { return maLBWindow.IsTrackingSelect(); }
void SetTravelSelect( bool bTravelSelect ) { maLBWindow->SetTravelSelect( bTravelSelect ); }
bool IsTravelSelect() const { return maLBWindow->IsTravelSelect(); }
bool IsTrackingSelect() const { return maLBWindow->IsTrackingSelect(); }
void EnableMultiSelection( bool bMulti, bool bStackMode ) { maLBWindow.EnableMultiSelection( bMulti, bStackMode ); }
bool IsMultiSelectionEnabled() const { return maLBWindow.IsMultiSelectionEnabled(); }
void EnableMultiSelection( bool bMulti, bool bStackMode ) { maLBWindow->EnableMultiSelection( bMulti, bStackMode ); }
bool IsMultiSelectionEnabled() const { return maLBWindow->IsMultiSelectionEnabled(); }
void SetMultiSelectionSimpleMode( bool bSimple ) { maLBWindow.SetMultiSelectionSimpleMode( bSimple ); }
bool IsMultiSelectionSimpleMode() const { return maLBWindow.IsMultiSelectionSimpleMode(); }
void SetMultiSelectionSimpleMode( bool bSimple ) { maLBWindow->SetMultiSelectionSimpleMode( bSimple ); }
bool IsMultiSelectionSimpleMode() const { return maLBWindow->IsMultiSelectionSimpleMode(); }
void SetReadOnly( bool b ) { maLBWindow.SetReadOnly( b ); }
bool IsReadOnly() const { return maLBWindow.IsReadOnly(); }
void SetReadOnly( bool b ) { maLBWindow->SetReadOnly( b ); }
bool IsReadOnly() const { return maLBWindow->IsReadOnly(); }
Size CalcSize( sal_Int32 nMaxLines ) const { return maLBWindow.CalcSize( nMaxLines ); }
long GetEntryHeight() const { return maLBWindow.GetEntryHeight(); }
long GetMaxEntryWidth() const { return maLBWindow.GetMaxEntryWidth(); }
Size CalcSize( sal_Int32 nMaxLines ) const { return maLBWindow->CalcSize( nMaxLines ); }
long GetEntryHeight() const { return maLBWindow->GetEntryHeight(); }
long GetMaxEntryWidth() const { return maLBWindow->GetMaxEntryWidth(); }
void SetScrollHdl( const Link& rLink ) { maScrollHdl = rLink; }
const Link& GetScrollHdl() const { return maScrollHdl; }
void SetSelectHdl( const Link& rLink ) { maLBWindow.SetSelectHdl( rLink ); }
const Link& GetSelectHdl() const { return maLBWindow.GetSelectHdl(); }
void SetCancelHdl( const Link& rLink ) { maLBWindow.SetCancelHdl( rLink ); }
const Link& GetCancelHdl() const { return maLBWindow.GetCancelHdl(); }
void SetDoubleClickHdl( const Link& rLink ) { maLBWindow.SetDoubleClickHdl( rLink ); }
const Link& GetDoubleClickHdl() const { return maLBWindow.GetDoubleClickHdl(); }
void SetSelectHdl( const Link& rLink ) { maLBWindow->SetSelectHdl( rLink ); }
const Link& GetSelectHdl() const { return maLBWindow->GetSelectHdl(); }
void SetCancelHdl( const Link& rLink ) { maLBWindow->SetCancelHdl( rLink ); }
const Link& GetCancelHdl() const { return maLBWindow->GetCancelHdl(); }
void SetDoubleClickHdl( const Link& rLink ) { maLBWindow->SetDoubleClickHdl( rLink ); }
const Link& GetDoubleClickHdl() const { return maLBWindow->GetDoubleClickHdl(); }
boost::signals2::signal< void ( UserDrawEvent* ) > userDrawSignal;
void SetFocusHdl( const Link& rLink ) { maLBWindow.SetFocusHdl( rLink ); }
const Link& GetFocusHdl() const { return maLBWindow.GetFocusHdl(); }
void SetListItemSelectHdl( const Link& rLink ) { maLBWindow.SetListItemSelectHdl( rLink ); }
const Link& GetListItemSelectHdl() const { return maLBWindow.GetListItemSelectHdl(); }
void SetSelectionChangedHdl( const Link& rLnk ) { maLBWindow.GetEntryList()->SetSelectionChangedHdl( rLnk ); }
void SetCallSelectionChangedHdl( bool bCall ) { maLBWindow.GetEntryList()->SetCallSelectionChangedHdl( bCall ); }
bool IsSelectionChanged() const { return maLBWindow.IsSelectionChanged(); }
sal_uInt16 GetSelectModifier() const { return maLBWindow.GetSelectModifier(); }
void SetFocusHdl( const Link& rLink ) { maLBWindow->SetFocusHdl( rLink ); }
const Link& GetFocusHdl() const { return maLBWindow->GetFocusHdl(); }
void SetListItemSelectHdl( const Link& rLink ) { maLBWindow->SetListItemSelectHdl( rLink ); }
const Link& GetListItemSelectHdl() const { return maLBWindow->GetListItemSelectHdl(); }
void SetSelectionChangedHdl( const Link& rLnk ) { maLBWindow->GetEntryList()->SetSelectionChangedHdl( rLnk ); }
void SetCallSelectionChangedHdl( bool bCall ) { maLBWindow->GetEntryList()->SetCallSelectionChangedHdl( bCall ); }
bool IsSelectionChanged() const { return maLBWindow->IsSelectionChanged(); }
sal_uInt16 GetSelectModifier() const { return maLBWindow->GetSelectModifier(); }
void SetMRUEntries( const OUString& rEntries, sal_Unicode cSep );
OUString GetMRUEntries( sal_Unicode cSep ) const;
void SetMaxMRUCount( sal_Int32 n ) { maLBWindow.GetEntryList()->SetMaxMRUCount( n ); }
sal_Int32 GetMaxMRUCount() const { return maLBWindow.GetEntryList()->GetMaxMRUCount(); }
void SetMaxMRUCount( sal_Int32 n ) { maLBWindow->GetEntryList()->SetMaxMRUCount( n ); }
sal_Int32 GetMaxMRUCount() const { return maLBWindow->GetEntryList()->GetMaxMRUCount(); }
sal_uInt16 GetDisplayLineCount() const
{ return maLBWindow.GetDisplayLineCount(); }
{ return maLBWindow->GetDisplayLineCount(); }
bool GetEdgeBlending() const { return mbEdgeBlending; }
void SetEdgeBlending(bool bNew);
/// pb: #106948# explicit mirroring for calc
inline void EnableMirroring() { maLBWindow.EnableMirroring(); }
inline void EnableMirroring() { maLBWindow->EnableMirroring(); }
inline void SetDropTraget(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& i_xDNDListenerContainer){ mxDNDListenerContainer= i_xDNDListenerContainer; }
};
diff --git a/vcl/inc/printdlg.hxx b/vcl/inc/printdlg.hxx
index fef1da8..52b1cbf 100644
--- a/vcl/inc/printdlg.hxx
+++ b/vcl/inc/printdlg.hxx
@@ -56,8 +56,8 @@ namespace vcl
OUString maReplacementString;
OUString maToolTipString;
bool mbGreyscale;
FixedLine maHorzDim;
FixedLine maVertDim;
FixedLinePtr maHorzDim;
FixedLinePtr maVertDim;
void preparePreviewBitmap();
@@ -76,6 +76,8 @@ namespace vcl
sal_Int32 i_nDPIX, sal_Int32 i_nDPIY,
bool i_bGreyscale
);
private:
virtual void dispose() SAL_OVERRIDE;
};
class ShowNupOrderWindow : public vcl::Window
diff --git a/vcl/source/app/dbggui.cxx b/vcl/source/app/dbggui.cxx
index 1c643f2..65c0dc8 100644
--- a/vcl/source/app/dbggui.cxx
+++ b/vcl/source/app/dbggui.cxx
@@ -207,98 +207,102 @@ NULL
class DbgInfoDialog : public ModalDialog
{
private:
ListBox maListBox;
OKButton maOKButton;
ListBoxPtr maListBox;
OKButtonPtr maOKButton;
bool mbHelpText;
public:
DbgInfoDialog( vcl::Window* pParent, bool bHelpText = false );
void SetInfoText( const OUString& rStr );
private:
virtual void dispose() SAL_OVERRIDE;
};
class DbgDialog : public ModalDialog
{
private:
CheckBox maRes;
CheckBox maDialog;
CheckBox maBoldAppFont;
GroupBox maBox3;
CheckBoxPtr maRes;
CheckBoxPtr maDialog;
CheckBoxPtr maBoldAppFont;
GroupBoxPtr maBox3;
OKButton maOKButton;
CancelButton maCancelButton;
HelpButton maHelpButton;
OKButtonPtr maOKButton;
CancelButtonPtr maCancelButton;
HelpButtonPtr maHelpButton;
public:
DbgDialog();
DECL_LINK( ClickHdl, Button* );
void RequestHelp( const HelpEvent& rHEvt ) SAL_OVERRIDE;
private:
virtual void dispose() SAL_OVERRIDE;
};
DbgDialog::DbgDialog() :
ModalDialog( NULL, WB_STDMODAL | WB_SYSTEMWINDOW ),
maRes( this ),
maDialog( this ),
maBoldAppFont( this ),
maBox3( this ),
maOKButton( this, WB_DEFBUTTON ),
maCancelButton( this ),
maHelpButton( this )
maRes(new CheckBox(this)),
maDialog(new CheckBox(this)),
maBoldAppFont(new CheckBox(this)),
maBox3(new GroupBox(this)),
maOKButton(new OKButton(this, WB_DEFBUTTON)),
maCancelButton(new CancelButton(this)),
maHelpButton(new HelpButton(this))
{
DbgData* pData = DbgGetData();
MapMode aAppMap( MAP_APPFONT );
Size aButtonSize = LogicToPixel( Size( 60, 12 ), aAppMap );
{
maRes.Show();
maRes.SetText("~Resourcen");
maRes->Show();
maRes->SetText("~Resourcen");
if ( pData->nTestFlags & DBG_TEST_RESOURCE )
maRes.Check( true );
maRes.SetPosSizePixel( LogicToPixel( Point( 75, 95 ), aAppMap ),
maRes->Check( true );
maRes->SetPosSizePixel( LogicToPixel( Point( 75, 95 ), aAppMap ),
aButtonSize );
}
{
maDialog.Show();
maDialog.SetText("~Dialog");
maDialog->Show();
maDialog->SetText("~Dialog");
if ( pData->nTestFlags & DBG_TEST_DIALOG )
maDialog.Check( true );
maDialog.SetPosSizePixel( LogicToPixel( Point( 140, 95 ), aAppMap ),
maDialog->Check( true );
maDialog->SetPosSizePixel( LogicToPixel( Point( 140, 95 ), aAppMap ),
aButtonSize );
}
{
maBoldAppFont.Show();
maBoldAppFont.SetText("~Bold AppFont");
maBoldAppFont->Show();
maBoldAppFont->SetText("~Bold AppFont");
if ( pData->nTestFlags & DBG_TEST_BOLDAPPFONT )
maBoldAppFont.Check( true );
maBoldAppFont.SetPosSizePixel( LogicToPixel( Point( 205, 95 ), aAppMap ),
maBoldAppFont->Check( true );
maBoldAppFont->SetPosSizePixel( LogicToPixel( Point( 205, 95 ), aAppMap ),
aButtonSize );
maBoldAppFont.SaveValue();
maBoldAppFont->SaveValue();
}
{
maBox3.Show();
maBox3.SetText("Test Options");
maBox3.SetPosSizePixel( LogicToPixel( Point( 5, 85 ), aAppMap ),
maBox3->Show();
maBox3->SetText("Test Options");
maBox3->SetPosSizePixel( LogicToPixel( Point( 5, 85 ), aAppMap ),
LogicToPixel( Size( 330, 30 ), aAppMap ) );
}
{
maOKButton.Show();
maOKButton.SetClickHdl( LINK( this, DbgDialog, ClickHdl ) );
maOKButton.SetPosSizePixel( LogicToPixel( Point( 10, 260 ), aAppMap ),
maOKButton->Show();
maOKButton->SetClickHdl( LINK( this, DbgDialog, ClickHdl ) );
maOKButton->SetPosSizePixel( LogicToPixel( Point( 10, 260 ), aAppMap ),
LogicToPixel( Size( 50, 15 ), aAppMap ) );
}
{
maCancelButton.Show();
maCancelButton.SetPosSizePixel( LogicToPixel( Point( 70, 260 ), aAppMap ),
maCancelButton->Show();
maCancelButton->SetPosSizePixel( LogicToPixel( Point( 70, 260 ), aAppMap ),
LogicToPixel( Size( 50, 15 ), aAppMap ) );
}
{
maHelpButton.Show();
maHelpButton.SetPosSizePixel( LogicToPixel( Point( 190, 260 ), aAppMap ),
maHelpButton->Show();
maHelpButton->SetPosSizePixel( LogicToPixel( Point( 190, 260 ), aAppMap ),
LogicToPixel( Size( 50, 15 ), aAppMap ) );
}
@@ -310,20 +314,20 @@ DbgDialog::DbgDialog() :
IMPL_LINK( DbgDialog, ClickHdl, Button*, pButton )
{
if ( pButton == &maOKButton )
if ( pButton == maOKButton.get() )
{
DbgData aData;
memcpy( &aData, DbgGetData(), sizeof( DbgData ) );
aData.nTestFlags = 0;
if ( maRes.IsChecked() )
if ( maRes->IsChecked() )
aData.nTestFlags |= DBG_TEST_RESOURCE;
if ( maDialog.IsChecked() )
if ( maDialog->IsChecked() )
aData.nTestFlags |= DBG_TEST_DIALOG;
if ( maBoldAppFont.IsChecked() )
if ( maBoldAppFont->IsChecked() )
aData.nTestFlags |= DBG_TEST_BOLDAPPFONT;
// Daten speichern
@@ -333,12 +337,12 @@ IMPL_LINK( DbgDialog, ClickHdl, Button*, pButton )
#define IMMEDIATE_FLAGS (DBG_TEST_RESOURCE | DBG_TEST_DIALOG | DBG_TEST_BOLDAPPFONT)
pData->nTestFlags &= ~IMMEDIATE_FLAGS;
pData->nTestFlags |= aData.nTestFlags & IMMEDIATE_FLAGS;
if ( maBoldAppFont.IsValueChangedFromSaved() )
if ( maBoldAppFont->IsValueChangedFromSaved() )
{
AllSettings aSettings = Application::GetSettings();
StyleSettings aStyleSettings = aSettings.GetStyleSettings();
vcl::Font aFont = aStyleSettings.GetAppFont();
if ( maBoldAppFont.IsChecked() )
if ( maBoldAppFont->IsChecked() )
aFont.SetWeight( WEIGHT_BOLD );
else
aFont.SetWeight( WEIGHT_NORMAL );
@@ -377,10 +381,22 @@ void DbgDialog::RequestHelp( const HelpEvent& rHEvt )
}
}
void DbgDialog::dispose()
{
maRes.disposeAndClear();
maDialog.disposeAndClear();
maBoldAppFont.disposeAndClear();
maBox3.disposeAndClear();
maOKButton.disposeAndClear();
maCancelButton.disposeAndClear();
maHelpButton.disposeAndClear();
ModalDialog::dispose();
}
DbgInfoDialog::DbgInfoDialog( vcl::Window* pParent, bool bHelpText ) :
ModalDialog( pParent, WB_STDMODAL ),
maListBox( this, WB_BORDER | WB_AUTOHSCROLL ),
maOKButton( this, WB_DEFBUTTON )
maListBox(new ListBox( this, WB_BORDER | WB_AUTOHSCROLL )),
maOKButton(new OKButton(this, WB_DEFBUTTON))
{
mbHelpText = bHelpText;
@@ -389,21 +405,21 @@ DbgInfoDialog::DbgInfoDialog( vcl::Window* pParent, bool bHelpText ) :
vcl::Font aFont = GetDefaultFont( DEFAULTFONT_FIXED, LANGUAGE_ENGLISH_US, 0 );
aFont.SetHeight( 8 );
aFont.SetPitch( PITCH_FIXED );
maListBox.SetControlFont( aFont );
maListBox->SetControlFont( aFont );
}
maListBox.SetPosSizePixel( Point( 5, 5 ), Size( 630, 380 ) );
maListBox.Show();
maListBox->SetPosSizePixel( Point( 5, 5 ), Size( 630, 380 ) );
maListBox->Show();
maOKButton.SetPosSizePixel( Point( 290, 390 ), Size( 60, 25 ) );
maOKButton.Show();
maOKButton->SetPosSizePixel( Point( 290, 390 ), Size( 60, 25 ) );
maOKButton->Show();
SetOutputSizePixel( Size( 640, 420 ) );
}
void DbgInfoDialog::SetInfoText( const OUString& rStr )
{
maListBox.SetUpdateMode( false );
maListBox.Clear();
maListBox->SetUpdateMode( false );
maListBox->Clear();
OUString aStr = convertLineEnd(rStr, LINEEND_LF);
sal_Int32 nStrIndex = 0;
sal_Int32 nFoundIndex;
@@ -413,18 +429,18 @@ void DbgInfoDialog::SetInfoText( const OUString& rStr )
OUString aTextParagraph = aStr.copy( nStrIndex, nFoundIndex-nStrIndex );
if ( mbHelpText )
{
long nMaxWidth = maListBox.GetOutputSizePixel().Width()-30;
long nMaxWidth = maListBox->GetOutputSizePixel().Width()-30;
sal_Int32 nLastIndex = 0;
sal_Int32 nIndex = aTextParagraph.indexOf( ' ' );
while ( nIndex != -1 )
{
if ( maListBox.GetTextWidth( aTextParagraph, 0, nIndex ) > nMaxWidth )
if ( maListBox->GetTextWidth( aTextParagraph, 0, nIndex ) > nMaxWidth )
{
if ( !nLastIndex )
nLastIndex = nIndex+1;
OUString aTempStr = aTextParagraph.copy( 0, nLastIndex );
aTextParagraph = aTextParagraph.replaceAt( 0, nLastIndex, "" );
maListBox.InsertEntry( aTempStr );
maListBox->InsertEntry( aTempStr );
nLastIndex = 0;
}
else
@@ -432,20 +448,27 @@ void DbgInfoDialog::SetInfoText( const OUString& rStr )
nIndex = aTextParagraph.indexOf( ' ', nLastIndex );
}
if ( maListBox.GetTextWidth( aTextParagraph, 0, nIndex ) > nMaxWidth )
if ( maListBox->GetTextWidth( aTextParagraph, 0, nIndex ) > nMaxWidth )
{
if ( !nLastIndex )
nLastIndex = nIndex+1;
OUString aTempStr = aTextParagraph.copy( 0, nLastIndex );
aTextParagraph = aTextParagraph.replaceAt( 0, nLastIndex, "" );
maListBox.InsertEntry( aTempStr );
maListBox->InsertEntry( aTempStr );
}
}
maListBox.InsertEntry( aTextParagraph );
maListBox->InsertEntry( aTextParagraph );
nStrIndex = nFoundIndex+1;
}
while ( nFoundIndex != -1 );
maListBox.SetUpdateMode( true );
maListBox->SetUpdateMode( true );
}
void DbgInfoDialog::dispose()
{
maListBox.disposeAndClear();
maOKButton.disposeAndClear();
ModalDialog::dispose();
}
void DbgDialogTest( vcl::Window* pWindow )
diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx
index 16d1ccc..8a2e3c2 100644
--- a/vcl/source/control/combobox.cxx
+++ b/vcl/source/control/combobox.cxx
@@ -188,7 +188,7 @@ void ComboBox::ImplInit( vcl::Window* pParent, WinBits nStyle )
if ( mpFloatWin )
mpFloatWin->SetImplListBox( mpImplLB );
else
mpImplLB->GetMainWindow().AllowGrabFocus( true );
mpImplLB->GetMainWindow()->AllowGrabFocus( true );
ImplCalcEditHeight();
@@ -253,7 +253,7 @@ void ComboBox::ImplClickButtonHandler( ImplBtn* )
ImplClearLayoutData();
if( mpImplLB )
mpImplLB->GetMainWindow().ImplClearLayoutData();
mpImplLB->GetMainWindow()->ImplClearLayoutData();
}
IMPL_LINK_NOARG(ComboBox, ImplPopupModeEndHdl)
@@ -272,7 +272,7 @@ IMPL_LINK_NOARG(ComboBox, ImplPopupModeEndHdl)
ImplClearLayoutData();
if( mpImplLB )
mpImplLB->GetMainWindow().ImplClearLayoutData();
mpImplLB->GetMainWindow()->ImplClearLayoutData();
mpBtn->SetPressed( false );
CallEventListeners( VCLEVENT_DROPDOWN_CLOSE );
@@ -581,20 +581,20 @@ void ComboBox::FillLayoutData() const
mpControlData->mpLayoutData = new vcl::ControlLayoutData();
AppendLayoutData( *mpSubEdit );
mpSubEdit->SetLayoutDataParent( this );
Control& rMainWindow = mpImplLB->GetMainWindow();
ImplListBoxWindowPtr rMainWindow = mpImplLB->GetMainWindow();
if( mpFloatWin )
{
// dropdown mode
if( mpFloatWin->IsReallyVisible() )
{
AppendLayoutData( rMainWindow );
rMainWindow.SetLayoutDataParent( this );
AppendLayoutData( *(rMainWindow.get()) );
rMainWindow->SetLayoutDataParent( this );
}
}
else
{
AppendLayoutData( rMainWindow );
rMainWindow.SetLayoutDataParent( this );
AppendLayoutData( *(rMainWindow.get()) );
rMainWindow->SetLayoutDataParent( this );
}
}
@@ -647,7 +647,7 @@ void ComboBox::StateChanged( StateChangedType nType )
else if ( nType == StateChangedType::STYLE )
{
SetStyle( ImplInitStyle( GetStyle() ) );
mpImplLB->GetMainWindow().EnableSort( ( GetStyle() & WB_SORT ) ? true : false );
mpImplLB->GetMainWindow()->EnableSort( ( GetStyle() & WB_SORT ) ? true : false );
}
else if( nType == StateChangedType::MIRRORING )
{
@@ -765,7 +765,7 @@ bool ComboBox::Notify( NotifyEvent& rNEvt )
nDone = false; // don't eat this event, let the default handling happen (i.e. scroll the context)
}
}
else if( ( rNEvt.GetType() == MouseNotifyEvent::MOUSEBUTTONDOWN ) && ( rNEvt.GetWindow() == &mpImplLB->GetMainWindow() ) )
else if( ( rNEvt.GetType() == MouseNotifyEvent::MOUSEBUTTONDOWN ) && ( rNEvt.GetWindow() == mpImplLB->GetMainWindow().get() ) )
{
mpSubEdit->GrabFocus();
}
@@ -1106,7 +1106,7 @@ void ComboBox::GetMaxVisColumnsAndLines( sal_uInt16& rnCols, sal_uInt16& rnLines
long nCharWidth = GetTextWidth(OUString(static_cast<sal_Unicode>('x')));
if ( !IsDropDownBox() )
{
Size aOutSz = mpImplLB->GetMainWindow().GetOutputSizePixel();
Size aOutSz = mpImplLB->GetMainWindow()->GetOutputSizePixel();
rnCols = (nCharWidth > 0) ? (sal_uInt16)(aOutSz.Width()/nCharWidth) : 1;
rnLines = (sal_uInt16)(aOutSz.Height()/mpImplLB->GetEntryHeight());
}
@@ -1120,11 +1120,11 @@ void ComboBox::GetMaxVisColumnsAndLines( sal_uInt16& rnCols, sal_uInt16& rnLines
void ComboBox::Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags )
{
mpImplLB->GetMainWindow().ImplInitSettings( true, true, true );
mpImplLB->GetMainWindow()->ImplInitSettings( true, true, true );
Point aPos = pDev->LogicToPixel( rPos );
Size aSize = pDev->LogicToPixel( rSize );
vcl::Font aFont = mpImplLB->GetMainWindow().GetDrawPixelFont( pDev );
vcl::Font aFont = mpImplLB->GetMainWindow()->GetDrawPixelFont( pDev );
OutDevType eOutDevType = pDev->GetOutDevType();
pDev->Push();
@@ -1233,18 +1233,18 @@ void ComboBox::UserDraw( const UserDrawEvent& )
void ComboBox::SetUserItemSize( const Size& rSz )
{
mpImplLB->GetMainWindow().SetUserItemSize( rSz );
mpImplLB->GetMainWindow()->SetUserItemSize( rSz );
}
void ComboBox::EnableUserDraw( bool bUserDraw )
{
mpImplLB->GetMainWindow().EnableUserDraw( bUserDraw );
mpImplLB->GetMainWindow()->EnableUserDraw( bUserDraw );
}
void ComboBox::DrawEntry( const UserDrawEvent& rEvt, bool bDrawImage, bool bDrawText, bool bDrawTextAtImagePos )
{
DBG_ASSERT( rEvt.GetDevice() == &mpImplLB->GetMainWindow(), "DrawEntry?!" );
mpImplLB->GetMainWindow().DrawEntry( rEvt.GetItemId(), bDrawImage, bDrawText, bDrawTextAtImagePos );
DBG_ASSERT( rEvt.GetDevice() == mpImplLB->GetMainWindow().get(), "DrawEntry?!" );
mpImplLB->GetMainWindow()->DrawEntry( rEvt.GetItemId(), bDrawImage, bDrawText, bDrawTextAtImagePos );
}
void ComboBox::SetSeparatorPos( sal_Int32 n )
@@ -1355,8 +1355,8 @@ void ComboBox::SetNoSelection()
Rectangle ComboBox::GetBoundingRectangle( sal_Int32 nItem ) const
{
Rectangle aRect = mpImplLB->GetMainWindow().GetBoundingRectangle( nItem );
Rectangle aOffset = mpImplLB->GetMainWindow().GetWindowExtentsRelative( (vcl::Window*)this );
Rectangle aRect = mpImplLB->GetMainWindow()->GetBoundingRectangle( nItem );
Rectangle aOffset = mpImplLB->GetMainWindow()->GetWindowExtentsRelative( (vcl::Window*)this );
aRect.Move( aOffset.TopLeft().X(), aOffset.TopLeft().Y() );
return aRect;
}
@@ -1382,16 +1382,16 @@ long ComboBox::GetIndexForPoint( const Point& rPoint, sal_Int32& rPos ) const
{
// point must be either in main list window
// or in impl window (dropdown case)
ImplListBoxWindow& rMain = mpImplLB->GetMainWindow();
ImplListBoxWindowPtr rMain = mpImplLB->GetMainWindow();
// convert coordinates to ImplListBoxWindow pixel coordinate space
Point aConvPoint = LogicToPixel( rPoint );
aConvPoint = OutputToAbsoluteScreenPixel( aConvPoint );
aConvPoint = rMain.AbsoluteScreenToOutputPixel( aConvPoint );
aConvPoint = rMain.PixelToLogic( aConvPoint );
aConvPoint = rMain->AbsoluteScreenToOutputPixel( aConvPoint );
aConvPoint = rMain->PixelToLogic( aConvPoint );
// try to find entry
sal_Int32 nEntry = rMain.GetEntryPosForPoint( aConvPoint );
sal_Int32 nEntry = rMain->GetEntryPosForPoint( aConvPoint );
if( nEntry == LISTBOX_ENTRY_NOTFOUND )
nIndex = -1;
else
diff --git a/vcl/source/control/ilstbox.cxx b/vcl/source/control/ilstbox.cxx
index e5d29ea..9a18684 100644
--- a/vcl/source/control/ilstbox.cxx
+++ b/vcl/source/control/ilstbox.cxx
@@ -2135,9 +2135,9 @@ sal_uInt16 ImplListBoxWindow::ImplGetTextStyle() const
ImplListBox::ImplListBox( vcl::Window* pParent, WinBits nWinStyle ) :
Control( pParent, nWinStyle ),
maLBWindow( this, nWinStyle&(~WB_BORDER) )
maLBWindow(new ImplListBoxWindow( this, nWinStyle&(~WB_BORDER) ))
{
maLBWindow.userDrawSignal.connect( userDrawSignal );
maLBWindow->userDrawSignal.connect( userDrawSignal );
// for native widget rendering we must be able to detect this window type
SetType( WINDOW_LISTBOXWINDOW );
@@ -2155,10 +2155,10 @@ ImplListBox::ImplListBox( vcl::Window* pParent, WinBits nWinStyle ) :
mbAutoHScroll = ( nWinStyle & WB_AUTOHSCROLL );
mbEdgeBlending = false;
maLBWindow.SetScrollHdl( LINK( this, ImplListBox, LBWindowScrolled ) );
maLBWindow.SetMRUChangedHdl( LINK( this, ImplListBox, MRUChanged ) );
maLBWindow.SetEdgeBlending(GetEdgeBlending());
maLBWindow.Show();
maLBWindow->SetScrollHdl( LINK( this, ImplListBox, LBWindowScrolled ) );
maLBWindow->SetMRUChangedHdl( LINK( this, ImplListBox, MRUChanged ) );
maLBWindow->SetEdgeBlending(GetEdgeBlending());
maLBWindow->Show();
}
ImplListBox::~ImplListBox()
@@ -2170,11 +2170,11 @@ ImplListBox::~ImplListBox()
void ImplListBox::Clear()
{
maLBWindow.Clear();
maLBWindow->Clear();
if ( GetEntryList()->GetMRUCount() )
{
maLBWindow.GetEntryList()->SetMRUCount( 0 );
maLBWindow.SetSeparatorPos( LISTBOX_ENTRY_NOTFOUND );
maLBWindow->GetEntryList()->SetMRUCount( 0 );
maLBWindow->SetSeparatorPos( LISTBOX_ENTRY_NOTFOUND );
}
mpVScrollBar->SetThumbPos( 0 );
mpHScrollBar->SetThumbPos( 0 );
@@ -2184,7 +2184,7 @@ void ImplListBox::Clear()
sal_Int32 ImplListBox::InsertEntry( sal_Int32 nPos, const OUString& rStr )
{
ImplEntryType* pNewEntry = new ImplEntryType( rStr );
sal_Int32 nNewPos = maLBWindow.InsertEntry( nPos, pNewEntry );
sal_Int32 nNewPos = maLBWindow->InsertEntry( nPos, pNewEntry );
if (nNewPos == LISTBOX_ERROR)
{
delete pNewEntry;
@@ -2197,7 +2197,7 @@ sal_Int32 ImplListBox::InsertEntry( sal_Int32 nPos, const OUString& rStr )
sal_Int32 ImplListBox::InsertEntry( sal_Int32 nPos, const OUString& rStr, const Image& rImage )
{
ImplEntryType* pNewEntry = new ImplEntryType( rStr, rImage );
sal_Int32 nNewPos = maLBWindow.InsertEntry( nPos, pNewEntry );
sal_Int32 nNewPos = maLBWindow->InsertEntry( nPos, pNewEntry );
if (nNewPos == LISTBOX_ERROR)
{
delete pNewEntry;
@@ -2209,33 +2209,33 @@ sal_Int32 ImplListBox::InsertEntry( sal_Int32 nPos, const OUString& rStr, const
void ImplListBox::RemoveEntry( sal_Int32 nPos )
{
maLBWindow.RemoveEntry( nPos );
maLBWindow->RemoveEntry( nPos );
StateChanged( StateChangedType::DATA );
}
void ImplListBox::SetEntryFlags( sal_Int32 nPos, long nFlags )
{
maLBWindow.SetEntryFlags( nPos, nFlags );
maLBWindow->SetEntryFlags( nPos, nFlags );
}
void ImplListBox::SelectEntry( sal_Int32 nPos, bool bSelect )
{
maLBWindow.SelectEntry( nPos, bSelect );
maLBWindow->SelectEntry( nPos, bSelect );
}
void ImplListBox::SetNoSelection()
{
maLBWindow.DeselectAll();
maLBWindow->DeselectAll();
}
void ImplListBox::GetFocus()
{
maLBWindow.GrabFocus();
maLBWindow->GrabFocus();
}
vcl::Window* ImplListBox::GetPreferredKeyInputWindow()
{
return &maLBWindow;
return maLBWindow.get();
}
void ImplListBox::Resize()
@@ -2359,7 +2359,7 @@ void ImplListBox::ImplCheckScrollBars()
void ImplListBox::ImplInitScrollBars()
{
Size aOutSz = maLBWindow.GetOutputSizePixel();
Size aOutSz = maLBWindow->GetOutputSizePixel();
if ( mbVScroll )
{
@@ -2396,9 +2396,9 @@ void ImplListBox::ImplResizeControls()
// pb: #106948# explicit mirroring for calc
// Scrollbar on left or right side?
bool bMirroring = maLBWindow.IsMirroring();
bool bMirroring = maLBWindow->IsMirroring();
Point aWinPos( bMirroring && mbVScroll ? nSBWidth : 0, 0 );
maLBWindow.SetPosSizePixel( aWinPos, aInnerSz );
maLBWindow->SetPosSizePixel( aWinPos, aInnerSz );
// ScrollBarBox
if( mbVScroll && mbHScroll )
@@ -2450,7 +2450,7 @@ void ImplListBox::StateChanged( StateChangedType nType )
else if ( ( nType == StateChangedType::UPDATEMODE ) || ( nType == StateChangedType::DATA ) )
{
bool bUpdate = IsUpdateMode();
maLBWindow.SetUpdateMode( bUpdate );
maLBWindow->SetUpdateMode( bUpdate );
if ( bUpdate && IsReallyVisible() )
ImplCheckScrollBars();
}
@@ -2459,30 +2459,30 @@ void ImplListBox::StateChanged( StateChangedType nType )
mpHScrollBar->Enable( IsEnabled() );
mpVScrollBar->Enable( IsEnabled() );
mpScrollBarBox->Enable( IsEnabled() );
maLBWindow.Enable( IsEnabled() );
maLBWindow->Enable( IsEnabled() );
Invalidate();
}
else if ( nType == StateChangedType::ZOOM )
{
maLBWindow.SetZoom( GetZoom() );
maLBWindow->SetZoom( GetZoom() );
Resize();
}
else if ( nType == StateChangedType::CONTROLFONT )
{
maLBWindow.SetControlFont( GetControlFont() );
maLBWindow->SetControlFont( GetControlFont() );
}
else if ( nType == StateChangedType::CONTROLFOREGROUND )
{
maLBWindow.SetControlForeground( GetControlForeground() );
maLBWindow->SetControlForeground( GetControlForeground() );
}
else if ( nType == StateChangedType::CONTROLBACKGROUND )
{
maLBWindow.SetControlBackground( GetControlBackground() );
maLBWindow->SetControlBackground( GetControlBackground() );
}
else if( nType == StateChangedType::MIRRORING )
{
maLBWindow.EnableRTL( IsRTLEnabled() );
maLBWindow->EnableRTL( IsRTLEnabled() );
mpHScrollBar->EnableRTL( IsRTLEnabled() );
mpVScrollBar->EnableRTL( IsRTLEnabled() );
ImplResizeControls();
@@ -2515,9 +2515,15 @@ bool ImplListBox::Notify( NotifyEvent& rNEvt )
return nDone || Window::Notify( rNEvt );
}
void ImplListBox::dispose()
{
maLBWindow.clear();
Control::dispose();
}
const Wallpaper& ImplListBox::GetDisplayBackground() const
{
return maLBWindow.GetDisplayBackground();
return maLBWindow->GetDisplayBackground();
}
bool ImplListBox::HandleWheelAsCursorTravel( const CommandEvent& rCEvt )
@@ -2542,7 +2548,7 @@ void ImplListBox::SetMRUEntries( const OUString& rEntries, sal_Unicode cSep )
// Remove old MRU entries
for ( sal_Int32 n = GetEntryList()->GetMRUCount();n; )
maLBWindow.RemoveEntry( --n );
maLBWindow->RemoveEntry( --n );
sal_Int32 nMRUCount = 0;
sal_Int32 nIndex = 0;
@@ -2553,7 +2559,7 @@ void ImplListBox::SetMRUEntries( const OUString& rEntries, sal_Unicode cSep )
if ( GetEntryList()->FindEntry( aEntry ) != LISTBOX_ENTRY_NOTFOUND )
{
ImplEntryType* pNewEntry = new ImplEntryType( aEntry );
maLBWindow.GetEntryList()->InsertEntry( nMRUCount++, pNewEntry, false );
maLBWindow->GetEntryList()->InsertEntry( nMRUCount++, pNewEntry, false );
bChanges = true;
}
}
@@ -2561,7 +2567,7 @@ void ImplListBox::SetMRUEntries( const OUString& rEntries, sal_Unicode cSep )
if ( bChanges )
{
maLBWindow.GetEntryList()->SetMRUCount( nMRUCount );
maLBWindow->GetEntryList()->SetMRUCount( nMRUCount );
SetSeparatorPos( nMRUCount ? nMRUCount-1 : 0 );
StateChanged( StateChangedType::DATA );
}
@@ -2584,7 +2590,7 @@ void ImplListBox::SetEdgeBlending(bool bNew)
if(mbEdgeBlending != bNew)
{
mbEdgeBlending = bNew;
maLBWindow.SetEdgeBlending(GetEdgeBlending());
maLBWindow->SetEdgeBlending(GetEdgeBlending());
}
}
@@ -2959,13 +2965,13 @@ void ImplListBoxFloatingWindow::setPosSizePixel( long nX, long nY, long nWidth,
// this the presence of the vertical Scrollbar has to be known.
mpImplLB->SetSizePixel( GetOutputSizePixel() );
((vcl::Window*)mpImplLB)->Resize();
((vcl::Window&)mpImplLB->GetMainWindow()).Resize();
((vcl::Window*)mpImplLB->GetMainWindow().get())->Resize();
}
}
void ImplListBoxFloatingWindow::Resize()
{
mpImplLB->GetMainWindow().ImplClearLayoutData();
mpImplLB->GetMainWindow()->ImplClearLayoutData();
FloatingWindow::Resize();
}
@@ -3085,12 +3091,12 @@ void ImplListBoxFloatingWindow::StartFloat( bool bStartTracking )
mpImplLB->ShowProminentEntry( nPos );
if( bStartTracking )
mpImplLB->GetMainWindow().EnableMouseMoveSelect( true );
mpImplLB->GetMainWindow()->EnableMouseMoveSelect( true );
if ( mpImplLB->GetMainWindow().IsGrabFocusAllowed() )
mpImplLB->GetMainWindow().GrabFocus();
if ( mpImplLB->GetMainWindow()->IsGrabFocusAllowed() )
mpImplLB->GetMainWindow()->GrabFocus();
mpImplLB->GetMainWindow().ImplClearLayoutData();
mpImplLB->GetMainWindow()->ImplClearLayoutData();
}
}
diff --git a/vcl/source/control/lstbox.cxx b/vcl/source/control/lstbox.cxx
index 3669e18..ee856fc 100644
--- a/vcl/source/control/lstbox.cxx
+++ b/vcl/source/control/lstbox.cxx
@@ -39,7 +39,7 @@
void ListBox::EnableQuickSelection( const bool& b )
{
mpImplLB->GetMainWindow().EnableQuickSelection(b);
mpImplLB->GetMainWindow()->EnableQuickSelection(b);
}
ListBox::ListBox(WindowType nType)
@@ -173,7 +173,7 @@ void ListBox::ImplInit( vcl::Window* pParent, WinBits nStyle )
mpImplLB->SetSelectionChangedHdl( LINK( this, ListBox, ImplSelectionChangedHdl ) );
}
else
mpImplLB->GetMainWindow().AllowGrabFocus( true );
mpImplLB->GetMainWindow()->AllowGrabFocus( true );
SetCompoundControl( true );
}
@@ -311,7 +311,7 @@ void ListBox::ImplClickButtonHandler( Control* )
ImplClearLayoutData();
if( mpImplLB )
mpImplLB->GetMainWindow().ImplClearLayoutData();
mpImplLB->GetMainWindow()->ImplClearLayoutData();
if( mpImplWin )
mpImplWin->ImplClearLayoutData();
}
@@ -341,7 +341,7 @@ IMPL_LINK_NOARG(ListBox, ImplPopupModeEndHdl)
ImplClearLayoutData();
if( mpImplLB )
mpImplLB->GetMainWindow().ImplClearLayoutData();
mpImplLB->GetMainWindow()->ImplClearLayoutData();
if( mpImplWin )
mpImplWin->ImplClearLayoutData();
@@ -369,11 +369,11 @@ void ListBox::ToggleDropDown()
void ListBox::Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags )
{
mpImplLB->GetMainWindow().ImplInitSettings( true, true, true );
mpImplLB->GetMainWindow()->ImplInitSettings( true, true, true );
Point aPos = pDev->LogicToPixel( rPos );
Size aSize = pDev->LogicToPixel( rSize );
vcl::Font aFont = mpImplLB->GetMainWindow().GetDrawPixelFont( pDev );
vcl::Font aFont = mpImplLB->GetMainWindow()->GetDrawPixelFont( pDev );
OutDevType eOutDevType = pDev->GetOutDevType();
pDev->Push();
@@ -691,7 +691,7 @@ void ListBox::Resize()
void ListBox::FillLayoutData() const
{
mpControlData->mpLayoutData = new vcl::ControlLayoutData();
const Control& rMainWin = mpImplLB->GetMainWindow();
const ImplListBoxWindowPtr rMainWin = mpImplLB->GetMainWindow();
if( mpFloatWin )
{
// Dropdown mode
@@ -699,14 +699,14 @@ void ListBox::FillLayoutData() const
mpImplWin->SetLayoutDataParent( this );
if( mpFloatWin->IsReallyVisible() )
{
AppendLayoutData( rMainWin );
rMainWin.SetLayoutDataParent( this );
AppendLayoutData( *(rMainWin.get()) );
rMainWin->SetLayoutDataParent( this );
}
}
else
{
AppendLayoutData( rMainWin );
rMainWin.SetLayoutDataParent( this );
AppendLayoutData( *(rMainWin.get()) );
rMainWin->SetLayoutDataParent( this );
}
}
@@ -721,16 +721,16 @@ long ListBox::GetIndexForPoint( const Point& rPoint, sal_Int32& rPos ) const
{
// Point must be either in main list window
// or in impl window (dropdown case)
ImplListBoxWindow& rMain = mpImplLB->GetMainWindow();
ImplListBoxWindowPtr rMain = mpImplLB->GetMainWindow();
// Convert coordinates to ImplListBoxWindow pixel coordinate space
Point aConvPoint = LogicToPixel( rPoint );
aConvPoint = OutputToAbsoluteScreenPixel( aConvPoint );
aConvPoint = rMain.AbsoluteScreenToOutputPixel( aConvPoint );
aConvPoint = rMain.PixelToLogic( aConvPoint );
aConvPoint = rMain->AbsoluteScreenToOutputPixel( aConvPoint );
aConvPoint = rMain->PixelToLogic( aConvPoint );
// Try to find entry
sal_Int32 nEntry = rMain.GetEntryPosForPoint( aConvPoint );
sal_Int32 nEntry = rMain->GetEntryPosForPoint( aConvPoint );
if( nEntry == LISTBOX_ENTRY_NOTFOUND )
{
// Not found, maybe dropdown case
@@ -803,7 +803,7 @@ void ListBox::StateChanged( StateChangedType nType )
if ( mpImplWin )
{
mpImplWin->SetZoom( GetZoom() );
mpImplWin->SetFont( mpImplLB->GetMainWindow().GetFont() );
mpImplWin->SetFont( mpImplLB->GetMainWindow()->GetFont() );
mpImplWin->Invalidate();
}
Resize();
@@ -814,7 +814,7 @@ void ListBox::StateChanged( StateChangedType nType )
if ( mpImplWin )
{
mpImplWin->SetControlFont( GetControlFont() );
mpImplWin->SetFont( mpImplLB->GetMainWindow().GetFont() );
mpImplWin->SetFont( mpImplLB->GetMainWindow()->GetFont() );
mpImplWin->Invalidate();
}
Resize();
@@ -826,7 +826,7 @@ void ListBox::StateChanged( StateChangedType nType )
{
mpImplWin->SetControlForeground( GetControlForeground() );
mpImplWin->SetTextColor( GetControlForeground() );
mpImplWin->SetFont( mpImplLB->GetMainWindow().GetFont() );
mpImplWin->SetFont( mpImplLB->GetMainWindow()->GetFont() );
mpImplWin->Invalidate();
}
}
@@ -843,17 +843,17 @@ void ListBox::StateChanged( StateChangedType nType )
}
else
{
mpImplWin->SetBackground( mpImplLB->GetMainWindow().GetControlBackground() );
mpImplWin->SetControlBackground( mpImplLB->GetMainWindow().GetControlBackground() );
mpImplWin->SetBackground( mpImplLB->GetMainWindow()->GetControlBackground() );
mpImplWin->SetControlBackground( mpImplLB->GetMainWindow()->GetControlBackground() );
}
mpImplWin->SetFont( mpImplLB->GetMainWindow().GetFont() );
mpImplWin->SetFont( mpImplLB->GetMainWindow()->GetFont() );
mpImplWin->Invalidate();
}
}
else if ( nType == StateChangedType::STYLE )
{
SetStyle( ImplInitStyle( GetStyle() ) );
mpImplLB->GetMainWindow().EnableSort( ( GetStyle() & WB_SORT ) ? true : false );
mpImplLB->GetMainWindow()->EnableSort( ( GetStyle() & WB_SORT ) ? true : false );
bool bSimpleMode = ( GetStyle() & WB_SIMPLEMODE ) ? true : false;
mpImplLB->SetMultiSelectionSimpleMode( bSimpleMode );
}
@@ -1157,8 +1157,8 @@ bool ListBox::IsInDropDown() const
Rectangle ListBox::GetBoundingRectangle( sal_Int32 nItem ) const
{
Rectangle aRect = mpImplLB->GetMainWindow().GetBoundingRectangle( nItem );
Rectangle aOffset = mpImplLB->GetMainWindow().GetWindowExtentsRelative( (vcl::Window*)this );
Rectangle aRect = mpImplLB->GetMainWindow()->GetBoundingRectangle( nItem );
Rectangle aOffset = mpImplLB->GetMainWindow()->GetWindowExtentsRelative( (vcl::Window*)this );
aRect.Move( aOffset.TopLeft().X(), aOffset.TopLeft().Y() );
return aRect;
}
@@ -1180,7 +1180,7 @@ void ListBox::EnableMultiSelection( bool bMulti, bool bStackSelection )
// In a MultiSelection, we can't see us travelling without focus
if ( mpFloatWin )
mpImplLB->GetMainWindow().AllowGrabFocus( bMulti );
mpImplLB->GetMainWindow()->AllowGrabFocus( bMulti );
}
bool ListBox::IsMultiSelectionEnabled() const
@@ -1348,7 +1348,7 @@ void ListBox::GetMaxVisColumnsAndLines( sal_uInt16& rnCols, sal_uInt16& rnLines
float nCharWidth = approximate_char_width();
if ( !IsDropDownBox() )
{
Size aOutSz = mpImplLB->GetMainWindow().GetOutputSizePixel();
Size aOutSz = mpImplLB->GetMainWindow()->GetOutputSizePixel();
rnCols = (sal_uInt16) (aOutSz.Width()/nCharWidth);
rnLines = (sal_uInt16) (aOutSz.Height()/mpImplLB->GetEntryHeight());
}
@@ -1371,22 +1371,22 @@ void ListBox::UserDraw( const UserDrawEvent& )
void ListBox::DrawEntry( const UserDrawEvent& rEvt, bool bDrawImage, bool bDrawText, bool bDrawTextAtImagePos )
{
if ( rEvt.GetDevice() == &mpImplLB->GetMainWindow() )
mpImplLB->GetMainWindow().DrawEntry( rEvt.GetItemId(), bDrawImage, bDrawText, bDrawTextAtImagePos );
if ( rEvt.GetDevice() == mpImplLB->GetMainWindow().get() )
mpImplLB->GetMainWindow()->DrawEntry( rEvt.GetItemId(), bDrawImage, bDrawText, bDrawTextAtImagePos );
else if ( rEvt.GetDevice() == mpImplWin )
mpImplWin->DrawEntry( bDrawImage, bDrawText, bDrawTextAtImagePos );
}
void ListBox::SetUserItemSize( const Size& rSz )
{
mpImplLB->GetMainWindow().SetUserItemSize( rSz );
mpImplLB->GetMainWindow()->SetUserItemSize( rSz );
if ( mpImplWin )
mpImplWin->SetUserItemSize( rSz );
}
void ListBox::EnableUserDraw( bool bUserDraw )
{
mpImplLB->GetMainWindow().EnableUserDraw( bUserDraw );
mpImplLB->GetMainWindow()->EnableUserDraw( bUserDraw );
if ( mpImplWin )
mpImplWin->EnableUserDraw( bUserDraw );
}
diff --git a/vcl/source/window/menubarwindow.cxx b/vcl/source/window/menubarwindow.cxx
index 553baa4..126e8b9 100644
--- a/vcl/source/window/menubarwindow.cxx
+++ b/vcl/source/window/menubarwindow.cxx
@@ -117,9 +117,9 @@ void DecoToolBox::SetImages( long nMaxHeight, bool bForce )
MenuBarWindow::MenuBarWindow( vcl::Window* pParent ) :
Window( pParent, 0 ),
aCloseBtn(this),
aFloatBtn( this, WB_NOPOINTERFOCUS | WB_SMALLSTYLE | WB_RECTSTYLE ),
aHideBtn( this, WB_NOPOINTERFOCUS | WB_SMALLSTYLE | WB_RECTSTYLE )
aCloseBtn(new DecoToolBox(this)),
aFloatBtn(new PushButton( this, WB_NOPOINTERFOCUS | WB_SMALLSTYLE | WB_RECTSTYLE )),
aHideBtn(new PushButton(this, WB_NOPOINTERFOCUS | WB_SMALLSTYLE | WB_RECTSTYLE ))
{
SetType( WINDOW_MENUBARWINDOW );
pMenu = NULL;
@@ -137,25 +137,25 @@ MenuBarWindow::MenuBarWindow( vcl::Window* pParent ) :
if( pResMgr )
{
BitmapEx aBitmap( ResId( SV_RESID_BITMAP_CLOSEDOC, *pResMgr ) );
aCloseBtn.maImage = Image(aBitmap);
aCloseBtn->maImage = Image(aBitmap);
aCloseBtn.SetOutStyle(TOOLBOX_STYLE_FLAT);
aCloseBtn.SetBackground();
aCloseBtn.SetPaintTransparent(true);
aCloseBtn.SetParentClipMode(PARENTCLIPMODE_NOCLIP);
aCloseBtn->SetOutStyle(TOOLBOX_STYLE_FLAT);
aCloseBtn->SetBackground();
aCloseBtn->SetPaintTransparent(true);
aCloseBtn->SetParentClipMode(PARENTCLIPMODE_NOCLIP);
aCloseBtn.InsertItem(IID_DOCUMENTCLOSE, aCloseBtn.maImage, ToolBoxItemBits::NONE);
aCloseBtn.SetSelectHdl(LINK(this, MenuBarWindow, CloseHdl));
aCloseBtn.AddEventListener(LINK(this, MenuBarWindow, ToolboxEventHdl));
aCloseBtn.SetQuickHelpText(IID_DOCUMENTCLOSE, ResId(SV_HELPTEXT_CLOSEDOCUMENT, *pResMgr).toString());
aCloseBtn->InsertItem(IID_DOCUMENTCLOSE, aCloseBtn->maImage, ToolBoxItemBits::NONE);
aCloseBtn->SetSelectHdl(LINK(this, MenuBarWindow, CloseHdl));
aCloseBtn->AddEventListener(LINK(this, MenuBarWindow, ToolboxEventHdl));
aCloseBtn->SetQuickHelpText(IID_DOCUMENTCLOSE, ResId(SV_HELPTEXT_CLOSEDOCUMENT, *pResMgr).toString());
aFloatBtn.SetClickHdl( LINK( this, MenuBarWindow, FloatHdl ) );
aFloatBtn.SetSymbol( SymbolType::FLOAT );
aFloatBtn.SetQuickHelpText( ResId(SV_HELPTEXT_RESTORE, *pResMgr).toString() );
aFloatBtn->SetClickHdl( LINK( this, MenuBarWindow, FloatHdl ) );
aFloatBtn->SetSymbol( SymbolType::FLOAT );
aFloatBtn->SetQuickHelpText( ResId(SV_HELPTEXT_RESTORE, *pResMgr).toString() );
aHideBtn.SetClickHdl( LINK( this, MenuBarWindow, HideHdl ) );
aHideBtn.SetSymbol( SymbolType::HIDE );
aHideBtn.SetQuickHelpText( ResId(SV_HELPTEXT_MINIMIZE, *pResMgr).toString() );
aHideBtn->SetClickHdl( LINK( this, MenuBarWindow, HideHdl ) );
aHideBtn->SetSymbol( SymbolType::HIDE );
aHideBtn->SetQuickHelpText( ResId(SV_HELPTEXT_MINIMIZE, *pResMgr).toString() );
}
ImplInitStyleSettings();
@@ -165,7 +165,7 @@ MenuBarWindow::MenuBarWindow( vcl::Window* pParent ) :
MenuBarWindow::~MenuBarWindow()
{
aCloseBtn.RemoveEventListener(LINK(this, MenuBarWindow, ToolboxEventHdl));
aCloseBtn->RemoveEventListener(LINK(this, MenuBarWindow, ToolboxEventHdl));
RemoveEventListener(LINK(this, MenuBarWindow, ShowHideListener));
}
@@ -177,10 +177,10 @@ void MenuBarWindow::SetMenu( MenuBar* pMen )
ImplInitMenuWindow( this, true, true );
if ( pMen )
{
aCloseBtn.ShowItem(IID_DOCUMENTCLOSE, pMen->HasCloseButton());
aCloseBtn.Show(pMen->HasCloseButton() || !m_aAddButtons.empty());
aFloatBtn.Show(pMen->HasFloatButton());
aHideBtn.Show(pMen->HasHideButton());
aCloseBtn->ShowItem(IID_DOCUMENTCLOSE, pMen->HasCloseButton());
aCloseBtn->Show(pMen->HasCloseButton() || !m_aAddButtons.empty());
aFloatBtn->Show(pMen->HasFloatButton());
aHideBtn->Show(pMen->HasHideButton());
}
Invalidate();
@@ -201,16 +201,16 @@ void MenuBarWindow::SetHeight(long nHeight)
void MenuBarWindow::ShowButtons( bool bClose, bool bFloat, bool bHide )
{
aCloseBtn.ShowItem(IID_DOCUMENTCLOSE, bClose);
aCloseBtn.Show(bClose || !m_aAddButtons.empty());
aFloatBtn.Show( bFloat );
aHideBtn.Show( bHide );
aCloseBtn->ShowItem(IID_DOCUMENTCLOSE, bClose);
aCloseBtn->Show(bClose || !m_aAddButtons.empty());
aFloatBtn->Show( bFloat );
aHideBtn->Show( bHide );
Resize();
}
Size MenuBarWindow::MinCloseButtonSize()
{
return aCloseBtn.getMinSize();
return aCloseBtn->getMinSize();
}
IMPL_LINK_NOARG(MenuBarWindow, CloseHdl)
@@ -218,7 +218,7 @@ IMPL_LINK_NOARG(MenuBarWindow, CloseHdl)
if( ! pMenu )
return 0;
if( aCloseBtn.GetCurItemId() == IID_DOCUMENTCLOSE )
if( aCloseBtn->GetCurItemId() == IID_DOCUMENTCLOSE )
{
// #i106052# call close hdl asynchronously to ease handler implementation
// this avoids still being in the handler while the DecoToolBox already
@@ -227,12 +227,12 @@ IMPL_LINK_NOARG(MenuBarWindow, CloseHdl)
}
else
{
std::map<sal_uInt16,AddButtonEntry>::iterator it = m_aAddButtons.find(aCloseBtn.GetCurItemId());
std::map<sal_uInt16,AddButtonEntry>::iterator it = m_aAddButtons.find(aCloseBtn->GetCurItemId());
if( it != m_aAddButtons.end() )
{
MenuBar::MenuBarButtonCallbackArg aArg;
aArg.nId = it->first;
aArg.bHighlight = (aCloseBtn.GetHighlightItemId() == it->first);
aArg.bHighlight = (aCloseBtn->GetHighlightItemId() == it->first);
aArg.pMenuBar = dynamic_cast<MenuBar*>(pMenu);
return it->second.m_aSelectLink.Call( &aArg );
}
@@ -250,11 +250,11 @@ IMPL_LINK( MenuBarWindow, ToolboxEventHdl, VclWindowEvent*, pEvent )
aArg.bHighlight = (pEvent->GetId() == VCLEVENT_TOOLBOX_HIGHLIGHT);
aArg.pMenuBar = dynamic_cast<MenuBar*>(pMenu);
if( pEvent->GetId() == VCLEVENT_TOOLBOX_HIGHLIGHT )
aArg.nId = aCloseBtn.GetHighlightItemId();
aArg.nId = aCloseBtn->GetHighlightItemId();
else if( pEvent->GetId() == VCLEVENT_TOOLBOX_HIGHLIGHTOFF )
{
sal_uInt16 nPos = static_cast< sal_uInt16 >(reinterpret_cast<sal_IntPtr>(pEvent->GetData()));
aArg.nId = aCloseBtn.GetItemId(nPos);
aArg.nId = aCloseBtn->GetItemId(nPos);
}
std::map< sal_uInt16, AddButtonEntry >::iterator it = m_aAddButtons.find( aArg.nId );
if( it != m_aAddButtons.end() )
@@ -913,30 +913,30 @@ void MenuBarWindow::Resize()
long nX = aOutSz.Width()-3;
long nY = 2;
if ( aCloseBtn.IsVisible() )
if ( aCloseBtn->IsVisible() )
{
aCloseBtn.Hide();
aCloseBtn.SetImages(n);
Size aTbxSize( aCloseBtn.CalcWindowSizePixel() );
aCloseBtn->Hide();
aCloseBtn->SetImages(n);
Size aTbxSize( aCloseBtn->CalcWindowSizePixel() );
nX -= aTbxSize.Width();
long nTbxY = (aOutSz.Height() - aTbxSize.Height())/2;
aCloseBtn.setPosSizePixel(nX, nTbxY, aTbxSize.Width(), aTbxSize.Height());
aCloseBtn->setPosSizePixel(nX, nTbxY, aTbxSize.Width(), aTbxSize.Height());
nX -= 3;
aCloseBtn.Show();
aCloseBtn->Show();
}
if ( aFloatBtn.IsVisible() )
if ( aFloatBtn->IsVisible() )
{
nX -= n;
aFloatBtn.setPosSizePixel( nX, nY, n, n );
aFloatBtn->setPosSizePixel( nX, nY, n, n );
}
if ( aHideBtn.IsVisible() )
if ( aHideBtn->IsVisible() )
{
nX -= n;
aHideBtn.setPosSizePixel( nX, nY, n, n );
aHideBtn->setPosSizePixel( nX, nY, n, n );
}
aFloatBtn.SetSymbol( SymbolType::FLOAT );
aHideBtn.SetSymbol( SymbolType::HIDE );
aFloatBtn->SetSymbol( SymbolType::FLOAT );
aHideBtn->SetSymbol( SymbolType::HIDE );
Invalidate();
}
@@ -1057,6 +1057,15 @@ void MenuBarWindow::GetFocus()
}
}
void MenuBarWindow::dispose()
{
aCloseBtn.disposeAndClear();
aFloatBtn.disposeAndClear();
aHideBtn.disposeAndClear();
Window::dispose();
}
::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > MenuBarWindow::CreateAccessible()
{
::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xAcc;
@@ -1083,9 +1092,9 @@ sal_uInt16 MenuBarWindow::AddMenuBarButton( const Image& i_rImage, const Link& i
AddButtonEntry& rNewEntry = m_aAddButtons[nId];
rNewEntry.m_nId = nId;
rNewEntry.m_aSelectLink = i_rLink;
aCloseBtn.InsertItem(nId, i_rImage, ToolBoxItemBits::NONE, 0);
aCloseBtn.calcMinSize();
ShowButtons(aCloseBtn.IsItemVisible(IID_DOCUMENTCLOSE), aFloatBtn.IsVisible(), aHideBtn.IsVisible());
aCloseBtn->InsertItem(nId, i_rImage, ToolBoxItemBits::NONE, 0);
aCloseBtn->calcMinSize();
ShowButtons(aCloseBtn->IsItemVisible(IID_DOCUMENTCLOSE), aFloatBtn->IsVisible(), aHideBtn->IsVisible());
LayoutChanged();
if( pMenu->mpSalMenu )
@@ -1118,8 +1127,8 @@ Rectangle MenuBarWindow::GetMenuBarButtonRectPixel( sal_uInt16 nId )
if( aRect.IsEmpty() )
{
aRect = aCloseBtn.GetItemRect(nId);
Point aOffset = aCloseBtn.OutputToScreenPixel(Point());
aRect = aCloseBtn->GetItemRect(nId);
Point aOffset = aCloseBtn->OutputToScreenPixel(Point());
aRect.Move( aOffset.X(), aOffset.Y() );
}
}
@@ -1128,10 +1137,10 @@ Rectangle MenuBarWindow::GetMenuBarButtonRectPixel( sal_uInt16 nId )
void MenuBarWindow::RemoveMenuBarButton( sal_uInt16 nId )
{
sal_uInt16 nPos = aCloseBtn.GetItemPos(nId);
aCloseBtn.RemoveItem(nPos);
sal_uInt16 nPos = aCloseBtn->GetItemPos(nId);
aCloseBtn->RemoveItem(nPos);
m_aAddButtons.erase( nId );
aCloseBtn.calcMinSize();
aCloseBtn->calcMinSize();
LayoutChanged();
if( pMenu->mpSalMenu )
diff --git a/vcl/source/window/menubarwindow.hxx b/vcl/source/window/menubarwindow.hxx
index 46c79ac..b347847 100644
--- a/vcl/source/window/menubarwindow.hxx
+++ b/vcl/source/window/menubarwindow.hxx
@@ -52,6 +52,9 @@ public:
Image maImage;
};
typedef VclReference<DecoToolBox> DecoToolBoxPtr;
/** Class that implements the actual window of the menu bar.
*/
class MenuBarWindow : public vcl::Window, public IMenuBarWindow
@@ -62,32 +65,32 @@ class MenuBarWindow : public vcl::Window, public IMenuBarWindow
private:
struct AddButtonEntry
{
sal_uInt16 m_nId;
Link m_aSelectLink;
Link m_aHighlightLink;
sal_uInt16 m_nId;
Link m_aSelectLink;
Link m_aHighlightLink;
AddButtonEntry() : m_nId( 0 ) {}
};
Menu* pMenu;
PopupMenu* pActivePopup;
sal_uInt16 nHighlightedItem;
sal_uInt16 nRolloveredItem;
sal_uLong nSaveFocusId;
sal_uInt16 nHighlightedItem;
sal_uInt16 nRolloveredItem;
sal_uLong nSaveFocusId;
bool mbAutoPopup;
bool bIgnoreFirstMove;
bool bStayActive;
DecoToolBox aCloseBtn;
PushButton aFloatBtn;
PushButton aHideBtn;
DecoToolBoxPtr aCloseBtn;
PushButtonPtr aFloatBtn;
PushButtonPtr aHideBtn;
std::map< sal_uInt16, AddButtonEntry > m_aAddButtons;
void HighlightItem( sal_uInt16 nPos, bool bHighlight );
virtual void ChangeHighlightItem(sal_uInt16 n, bool bSelectPopupEntry, bool bAllowRestoreFocus = true, bool bDefaultToDocument = true) SAL_OVERRIDE;
sal_uInt16 ImplFindEntry( const Point& rMousePos ) const;
sal_uInt16 ImplFindEntry( const Point& rMousePos ) const;
void ImplCreatePopup( bool bPreSelectFirst );
virtual bool HandleKeyEvent(const KeyEvent& rKEvent, bool bFromMenu = true) SAL_OVERRIDE;
Rectangle ImplGetItemRect( sal_uInt16 nPos );
@@ -104,6 +107,7 @@ private:
void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
void LoseFocus() SAL_OVERRIDE;
void GetFocus() SAL_OVERRIDE;
virtual void dispose() SAL_OVERRIDE;
public:
MenuBarWindow( vcl::Window* pParent );
diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx
index c4ea5c7..0015caf 100644
--- a/vcl/source/window/printdlg.cxx
+++ b/vcl/source/window/printdlg.cxx
@@ -67,17 +67,17 @@ PrintDialog::PrintPreviewWindow::PrintPreviewWindow( vcl::Window* i_pParent )
, maPageVDev( *this )
, maToolTipString(VclResId( SV_PRINT_PRINTPREVIEW_TXT).toString())
, mbGreyscale( false )
, maHorzDim( this, WB_HORZ | WB_CENTER )
, maVertDim( this, WB_VERT | WB_VCENTER )
, maHorzDim(new FixedLine(this, WB_HORZ | WB_CENTER))
, maVertDim(new FixedLine(this, WB_VERT | WB_VCENTER))
{
SetPaintTransparent( true );
SetBackground();
maPageVDev.SetBackground( Color( COL_WHITE ) );
maHorzDim.Show();
maVertDim.Show();
maHorzDim->Show();
maVertDim->Show();
maHorzDim.SetText( OUString( "2.0in" ) );
maVertDim.SetText( OUString( "2.0in" ) );
maHorzDim->SetText( OUString( "2.0in" ) );
maVertDim->SetText( OUString( "2.0in" ) );
}
PrintDialog::PrintPreviewWindow::~PrintPreviewWindow()
@@ -99,7 +99,7 @@ void PrintDialog::PrintPreviewWindow::DataChanged( const DataChangedEvent& i_rDC
void PrintDialog::PrintPreviewWindow::Resize()
{
Size aNewSize( GetSizePixel() );
long nTextHeight = maHorzDim.GetTextHeight();
long nTextHeight = maHorzDim->GetTextHeight();
// leave small space for decoration
aNewSize.Width() -= nTextHeight + 2;
aNewSize.Height() -= nTextHeight + 2;
@@ -145,16 +145,16 @@ void PrintDialog::PrintPreviewWindow::Resize()
// position dimension lines
Point aRef( nTextHeight + (aNewSize.Width() - maPreviewSize.Width())/2,
nTextHeight + (aNewSize.Height() - maPreviewSize.Height())/2 );
maHorzDim.SetPosSizePixel( Point( aRef.X(), aRef.Y() - nTextHeight ),
maHorzDim->SetPosSizePixel( Point( aRef.X(), aRef.Y() - nTextHeight ),
Size( maPreviewSize.Width(), nTextHeight ) );
maVertDim.SetPosSizePixel( Point( aRef.X() - nTextHeight, aRef.Y() ),
maVertDim->SetPosSizePixel( Point( aRef.X() - nTextHeight, aRef.Y() ),
Size( nTextHeight, maPreviewSize.Height() ) );
}
void PrintDialog::PrintPreviewWindow::Paint( const Rectangle& )
{
long nTextHeight = maHorzDim.GetTextHeight();
long nTextHeight = maHorzDim->GetTextHeight();
Size aSize( GetSizePixel() );
Point aOffset( (aSize.Width() - maPreviewSize.Width() + nTextHeight) / 2 ,
(aSize.Height() - maPreviewSize.Height() + nTextHeight) / 2 );
@@ -241,19 +241,26 @@ void PrintDialog::PrintPreviewWindow::setPreview( const GDIMetaFile& i_rNewPrevi
aBuf.append( i_rPaperName );
aBuf.append( ')' );
}
maHorzDim.SetText( aBuf.makeStringAndClear() );
maHorzDim->SetText( aBuf.makeStringAndClear() );
aNumText = rLocWrap.getNum( aLogicPaperSize.Height(), nDigits );
aBuf.append( aNumText )
.append( sal_Unicode( ' ' ) );
aBuf.appendAscii( eUnit == MAP_MM ? "mm" : "in" );
maVertDim.SetText( aBuf.makeStringAndClear() );
maVertDim->SetText( aBuf.makeStringAndClear() );
Resize();
preparePreviewBitmap();
Invalidate();
}
void PrintDialog::PrintPreviewWindow::dispose()
{
maHorzDim.disposeAndClear();
maVertDim.disposeAndClear();
Window::dispose();
}
void PrintDialog::PrintPreviewWindow::preparePreviewBitmap()
{
GDIMetaFile aMtf( maMtf );
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index 6fdb764..156cc66 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -131,14 +131,8 @@ namespace
}
#endif
Window::~Window()
void Window::dispose()
{
vcl::LazyDeletor<vcl::Window>::Undelete( this );
DBG_ASSERT( !mpWindowImpl->mbInDtor, "~Window - already in DTOR!" );
dispose();
// remove Key and Mouse events issued by Application::PostKey/MouseEvent
Application::RemoveMouseAndKeyEvents( this );
@@ -568,6 +562,13 @@ Window::~Window()
delete mpWindowImpl; mpWindowImpl = NULL;
}
Window::~Window()
{
vcl::LazyDeletor<vcl::Window>::Undelete( this );
DBG_ASSERT( !mpWindowImpl->mbInDtor, "~Window - already in DTOR!" );
}
} /* namespace vcl */
WindowImpl::WindowImpl( WindowType nType )
diff --git a/vcl/unx/generic/app/i18n_status.cxx b/vcl/unx/generic/app/i18n_status.cxx
index e957671..85e9e50 100644
--- a/vcl/unx/generic/app/i18n_status.cxx
+++ b/vcl/unx/generic/app/i18n_status.cxx
@@ -77,7 +77,7 @@ namespace vcl {
class XIMStatusWindow : public StatusWindow
{
FixedText m_aStatusText;
FixedTextPtr m_aStatusText;
SalFrame* m_pLastParent;
Size m_aWindowSize;
bool m_bAnchoredAtRight;
@@ -104,6 +104,7 @@ public:
virtual void setText( const OUString & ) SAL_OVERRIDE;
virtual void show( bool bShow, I18NStatus::ShowReason eReason ) SAL_OVERRIDE;
virtual void toggle( bool bOn ) SAL_OVERRIDE;
virtual void dispose() SAL_OVERRIDE;
// override WorkWindow::DataChanged
virtual void DataChanged( const DataChangedEvent& rEvt ) SAL_OVERRIDE;
@@ -113,7 +114,7 @@ public:
XIMStatusWindow::XIMStatusWindow( bool bOn ) :
StatusWindow( WB_BORDER | WB_SYSTEMFLOATWIN | WB_TOOLTIPWIN ),
m_aStatusText( this, 0 ),
m_aStatusText(new FixedText(this, 0)),
m_pLastParent( NULL ),
m_bAnchoredAtRight( false ),
m_bDelayedShow( false ),
@@ -136,10 +137,16 @@ void XIMStatusWindow::toggle( bool bOn )
show( bOn, I18NStatus::contextmap );
}
void XIMStatusWindow::dispose()
{
m_aStatusText.disposeAndClear();
StatusWindow::dispose();
};
void XIMStatusWindow::layout()
{
m_aWindowSize.Width() = m_aStatusText.GetTextWidth( m_aStatusText.GetText() )+8;
Font aFont( m_aStatusText.GetFont() );
m_aWindowSize.Width() = m_aStatusText->GetTextWidth( m_aStatusText->GetText() )+8;
Font aFont( m_aStatusText->GetFont() );
m_aWindowSize.Height() = aFont.GetHeight()+10;
m_aWindowSize = LogicToPixel( m_aWindowSize );
@@ -147,9 +154,9 @@ void XIMStatusWindow::layout()
aControlSize.Width() -= 4;
aControlSize.Height() -= 4;
m_aStatusText.SetPosSizePixel( Point( 1, 1 ), aControlSize );
m_aStatusText.SetFont( aFont );
m_aStatusText.Show( true );
m_aStatusText->SetPosSizePixel( Point( 1, 1 ), aControlSize );
m_aStatusText->SetFont( aFont );
m_aStatusText->Show( true );
if (m_bAnchoredAtRight && IsVisible())
{
@@ -181,7 +188,7 @@ bool XIMStatusWindow::checkLastParent() const
void XIMStatusWindow::DataChanged( const DataChangedEvent& )
{
m_aStatusText.SetSettings( GetSettings() );
m_aStatusText->SetSettings( GetSettings() );
layout();
}
@@ -261,7 +268,7 @@ IMPL_LINK_NOARG(XIMStatusWindow, DelayedShowHdl)
if( m_bDelayedShow )
{
Size aControlSize( m_aWindowSize.Width()-4, m_aWindowSize.Height()-4 );
m_aStatusText.SetPosSizePixel( Point( 1, 1 ), aControlSize );
m_aStatusText->SetPosSizePixel( Point( 1, 1 ), aControlSize );
Point aPoint = updatePosition();
pStatusFrame->SetPosSize( aPoint.X(), aPoint.Y(), m_aWindowSize.Width(), m_aWindowSize.Height(), SAL_FRAME_POSSIZE_X | SAL_FRAME_POSSIZE_Y | SAL_FRAME_POSSIZE_WIDTH | SAL_FRAME_POSSIZE_HEIGHT );
}
@@ -276,7 +283,7 @@ IMPL_LINK_NOARG(XIMStatusWindow, DelayedShowHdl)
void XIMStatusWindow::show( bool bShow, I18NStatus::ShowReason eReason )
{
if( bShow && m_aStatusText.GetText().isEmpty() )
if( bShow && m_aStatusText->GetText().isEmpty() )
bShow = false;
m_bDelayedShow = bShow;
@@ -287,15 +294,15 @@ void XIMStatusWindow::show( bool bShow, I18NStatus::ShowReason eReason )
void XIMStatusWindow::setText( const OUString& rText )
{
m_aStatusText.SetText( rText );
m_aWindowSize.Width() = m_aStatusText.GetTextWidth( rText )+8;
m_aStatusText->SetText( rText );
m_aWindowSize.Width() = m_aStatusText->GetTextWidth( rText )+8;
}
namespace vcl {
class IIIMPStatusWindow : public StatusWindow
{
MenuButton m_aStatusBtn;
MenuButtonPtr m_aStatusBtn;
PopupMenu m_aMenu;
SalFrame* m_pResetFocus;
bool m_bShow;
@@ -312,6 +319,7 @@ public:
virtual void setText( const OUString & ) SAL_OVERRIDE;
virtual void show( bool bShow, I18NStatus::ShowReason eReason ) SAL_OVERRIDE;
virtual void toggle( bool bOn ) SAL_OVERRIDE;
virtual void dispose() SAL_OVERRIDE;
void layout();
// override Window focus handler
@@ -324,7 +332,7 @@ public:
IIIMPStatusWindow::IIIMPStatusWindow( SalFrame* pParent, bool bOn ) :
StatusWindow( WB_MOVEABLE ),
m_aStatusBtn( this, WB_BORDER ),
m_aStatusBtn(new MenuButton(this, WB_BORDER)),
m_pResetFocus( pParent ),
m_bShow( true ),
m_bOn( bOn )
@@ -333,9 +341,9 @@ IIIMPStatusWindow::IIIMPStatusWindow( SalFrame* pParent, bool bOn ) :
layout();
m_aStatusBtn.SetSelectHdl( LINK( this, IIIMPStatusWindow, SelectHdl ) );
m_aStatusBtn.SetPopupMenu( &m_aMenu );
m_aStatusBtn.Show( true );
m_aStatusBtn->SetSelectHdl( LINK( this, IIIMPStatusWindow, SelectHdl ) );
m_aStatusBtn->SetPopupMenu( &m_aMenu );
m_aStatusBtn->Show( true );
const ::std::vector< I18NStatus::ChoiceData >& rChoices( I18NStatus::get().getChoices() );
int i = 1;
@@ -369,11 +377,11 @@ IIIMPStatusWindow::~IIIMPStatusWindow()
void IIIMPStatusWindow::layout()
{
Font aFont( m_aStatusBtn.GetFont() );
Font aFont( m_aStatusBtn->GetFont() );
Size aSize( 15*aFont.GetHeight(), aFont.GetHeight()+14 );
aSize = m_aStatusBtn.LogicToPixel( aSize );
aSize = m_aStatusBtn->LogicToPixel( aSize );
m_aStatusBtn.SetPosSizePixel( Point( 0, 0 ), aSize );
m_aStatusBtn->SetPosSizePixel( Point( 0, 0 ), aSize );
SetOutputSizePixel( aSize );
if( IsVisible() )
Invalidate();
@@ -381,13 +389,13 @@ void IIIMPStatusWindow::layout()
void IIIMPStatusWindow::DataChanged( const DataChangedEvent& )
{
m_aStatusBtn.SetSettings( GetSettings() );
m_aStatusBtn->SetSettings( GetSettings() );
layout();
}
void IIIMPStatusWindow::setText( const OUString& rText )
{
m_aStatusBtn.SetText( rText );
m_aStatusBtn->SetText( rText );
}
void IIIMPStatusWindow::show( bool bShow, I18NStatus::ShowReason eReason )
@@ -411,6 +419,12 @@ void IIIMPStatusWindow::toggle( bool bOn )
}
}
void IIIMPStatusWindow::dispose()
{
m_aStatusBtn.disposeAndClear();
StatusWindow::dispose();
}
void IIIMPStatusWindow::show()
{
if (m_bOn && m_bShow && !IsVisible())
@@ -454,10 +468,10 @@ void IIIMPStatusWindow::GetFocus()
IMPL_LINK( IIIMPStatusWindow, SelectHdl, MenuButton*, pBtn )
{
if( pBtn == & m_aStatusBtn )
if( pBtn == m_aStatusBtn.get() )
{
const ::std::vector< I18NStatus::ChoiceData >& rChoices( I18NStatus::get().getChoices() );
unsigned int nIndex = m_aStatusBtn.GetCurItemId()-1;
unsigned int nIndex = m_aStatusBtn->GetCurItemId()-1;
if( nIndex < rChoices.size() )
{
XSetICValues( static_cast<X11SalFrame*>(I18NStatus::get().getParent())->getInputContext()->GetContext(),
diff --git a/vcl/workben/svpclient.cxx b/vcl/workben/svpclient.cxx
index 2ed9ac3..b3ad5db 100644
--- a/vcl/workben/svpclient.cxx
+++ b/vcl/workben/svpclient.cxx
@@ -92,10 +92,10 @@ SAL_IMPLEMENT_MAIN()
class MyWin : public WorkWindow
{
PushButton m_aListButton;
ListBox m_aSvpBitmaps;
ImageControl m_aImage;
PushButton m_aQuitButton;
PushButtonPtr m_aListButton;
ListBoxPtr m_aSvpBitmaps;
ImageControlPtr m_aImage;
PushButtonPtr m_aQuitButton;
public:
MyWin( vcl::Window* pParent, WinBits nWinStyle );
@@ -108,6 +108,7 @@ public:
virtual void Resize() SAL_OVERRIDE;
virtual bool Close() SAL_OVERRIDE;
virtual void dispose() SAL_OVERRIDE;
void parseList( const OString& rList );
OString processCommand( const OString& rCommand );
@@ -128,28 +129,28 @@ void Main()
MyWin::MyWin( vcl::Window* pParent, WinBits nWinStyle ) :
WorkWindow( pParent, nWinStyle ),
m_aListButton( this, 0 ),
m_aSvpBitmaps( this, WB_BORDER ),
m_aImage( this, WB_BORDER ),
m_aQuitButton( this, 0 )
m_aListButton(new PushButton(this, 0)),
m_aSvpBitmaps(new ListBox(this, WB_BORDER)),
m_aImage(new ImageControl(this, WB_BORDER)),
m_aQuitButton(new PushButton(this, 0))
{
m_aListButton.SetPosSizePixel( Point( 10, 10 ), Size( 120, 25 ) );
m_aListButton.SetText( OUString( "List Elements" ) );
m_aListButton.SetClickHdl( LINK( this, MyWin, ListHdl ) );
m_aListButton.Show();
m_aListButton->SetPosSizePixel( Point( 10, 10 ), Size( 120, 25 ) );
m_aListButton->SetText( OUString( "List Elements" ) );
m_aListButton->SetClickHdl( LINK( this, MyWin, ListHdl ) );
m_aListButton->Show();
m_aSvpBitmaps.SetPosSizePixel( Point( 10, 40 ), Size( 150, 150 ) );
m_aSvpBitmaps.SetSelectHdl( LINK( this, MyWin, SelectHdl ) );
m_aSvpBitmaps.Show();
m_aSvpBitmaps->SetPosSizePixel( Point( 10, 40 ), Size( 150, 150 ) );
m_aSvpBitmaps->SetSelectHdl( LINK( this, MyWin, SelectHdl ) );
m_aSvpBitmaps->Show();
m_aImage.SetPosSizePixel( Point( 170, 10 ), Size( 400, 400 ) );
m_aImage.SetScaleMode( com::sun::star::awt::ImageScaleMode::NONE );
m_aImage.Show();
m_aImage->SetPosSizePixel( Point( 170, 10 ), Size( 400, 400 ) );
m_aImage->SetScaleMode( com::sun::star::awt::ImageScaleMode::NONE );
m_aImage->Show();
m_aQuitButton.SetPosSizePixel( Point( 10, 300 ), Size( 120,25 ) );
m_aQuitButton.SetText( OUString( "Quit SVP server" ) );
m_aQuitButton.SetClickHdl( LINK( this, MyWin, QuitHdl ) );
m_aQuitButton.Show();
m_aQuitButton->SetPosSizePixel( Point( 10, 300 ), Size( 120,25 ) );
m_aQuitButton->SetText( OUString( "Quit SVP server" ) );
m_aQuitButton->SetClickHdl( LINK( this, MyWin, QuitHdl ) );
m_aQuitButton->Show();
}
bool MyWin::Close()
@@ -160,11 +161,20 @@ bool MyWin::Close()
return bRet;
}
void MyWin::dispose()
{
m_aListButton.disposeAndClear();
m_aSvpBitmaps.disposeAndClear();
m_aImage.disposeAndClear();
m_aQuitButton.disposeAndClear();
WorkWindow::dispose();
}
void MyWin::parseList( const OString& rList )
{
sal_Int32 nTokenPos = 0;
OUString aElementType;
m_aSvpBitmaps.Clear();
m_aSvpBitmaps->Clear();
while( nTokenPos >= 0 )
{
OString aLine = rList.getToken( 0, '\n', nTokenPos );
@@ -179,7 +189,7 @@ void MyWin::parseList( const OString& rList )
aNewElement.append( aElementType );
aNewElement.appendAscii( ": " );
aNewElement.append( OStringToOUString( aLine, RTL_TEXTENCODING_ASCII_US ) );
m_aSvpBitmaps.InsertEntry( aNewElement.makeStringAndClear() );
m_aSvpBitmaps->InsertEntry( aNewElement.makeStringAndClear() );
}
}
}
@@ -235,7 +245,7 @@ IMPL_LINK( MyWin, QuitHdl, Button*, )
IMPL_LINK( MyWin, SelectHdl, ListBox*, )
{
OUString aEntry = m_aSvpBitmaps.GetSelectEntry();
OUString aEntry = m_aSvpBitmaps->GetSelectEntry();
sal_Int32 nPos = aEntry.indexOf( ": " );
if( nPos != -1 )
{
@@ -259,8 +269,8 @@ IMPL_LINK( MyWin, SelectHdl, ListBox*, )
Size aFixedSize( aBitmap.GetSizePixel() );
aFixedSize.Width() += 10;
aFixedSize.Height() += 10;
m_aImage.SetSizePixel( aFixedSize );
m_aImage.SetImage( Image( BitmapEx( aBitmap ) ) );
m_aImage->SetSizePixel( aFixedSize );
m_aImage->SetImage( Image( BitmapEx( aBitmap ) ) );
}
return 0;
}