vcl/inc/vcl/window.hxx | 32 ++++++++++++++++++++++++++++++-- vcl/source/control/lstbox.cxx | 4 ++++ vcl/source/control/tabctrl.cxx | 4 ++-- vcl/source/window/tabdlg.cxx | 2 +- vcl/source/window/window.cxx | 8 +++++--- 5 files changed, 42 insertions(+), 8 deletions(-)
New commits: commit f4da833118b23015d13afde3403886e6c109606f Author: Caolán McNamara <caol...@redhat.com> Date: Fri Apr 6 21:28:37 2012 +0100 document methods diff --git a/vcl/inc/vcl/window.hxx b/vcl/inc/vcl/window.hxx index 625e9f5..01e37ee 100644 --- a/vcl/inc/vcl/window.hxx +++ b/vcl/inc/vcl/window.hxx @@ -586,6 +586,15 @@ protected: void CallEventListeners( sal_uLong nEvent, void* pData = NULL ); void FireVclEvent( VclSimpleEvent* pEvent ); + /* + * Widgets call this to inform their owner container that the widget wants + * to renegotiate its size. Should be called when a widget has a new size + * request. e.g. a FixedText Control gets a new label. + * + * akin to gtk_widget_queue_resize + */ + SAL_DLLPRIVATE void queue_resize(); + // FIXME: this is a hack to workaround missing layout functionality SAL_DLLPRIVATE void ImplAdjustNWFSizes(); public: @@ -1060,10 +1069,29 @@ public: virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard > GetClipboard(); virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard > GetPrimarySelection(); - // Advisory Sizing - what is a good size for this widget ? + /* + * Advisory Sizing - what is a good size for this widget + * + * Retrieves the preferred size of a widget ignoring + * "width-request" and "height-request" properties. + * + * Implement this in sub-classes to tell layout + * the preferred widget size. + */ virtual Size GetOptimalSize(WindowSizeType eType) const; + + /* + * Retrieves the preferred size of a widget taking + * into account the "width-request" and "height-request" properties. + * + * Overrides the result of GetOptimalSize to honor the + * width-request and height-request properties. + * + * @see GetOptimalSize + * + * akin to gtk_widget_get_preferred_size + */ Size get_preferred_size() const; - void queueResize(); virtual void setChildAnyProperty(const rtl::OString &rString, const ::com::sun::star::uno::Any &rValue); virtual ::com::sun::star::uno::Any getWidgetAnyProperty(const rtl::OString &rString) const; diff --git a/vcl/source/control/tabctrl.cxx b/vcl/source/control/tabctrl.cxx index 6196d77..e594207 100644 --- a/vcl/source/control/tabctrl.cxx +++ b/vcl/source/control/tabctrl.cxx @@ -1957,14 +1957,14 @@ void TabControl::SetTabPage( sal_uInt16 nPageId, TabPage* pTabPage ) // Erst hier setzen, damit Resize nicht TabPage umpositioniert pItem->mpTabPage = pTabPage; - queueResize(); + queue_resize(); if ( pItem->mnId == mnCurPageId ) ImplChangeTabPage( pItem->mnId, 0 ); } else { pItem->mpTabPage = NULL; - queueResize(); + queue_resize(); } } } diff --git a/vcl/source/window/tabdlg.cxx b/vcl/source/window/tabdlg.cxx index 517ce33..0701533 100644 --- a/vcl/source/window/tabdlg.cxx +++ b/vcl/source/window/tabdlg.cxx @@ -260,7 +260,7 @@ void TabDialog::StateChanged( StateChangedType nType ) void TabDialog::AdjustLayout() { ImplPosControls(); - queueResize(); + queue_resize(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index e24c713..d16b831 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -4927,7 +4927,7 @@ void Window::UserEvent( sal_uLong, void* ) void Window::StateChanged( StateChangedType ) { - queueResize(); + queue_resize(); DBG_CHKTHIS( Window, ImplDbgCheckWindow ); } @@ -9632,7 +9632,7 @@ Selection Window::GetSurroundingTextSelection() const //Poor man's equivalent, when widget wants to renegotiate //size, get parent dialog and call resize on it -void Window::queueResize() +void Window::queue_resize() { Dialog *pParent = GetParentDialog(); if (!pParent) commit 18130178e408b79968773f90316dead1f0f26f72 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Apr 6 09:01:50 2012 +0100 don't bother with children resize request while dialog is closing diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index dfb839f..e24c713 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -9630,13 +9630,15 @@ Selection Window::GetSurroundingTextSelection() const return Selection( 0, 0 ); } -//Poor man's equivalent, when widget want's to renegotiate +//Poor man's equivalent, when widget wants to renegotiate //size, get parent dialog and call resize on it void Window::queueResize() { Dialog *pParent = GetParentDialog(); if (!pParent) return; + if (pParent->IsInClose()) + return; if (!pParent->isLayoutEnabled()) return; if (!pParent->IsReallyShown()) commit 2bfdf923e551a93c067918e8b7d90c0a84644034 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Apr 6 08:40:14 2012 +0100 mpImplLB of ListBox is NULLed during destruction diff --git a/vcl/source/control/lstbox.cxx b/vcl/source/control/lstbox.cxx index 9d2f7aa..0f82e65 100644 --- a/vcl/source/control/lstbox.cxx +++ b/vcl/source/control/lstbox.cxx @@ -1293,6 +1293,10 @@ sal_Bool ListBox::IsMultiSelectionEnabled() const Size ListBox::CalcMinimumSize() const { Size aSz; + + if (!mpImplLB) + return aSz; + if ( !IsDropDownBox() ) aSz = mpImplLB->CalcSize (mnLineCount ? mnLineCount : mpImplLB->GetEntryList()->GetEntryCount()); else
_______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits