dbaccess/source/ui/control/RelationControl.cxx | 4 dbaccess/source/ui/control/TableGrantCtrl.cxx | 4 dbaccess/source/ui/control/dbtreelistbox.cxx | 2 dbaccess/source/ui/dlg/directsql.cxx | 2 dbaccess/source/ui/dlg/indexdialog.cxx | 2 dbaccess/source/ui/querydesign/TableWindowListBox.cxx | 4 dbaccess/source/ui/tabledesign/TEditControl.cxx | 10 +- desktop/source/deployment/gui/dp_gui_dialog2.cxx | 8 - desktop/source/deployment/gui/dp_gui_dialog2.hxx | 2 extensions/source/bibliography/bibview.cxx | 2 extensions/source/propctrlr/formlinkdialog.cxx | 2 formula/source/ui/dlg/funcutl.cxx | 4 include/vcl/window.hxx | 8 + reportdesign/source/ui/dlg/GroupsSorting.cxx | 6 - reportdesign/source/ui/report/DesignView.cxx | 10 +- reportdesign/source/ui/report/ViewsWindow.cxx | 2 reportdesign/source/ui/report/propbrw.cxx | 2 sc/source/ui/condformat/condformatdlg.cxx | 2 sc/source/ui/inc/anyrefdg.hxx | 10 ++ sc/source/ui/miscdlgs/anyrefdg.cxx | 7 + sc/source/ui/navipi/content.cxx | 2 sc/source/ui/pagedlg/tphf.cxx | 2 sc/source/ui/view/preview.cxx | 2 scripting/source/vbaevents/eventhelper.cxx | 3 sd/source/ui/dlg/sdtreelb.cxx | 2 sfx2/source/control/recentdocsviewitem.cxx | 2 sfx2/source/dialog/templdlg.cxx | 2 svtools/source/brwbox/editbrowsebox.cxx | 6 - svtools/source/contnr/imivctl1.cxx | 4 svtools/source/contnr/svimpbox.cxx | 3 svtools/source/control/ruler.cxx | 6 - svtools/source/control/tabbar.cxx | 6 - svtools/source/dialogs/addresstemplate.cxx | 2 svx/source/dialog/_bmpmask.cxx | 4 svx/source/fmcomp/fmgridcl.cxx | 2 svx/source/fmcomp/gridctrl.cxx | 6 - svx/source/form/delayedevent.cxx | 14 --- svx/source/form/filtnav.cxx | 2 svx/source/form/fmPropBrw.cxx | 2 svx/source/form/navigatortree.cxx | 2 svx/source/gallery2/galbrws1.cxx | 4 svx/source/tbxctrls/colrctrl.cxx | 2 svx/source/tbxctrls/grafctrl.cxx | 3 sw/source/ui/config/mailconfigpage.cxx | 2 sw/source/ui/dbui/addresslistdialog.cxx | 2 sw/source/ui/dbui/mmoutputtypepage.cxx | 4 sw/source/uibase/dochdl/swdtflvr.cxx | 2 sw/source/uibase/docvw/SidebarWin.cxx | 4 sw/source/uibase/shells/textsh2.cxx | 2 sw/source/uibase/utlui/glbltree.cxx | 3 sw/source/uibase/utlui/navipi.cxx | 2 vcl/source/control/button.cxx | 14 +-- vcl/source/control/combobox.cxx | 2 vcl/source/control/ctrl.cxx | 6 - vcl/source/control/edit.cxx | 2 vcl/source/control/fixed.cxx | 4 vcl/source/control/ilstbox.cxx | 12 +- vcl/source/control/lstbox.cxx | 2 vcl/source/control/scrbar.cxx | 6 - vcl/source/control/slider.cxx | 4 vcl/source/control/spinbtn.cxx | 8 - vcl/source/control/spinfld.cxx | 2 vcl/source/window/dialog.cxx | 6 - vcl/source/window/dlgctrl.cxx | 8 - vcl/source/window/event.cxx | 9 -- vcl/source/window/globalization.cxx | 2 vcl/source/window/mouse.cxx | 4 vcl/source/window/window.cxx | 81 ++++++++++++++---- vcl/source/window/window2.cxx | 22 ++-- vcl/source/window/winproc.cxx | 4 70 files changed, 226 insertions(+), 169 deletions(-)
New commits: commit 7dc00c7372a334bce7373cbdcd5a888cc4b37cd3 Author: Michael Meeks <michael.me...@collabora.com> Date: Mon May 25 21:36:25 2015 +0100 tdf#91577 - fix unique_ptr conversion bugs in reportdesign. Change-Id: Icc94ce266d567e7aad5afb5eacf0e85699ef4107 diff --git a/reportdesign/source/ui/report/DesignView.cxx b/reportdesign/source/ui/report/DesignView.cxx index aaa3414..0a6f567 100644 --- a/reportdesign/source/ui/report/DesignView.cxx +++ b/reportdesign/source/ui/report/DesignView.cxx @@ -139,26 +139,26 @@ void ODesignView::dispose() if ( m_pPropWin ) { notifySystemWindow(this,m_pPropWin,::comphelper::mem_fun(&TaskPaneList::RemoveWindow)); + m_pPropWin.disposeAndClear(); } if ( m_pAddField ) { SvtViewOptions aDlgOpt( E_WINDOW, OUString( UID_RPT_RPT_APP_VIEW ) ); aDlgOpt.SetWindowState(OStringToOUString(m_pAddField->GetWindowState(WINDOWSTATE_MASK_ALL), RTL_TEXTENCODING_ASCII_US)); notifySystemWindow(this,m_pAddField,::comphelper::mem_fun(&TaskPaneList::RemoveWindow)); + m_pAddField.disposeAndClear(); } if ( m_pReportExplorer ) { SvtViewOptions aDlgOpt(E_WINDOW, OStringToOUString(m_pReportExplorer->GetHelpId(), RTL_TEXTENCODING_UTF8)); aDlgOpt.SetWindowState(OStringToOUString(m_pReportExplorer->GetWindowState(WINDOWSTATE_MASK_ALL), RTL_TEXTENCODING_ASCII_US)); notifySystemWindow(this,m_pReportExplorer,::comphelper::mem_fun(&TaskPaneList::RemoveWindow)); + m_pReportExplorer.disposeAndClear(); } - m_aSplitWin.disposeAndClear(); + m_pTaskPane.disposeAndClear(); m_aScrollWindow.disposeAndClear(); - m_pTaskPane.clear(); - m_pReportExplorer.clear(); - m_pPropWin.clear(); - m_pAddField.clear(); + m_aSplitWin.disposeAndClear(); dbaui::ODataView::dispose(); } diff --git a/reportdesign/source/ui/report/ViewsWindow.cxx b/reportdesign/source/ui/report/ViewsWindow.cxx index 1d491d2..a998935 100644 --- a/reportdesign/source/ui/report/ViewsWindow.cxx +++ b/reportdesign/source/ui/report/ViewsWindow.cxx @@ -191,6 +191,8 @@ OViewsWindow::~OViewsWindow() void OViewsWindow::dispose() { m_aColorConfig.RemoveListener(this); + for (auto i = m_aSections.begin(); i != m_aSections.end(); ++i) + i->disposeAndClear(); m_aSections.clear(); m_pParent.clear(); vcl::Window::dispose(); commit f0bbafba9d490c2628f1f60070aee877b64f5520 Author: Michael Meeks <michael.me...@collabora.com> Date: Mon May 25 19:59:49 2015 +0100 Audit all PostUserEvent calls and instrument for VclPtr. Hold a reference on the VclPtr while we're waiting for the UserEvent. Change-Id: I55c2671ca12eb14761c6a7dffd551af71547ecbd diff --git a/dbaccess/source/ui/control/RelationControl.cxx b/dbaccess/source/ui/control/RelationControl.cxx index 4988943..cfb56b6 100644 --- a/dbaccess/source/ui/control/RelationControl.cxx +++ b/dbaccess/source/ui/control/RelationControl.cxx @@ -193,9 +193,9 @@ namespace dbaui bool ORelationControl::PreNotify(NotifyEvent& rNEvt) { if (rNEvt.GetType() == MouseNotifyEvent::LOSEFOCUS && !HasChildPathFocus() ) - PostUserEvent(LINK(this, ORelationControl, AsynchDeactivate)); + PostUserEvent(LINK(this, ORelationControl, AsynchDeactivate), NULL, true); else if (rNEvt.GetType() == MouseNotifyEvent::GETFOCUS) - PostUserEvent(LINK(this, ORelationControl, AsynchActivate)); + PostUserEvent(LINK(this, ORelationControl, AsynchActivate), NULL, true); return EditBrowseBox::PreNotify(rNEvt); } diff --git a/dbaccess/source/ui/control/TableGrantCtrl.cxx b/dbaccess/source/ui/control/TableGrantCtrl.cxx index e370a91..a23925a 100644 --- a/dbaccess/source/ui/control/TableGrantCtrl.cxx +++ b/dbaccess/source/ui/control/TableGrantCtrl.cxx @@ -156,13 +156,13 @@ bool OTableGrantControl::PreNotify(NotifyEvent& rNEvt) { if (m_nDeactivateEvent) Application::RemoveUserEvent(m_nDeactivateEvent); - m_nDeactivateEvent = Application::PostUserEvent(LINK(this, OTableGrantControl, AsynchDeactivate)); + m_nDeactivateEvent = Application::PostUserEvent(LINK(this, OTableGrantControl, AsynchDeactivate), NULL, true); } if (rNEvt.GetType() == MouseNotifyEvent::GETFOCUS) { if (m_nDeactivateEvent) Application::RemoveUserEvent(m_nDeactivateEvent); - m_nDeactivateEvent = Application::PostUserEvent(LINK(this, OTableGrantControl, AsynchActivate)); + m_nDeactivateEvent = Application::PostUserEvent(LINK(this, OTableGrantControl, AsynchActivate), NULL, true); } return EditBrowseBox::PreNotify(rNEvt); } diff --git a/dbaccess/source/ui/control/dbtreelistbox.cxx b/dbaccess/source/ui/control/dbtreelistbox.cxx index 13a5565..d8346df 100644 --- a/dbaccess/source/ui/control/dbtreelistbox.cxx +++ b/dbaccess/source/ui/control/dbtreelistbox.cxx @@ -133,7 +133,7 @@ void DBTreeListBox::RequestingChildren( SvTreeListEntry* pParent ) // an error occurred. The method calling us will reset the entry flags, so it can't be expanded again. // But we want that the user may do a second try (i.e. because he misstypes a password in this try), so // we have to reset these flags controlling the expand ability - PostUserEvent(LINK(this, DBTreeListBox, OnResetEntry), pParent); + PostUserEvent(LINK(this, DBTreeListBox, OnResetEntry), pParent, true); } } } diff --git a/dbaccess/source/ui/dlg/directsql.cxx b/dbaccess/source/ui/dlg/directsql.cxx index eddc094..190d4a7 100644 --- a/dbaccess/source/ui/dlg/directsql.cxx +++ b/dbaccess/source/ui/dlg/directsql.cxx @@ -110,7 +110,7 @@ namespace dbaui aError->Execute(); } - PostUserEvent(LINK(this, DirectSQLDialog, OnClose)); + PostUserEvent(LINK(this, DirectSQLDialog, OnClose), NULL, true); } sal_Int32 DirectSQLDialog::getHistorySize() const diff --git a/dbaccess/source/ui/dlg/indexdialog.cxx b/dbaccess/source/ui/dlg/indexdialog.cxx index 7abbb17..72456c0 100644 --- a/dbaccess/source/ui/dlg/indexdialog.cxx +++ b/dbaccess/source/ui/dlg/indexdialog.cxx @@ -631,7 +631,7 @@ namespace dbaui updateToolbox(); m_bEditAgain = true; - PostUserEvent(LINK(this, DbaIndexDialog, OnEditIndexAgain), _pEntry); + PostUserEvent(LINK(this, DbaIndexDialog, OnEditIndexAgain), _pEntry, true); return 0L; } diff --git a/dbaccess/source/ui/querydesign/TableWindowListBox.cxx b/dbaccess/source/ui/querydesign/TableWindowListBox.cxx index 4db24a6..173d85f 100644 --- a/dbaccess/source/ui/querydesign/TableWindowListBox.cxx +++ b/dbaccess/source/ui/querydesign/TableWindowListBox.cxx @@ -63,7 +63,7 @@ void OTableWindowListBox::dragFinished( ) // second look for ui activities which should happen after d&d if (m_nUiEvent) Application::RemoveUserEvent(m_nUiEvent); - m_nUiEvent = Application::PostUserEvent(LINK(this, OTableWindowListBox, LookForUiHdl)); + m_nUiEvent = Application::PostUserEvent(LINK(this, OTableWindowListBox, LookForUiHdl), NULL, true); } OTableWindowListBox::~OTableWindowListBox() @@ -311,7 +311,7 @@ sal_Int8 OTableWindowListBox::ExecuteDrop( const ExecuteDropEvent& _rEvt ) if (m_nDropEvent) Application::RemoveUserEvent(m_nDropEvent); - m_nDropEvent = Application::PostUserEvent(LINK(this, OTableWindowListBox, DropHdl)); + m_nDropEvent = Application::PostUserEvent(LINK(this, OTableWindowListBox, DropHdl), NULL, true); return DND_ACTION_LINK; } diff --git a/dbaccess/source/ui/tabledesign/TEditControl.cxx b/dbaccess/source/ui/tabledesign/TEditControl.cxx index cc134b2..eb0c16f 100644 --- a/dbaccess/source/ui/tabledesign/TEditControl.cxx +++ b/dbaccess/source/ui/tabledesign/TEditControl.cxx @@ -665,7 +665,7 @@ void OTableEditorCtrl::CellModified( long nRow, sal_uInt16 nColId ) else pActRow->SetFieldType( GetView()->getController().getTypeInfoFallBack() ); - nInvalidateTypeEvent = Application::PostUserEvent( LINK(this, OTableEditorCtrl, InvalidateFieldType) ); + nInvalidateTypeEvent = Application::PostUserEvent( LINK(this, OTableEditorCtrl, InvalidateFieldType), NULL, true ); pActFieldDescr = pActRow->GetActFieldDescr(); pDescrWin->DisplayData( pActFieldDescr ); GetUndoManager().AddUndoAction( new OTableEditorTypeSelUndoAct(this, nRow, nColId+1, TOTypeInfoSP()) ); @@ -1222,7 +1222,7 @@ void OTableEditorCtrl::cut() { if (nCutEvent) Application::RemoveUserEvent(nCutEvent); - nCutEvent = Application::PostUserEvent(LINK(this, OTableEditorCtrl, DelayedCut)); + nCutEvent = Application::PostUserEvent(LINK(this, OTableEditorCtrl, DelayedCut), NULL, true); } } @@ -1245,7 +1245,7 @@ void OTableEditorCtrl::paste() { if( nPasteEvent ) Application::RemoveUserEvent( nPasteEvent ); - nPasteEvent = Application::PostUserEvent( LINK(this, OTableEditorCtrl, DelayedPaste) ); + nPasteEvent = Application::PostUserEvent( LINK(this, OTableEditorCtrl, DelayedPaste), NULL, true ); } else if(m_eChildFocus == NAME) { @@ -1433,12 +1433,12 @@ void OTableEditorCtrl::Command(const CommandEvent& rEvt) case SID_DELETE: if( nDeleteEvent ) Application::RemoveUserEvent( nDeleteEvent ); - nDeleteEvent = Application::PostUserEvent( LINK(this, OTableEditorCtrl, DelayedDelete) ); + nDeleteEvent = Application::PostUserEvent( LINK(this, OTableEditorCtrl, DelayedDelete), NULL, true ); break; case SID_TABLEDESIGN_INSERTROWS: if( nInsNewRowsEvent ) Application::RemoveUserEvent( nInsNewRowsEvent ); - nInsNewRowsEvent = Application::PostUserEvent( LINK(this, OTableEditorCtrl, DelayedInsNewRows) ); + nInsNewRowsEvent = Application::PostUserEvent( LINK(this, OTableEditorCtrl, DelayedInsNewRows), NULL, true ); break; case SID_TABLEDESIGN_TABED_PRIMARYKEY: SetPrimaryKey( !IsPrimaryKey() ); diff --git a/desktop/source/deployment/gui/dp_gui_dialog2.cxx b/desktop/source/deployment/gui/dp_gui_dialog2.cxx index 0102292..92b802f 100644 --- a/desktop/source/deployment/gui/dp_gui_dialog2.cxx +++ b/desktop/source/deployment/gui/dp_gui_dialog2.cxx @@ -659,12 +659,12 @@ bool DialogHelper::installForAllUsers( bool &bInstallForAll ) const return true; } -void DialogHelper::PostUserEvent( const Link<>& rLink, void* pCaller ) +void DialogHelper::PostUserEvent( const Link<>& rLink, void* pCaller, bool bReferenceLink ) { if ( m_nEventID ) Application::RemoveUserEvent( m_nEventID ); - m_nEventID = Application::PostUserEvent( rLink, pCaller ); + m_nEventID = Application::PostUserEvent( rLink, pCaller, bReferenceLink ); } // ExtMgrDialog @@ -1020,7 +1020,7 @@ void ExtMgrDialog::showProgress( bool _bStart ) OSL_TRACE( "showProgress stop!" ); } - DialogHelper::PostUserEvent( LINK( this, ExtMgrDialog, startProgress ), reinterpret_cast<void*>(bStart) ); + DialogHelper::PostUserEvent( LINK( this, ExtMgrDialog, startProgress ), reinterpret_cast<void*>(bStart), true ); } @@ -1342,7 +1342,7 @@ void UpdateRequiredDialog::showProgress( bool _bStart ) OSL_TRACE( "showProgress stop!" ); } - DialogHelper::PostUserEvent( LINK( this, UpdateRequiredDialog, startProgress ), reinterpret_cast<void*>(bStart) ); + DialogHelper::PostUserEvent( LINK( this, UpdateRequiredDialog, startProgress ), reinterpret_cast<void*>(bStart), true ); } diff --git a/desktop/source/deployment/gui/dp_gui_dialog2.hxx b/desktop/source/deployment/gui/dp_gui_dialog2.hxx index 46a0c9e..6e8037f 100644 --- a/desktop/source/deployment/gui/dp_gui_dialog2.hxx +++ b/desktop/source/deployment/gui/dp_gui_dialog2.hxx @@ -66,7 +66,7 @@ public: void openWebBrowser( const OUString & sURL, const OUString & sTitle ) const; Dialog* getWindow() const { return m_pVCLWindow; }; - void PostUserEvent( const Link<>& rLink, void* pCaller ); + void PostUserEvent( const Link<>& rLink, void* pCaller, bool bReferenceLink = false ); void clearEventID() { m_nEventID = 0; } virtual void showProgress( bool bStart ) = 0; diff --git a/extensions/source/bibliography/bibview.cxx b/extensions/source/bibliography/bibview.cxx index 9e62d15..d1a8b95 100644 --- a/extensions/source/bibliography/bibview.cxx +++ b/extensions/source/bibliography/bibview.cxx @@ -153,7 +153,7 @@ namespace bib } if(bExecute) { - Application::PostUserEvent( LINK( this, BibView, CallMappingHdl ) ); + Application::PostUserEvent( LINK( this, BibView, CallMappingHdl ), NULL, true ); } } } diff --git a/extensions/source/propctrlr/formlinkdialog.cxx b/extensions/source/propctrlr/formlinkdialog.cxx index 3f02bd3..7101fe6 100644 --- a/extensions/source/propctrlr/formlinkdialog.cxx +++ b/extensions/source/propctrlr/formlinkdialog.cxx @@ -195,7 +195,7 @@ namespace pcr m_aRow3->SetLinkChangeHandler( LINK( this, FormLinkDialog, OnFieldChanged ) ); m_aRow4->SetLinkChangeHandler( LINK( this, FormLinkDialog, OnFieldChanged ) ); - PostUserEvent( LINK( this, FormLinkDialog, OnInitialize ) ); + PostUserEvent( LINK( this, FormLinkDialog, OnInitialize ), NULL, true ); updateOkButton(); } diff --git a/formula/source/ui/dlg/funcutl.cxx b/formula/source/ui/dlg/funcutl.cxx index 7f3e6f7..c620f38 100644 --- a/formula/source/ui/dlg/funcutl.cxx +++ b/formula/source/ui/dlg/funcutl.cxx @@ -422,7 +422,7 @@ bool EditBox::PreNotify( NotifyEvent& rNEvt ) else { nResult=Control::PreNotify(rNEvt); - Application::PostUserEvent( LINK( this, EditBox, ChangedHdl ) ); + Application::PostUserEvent( LINK( this, EditBox, ChangedHdl ), NULL, true ); } } @@ -433,7 +433,7 @@ bool EditBox::PreNotify( NotifyEvent& rNEvt ) if(nSwitch==MouseNotifyEvent::MOUSEBUTTONDOWN || nSwitch==MouseNotifyEvent::MOUSEBUTTONUP) { bMouseFlag=true; - Application::PostUserEvent( LINK( this, EditBox, ChangedHdl ) ); + Application::PostUserEvent( LINK( this, EditBox, ChangedHdl ), NULL, true ); } } return nResult; diff --git a/reportdesign/source/ui/dlg/GroupsSorting.cxx b/reportdesign/source/ui/dlg/GroupsSorting.cxx index ff786a5..80cf6a6 100644 --- a/reportdesign/source/ui/dlg/GroupsSorting.cxx +++ b/reportdesign/source/ui/dlg/GroupsSorting.cxx @@ -760,7 +760,7 @@ void OFieldExpressionControl::Command(const CommandEvent& rEvt) case SID_DELETE: if( m_nDeleteEvent ) Application::RemoveUserEvent( m_nDeleteEvent ); - m_nDeleteEvent = Application::PostUserEvent( LINK(this, OFieldExpressionControl, DelayedDelete) ); + m_nDeleteEvent = Application::PostUserEvent( LINK(this, OFieldExpressionControl, DelayedDelete), NULL, true ); break; default: break; @@ -867,7 +867,7 @@ void OFieldExpressionControl::paste() { if( m_nPasteEvent ) Application::RemoveUserEvent( m_nPasteEvent ); - m_nPasteEvent = Application::PostUserEvent( LINK(this, OFieldExpressionControl, DelayedPaste) ); + m_nPasteEvent = Application::PostUserEvent( LINK(this, OFieldExpressionControl, DelayedPaste), NULL, true ); } } @@ -1178,7 +1178,7 @@ IMPL_LINK_NOARG_TYPED( OGroupsSortingDialog, OnFormatAction, ToolBox*, void ) } if ( nCommand == m_nDeleteId ) { - Application::PostUserEvent( LINK(m_pFieldExpression, OFieldExpressionControl, DelayedDelete) ); + Application::PostUserEvent( LINK(m_pFieldExpression, OFieldExpressionControl, DelayedDelete), NULL, true ); } else { diff --git a/reportdesign/source/ui/report/propbrw.cxx b/reportdesign/source/ui/report/propbrw.cxx index ba805f1..6706c74 100644 --- a/reportdesign/source/ui/report/propbrw.cxx +++ b/reportdesign/source/ui/report/propbrw.cxx @@ -487,7 +487,7 @@ void PropBrw::Update( OSectionView* pNewView ) if ( m_bInitialStateChange ) { // if we're just newly created, we want to have the focus - PostUserEvent( LINK( this, PropBrw, OnAsyncGetFocus ) ); + PostUserEvent( LINK( this, PropBrw, OnAsyncGetFocus ), NULL, true ); m_bInitialStateChange = false; // and additionally, we want to show the page which was active during // our previous incarnation diff --git a/sc/source/ui/condformat/condformatdlg.cxx b/sc/source/ui/condformat/condformatdlg.cxx index 9f4d302..fe4ddbd 100644 --- a/sc/source/ui/condformat/condformatdlg.cxx +++ b/sc/source/ui/condformat/condformatdlg.cxx @@ -293,7 +293,7 @@ IMPL_LINK(ScCondFormatList, TypeListHdl, ListBox*, pBox) //If we call maEntries.replace here then the pBox will be deleted before it //has finished Select and will crash on accessing its deleted this. So Post //to do the real work after the Select has completed - Application::PostUserEvent(LINK(this, ScCondFormatList, AfterTypeListHdl), pBox); + Application::PostUserEvent(LINK(this, ScCondFormatList, AfterTypeListHdl), pBox, true); return 0; } diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx index e6f607a..571dfd6 100644 --- a/sc/source/ui/navipi/content.cxx +++ b/sc/source/ui/navipi/content.cxx @@ -573,7 +573,7 @@ void ScContentTree::Command( const CommandEvent& rCEvt ) // den StarView MouseMove-Handler, der Command() aufruft, umbringen. // Deshalb Drag&Drop asynchron: - Application::PostUserEvent( LINK( this, ScContentTree, ExecDragHdl ) ); + Application::PostUserEvent( LINK( this, ScContentTree, ExecDragHdl ), NULL, true ); bDone = true; break; diff --git a/sc/source/ui/pagedlg/tphf.cxx b/sc/source/ui/pagedlg/tphf.cxx index 70a5efc..cf1918e 100644 --- a/sc/source/ui/pagedlg/tphf.cxx +++ b/sc/source/ui/pagedlg/tphf.cxx @@ -165,7 +165,7 @@ IMPL_LINK_NOARG(ScHFPage, BtnHdl) // the GrabFocus from the Edit-Dialog under OS/2 doesn't work.(Bug #41805#). // With the new StarView, this workaround should be again considered! - Application::PostUserEvent( LINK( this, ScHFPage, HFEditHdl ) ); + Application::PostUserEvent( LINK( this, ScHFPage, HFEditHdl ), NULL, true ); return 0; } diff --git a/sc/source/ui/view/preview.cxx b/sc/source/ui/view/preview.cxx index 0feb97d..42c98bb 100644 --- a/sc/source/ui/view/preview.cxx +++ b/sc/source/ui/view/preview.cxx @@ -898,7 +898,7 @@ void ScPreview::DoInvalidate() // The Invalidate must come behind asynchronously if (bInGetState) - Application::PostUserEvent( LINK( this, ScPreview, InvalidateHdl ) ); + Application::PostUserEvent( LINK( this, ScPreview, InvalidateHdl ), NULL, true ); else StaticInvalidate(); // Immediately } diff --git a/scripting/source/vbaevents/eventhelper.cxx b/scripting/source/vbaevents/eventhelper.cxx index 15224d50..616533c 100644 --- a/scripting/source/vbaevents/eventhelper.cxx +++ b/scripting/source/vbaevents/eventhelper.cxx @@ -706,7 +706,8 @@ EventListener::firing(const ScriptEvent& evt) throw(RuntimeException, std::excep // needs some logic to check if the event handler is oneway or not // if not oneway then firing_Impl otherwise... as below acquire(); - Application::PostUserEvent( LINK( this, EventListener, OnAsyncScriptEvent ), new ScriptEvent( evt ) ); + Application::PostUserEvent( LINK( this, EventListener, OnAsyncScriptEvent ), + new ScriptEvent( evt ) ); #else firing_Impl( evt ); #endif diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx index 485f392..59b9d0f 100644 --- a/sd/source/ui/dlg/sdtreelb.cxx +++ b/sd/source/ui/dlg/sdtreelb.cxx @@ -1171,7 +1171,7 @@ void SdPageObjsTLB::StartDrag( sal_Int8 nAction, const Point& rPosPixel) // another document type), but that would kill the StarView MouseMove // Handler which is calling Command(). // For this reason, Drag&Drop is asynchronous. - Application::PostUserEvent( LINK( this, SdPageObjsTLB, ExecDragHdl ) ); + Application::PostUserEvent( LINK( this, SdPageObjsTLB, ExecDragHdl ), NULL, true ); } } diff --git a/sfx2/source/control/recentdocsviewitem.cxx b/sfx2/source/control/recentdocsviewitem.cxx index 69c4a54..3d08e51 100644 --- a/sfx2/source/control/recentdocsviewitem.cxx +++ b/sfx2/source/control/recentdocsviewitem.cxx @@ -219,7 +219,7 @@ void RecentDocsViewItem::OpenDocument() pLoadRecentFile->aTargetURL = aTargetURL; pLoadRecentFile->aArgSeq = aArgsList; - Application::PostUserEvent(LINK(0, RecentDocsView, ExecuteHdl_Impl), pLoadRecentFile); + Application::PostUserEvent(LINK(0, RecentDocsView, ExecuteHdl_Impl), pLoadRecentFile, true); } } diff --git a/sfx2/source/dialog/templdlg.cxx b/sfx2/source/dialog/templdlg.cxx index 43a186a..833a8af 100644 --- a/sfx2/source/dialog/templdlg.cxx +++ b/sfx2/source/dialog/templdlg.cxx @@ -269,7 +269,7 @@ sal_Int8 DropListBox_Impl::ExecuteDrop( const ExecuteDropEvent& rEvt ) { if ( aDesc.maClassName == pDocShell->GetFactory().GetClassId() ) { - PostUserEvent( LINK( this, DropListBox_Impl, OnAsyncExecuteDrop ), 0 ); + PostUserEvent( LINK( this, DropListBox_Impl, OnAsyncExecuteDrop ), 0, true ); bFormatFound = true; nRet = rEvt.mnAction; diff --git a/svtools/source/brwbox/editbrowsebox.cxx b/svtools/source/brwbox/editbrowsebox.cxx index 66cc84a..4957b3b 100644 --- a/svtools/source/brwbox/editbrowsebox.cxx +++ b/svtools/source/brwbox/editbrowsebox.cxx @@ -1072,7 +1072,7 @@ namespace svt // release the controller (asynchronously) if (nEndEvent) Application::RemoveUserEvent(nEndEvent); - nEndEvent = Application::PostUserEvent(LINK(this,EditBrowseBox,EndEditHdl)); + nEndEvent = Application::PostUserEvent(LINK(this,EditBrowseBox,EndEditHdl), NULL, true); } } @@ -1106,7 +1106,7 @@ namespace svt { if (nCellModifiedEvent) Application::RemoveUserEvent(nCellModifiedEvent); - nCellModifiedEvent = Application::PostUserEvent(LINK(this,EditBrowseBox,CellModifiedHdl)); + nCellModifiedEvent = Application::PostUserEvent(LINK(this,EditBrowseBox,CellModifiedHdl), NULL, true); return 0; } @@ -1293,7 +1293,7 @@ namespace svt Application::RemoveUserEvent(nStartEvent); m_pFocusWhileRequest = Application::GetFocusWindow(); - nStartEvent = Application::PostUserEvent(LINK(this,EditBrowseBox,StartEditHdl)); + nStartEvent = Application::PostUserEvent(LINK(this,EditBrowseBox,StartEditHdl), NULL, true); } diff --git a/svtools/source/contnr/imivctl1.cxx b/svtools/source/contnr/imivctl1.cxx index 5459f49..51dc4bb 100644 --- a/svtools/source/contnr/imivctl1.cxx +++ b/svtools/source/contnr/imivctl1.cxx @@ -1385,7 +1385,7 @@ void SvxIconChoiceCtrl_Impl::Resize() if ( ! nUserEventAdjustScrBars ) nUserEventAdjustScrBars = Application::PostUserEvent( LINK( this, SvxIconChoiceCtrl_Impl, UserEventHdl), - EVENTID_ADJUST_SCROLLBARS); + EVENTID_ADJUST_SCROLLBARS); VisRectChanged(); } @@ -2088,7 +2088,7 @@ void SvxIconChoiceCtrl_Impl::SetCursor( SvxIconChoiceCtrlEntry* pEntry, bool bSy if( !nUserEventShowCursor ) nUserEventShowCursor = Application::PostUserEvent( LINK( this, SvxIconChoiceCtrl_Impl, UserEventHdl), - EVENTID_SHOW_CURSOR ); + EVENTID_SHOW_CURSOR ); } } } diff --git a/svtools/source/contnr/svimpbox.cxx b/svtools/source/contnr/svimpbox.cxx index 9431266..56f9cba 100644 --- a/svtools/source/contnr/svimpbox.cxx +++ b/svtools/source/contnr/svimpbox.cxx @@ -902,7 +902,8 @@ void SvImpLBox::Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect aVerSBar->SetThumbPos( 0 ); StopUserEvent(); ShowCursor(true); - nCurUserEvent = Application::PostUserEvent(LINK(this, SvImpLBox, MyUserEvent), reinterpret_cast<void*>(1)); + nCurUserEvent = Application::PostUserEvent(LINK(this, SvImpLBox, MyUserEvent), + reinterpret_cast<void*>(1)); return; } } diff --git a/svtools/source/control/ruler.cxx b/svtools/source/control/ruler.cxx index b6ff5aa..eec2e39 100644 --- a/svtools/source/control/ruler.cxx +++ b/svtools/source/control/ruler.cxx @@ -1483,7 +1483,7 @@ void Ruler::ImplUpdate( bool bMustCalc ) { mnUpdateFlags |= RULER_UPDATE_DRAW; if (!mnUpdateEvtId) - mnUpdateEvtId = Application::PostUserEvent(LINK( this, Ruler, ImplUpdateHdl), NULL ); + mnUpdateEvtId = Application::PostUserEvent(LINK( this, Ruler, ImplUpdateHdl), NULL, true); } } @@ -2196,7 +2196,7 @@ void Ruler::Resize() Invalidate(); mnUpdateFlags |= RULER_UPDATE_LINES; if ( !mnUpdateEvtId ) - mnUpdateEvtId = Application::PostUserEvent( LINK( this, Ruler, ImplUpdateHdl ), NULL ); + mnUpdateEvtId = Application::PostUserEvent( LINK( this, Ruler, ImplUpdateHdl ), NULL, true ); } mbFormat = true; @@ -2340,7 +2340,7 @@ void Ruler::Activate() // update positionlies - draw is delayed mnUpdateFlags |= RULER_UPDATE_LINES; if ( !mnUpdateEvtId ) - mnUpdateEvtId = Application::PostUserEvent( LINK( this, Ruler, ImplUpdateHdl ), NULL ); + mnUpdateEvtId = Application::PostUserEvent( LINK( this, Ruler, ImplUpdateHdl ), NULL, true ); } void Ruler::Deactivate() diff --git a/svtools/source/control/tabbar.cxx b/svtools/source/control/tabbar.cxx index 7df57d1..09c5442 100644 --- a/svtools/source/control/tabbar.cxx +++ b/svtools/source/control/tabbar.cxx @@ -427,7 +427,7 @@ bool TabBarEdit::PreNotify( NotifyEvent& rNEvt ) { if ( !mbPostEvt ) { - if ( PostUserEvent( LINK( this, TabBarEdit, ImplEndEditHdl ), reinterpret_cast<void*>(sal_False) ) ) + if ( PostUserEvent( LINK( this, TabBarEdit, ImplEndEditHdl ), reinterpret_cast<void*>(sal_False), true ) ) mbPostEvt = true; } return true; @@ -436,7 +436,7 @@ bool TabBarEdit::PreNotify( NotifyEvent& rNEvt ) { if ( !mbPostEvt ) { - if ( PostUserEvent( LINK( this, TabBarEdit, ImplEndEditHdl ), reinterpret_cast<void*>(sal_True) ) ) + if ( PostUserEvent( LINK( this, TabBarEdit, ImplEndEditHdl ), reinterpret_cast<void*>(sal_True), true ) ) mbPostEvt = true; } return true; @@ -451,7 +451,7 @@ void TabBarEdit::LoseFocus() { if ( !mbPostEvt ) { - if ( PostUserEvent( LINK( this, TabBarEdit, ImplEndEditHdl ), reinterpret_cast<void*>(sal_False) ) ) + if ( PostUserEvent( LINK( this, TabBarEdit, ImplEndEditHdl ), reinterpret_cast<void*>(sal_False), true ) ) mbPostEvt = true; } diff --git a/svtools/source/dialogs/addresstemplate.cxx b/svtools/source/dialogs/addresstemplate.cxx index fdcb525..88f079a 100644 --- a/svtools/source/dialogs/addresstemplate.cxx +++ b/svtools/source/dialogs/addresstemplate.cxx @@ -655,7 +655,7 @@ void AssignmentPersistentData::ImplCommit() for (sal_Int32 i = 0; i<nAdjustedTokenCount; ++i) m_pImpl->aLogicalFieldNames.push_back(sLogicalFieldNames.getToken(i, ';')); - PostUserEvent(LINK(this, AddressBookSourceDialog, OnDelayedInitialize)); + PostUserEvent(LINK(this, AddressBookSourceDialog, OnDelayedInitialize), NULL, true); // so the dialog will at least show up before we do the loading of the // configuration data and the (maybe time consuming) analysis of the data source/table to select diff --git a/svx/source/fmcomp/fmgridcl.cxx b/svx/source/fmcomp/fmgridcl.cxx index 71290f0..413bae0 100644 --- a/svx/source/fmcomp/fmgridcl.cxx +++ b/svx/source/fmcomp/fmgridcl.cxx @@ -363,7 +363,7 @@ sal_Int8 FmGridHeader::ExecuteDrop( const ExecuteDropEvent& _rEvt ) m_pImpl->xDroppedStatement = xStatement; m_pImpl->xDroppedResultSet = xResultSet; - PostUserEvent(LINK(this, FmGridHeader, OnAsyncExecuteDrop)); + PostUserEvent(LINK(this, FmGridHeader, OnAsyncExecuteDrop), NULL, true); } catch (Exception&) { diff --git a/svx/source/fmcomp/gridctrl.cxx b/svx/source/fmcomp/gridctrl.cxx index df26ebb..76920e1 100644 --- a/svx/source/fmcomp/gridctrl.cxx +++ b/svx/source/fmcomp/gridctrl.cxx @@ -2679,7 +2679,7 @@ void DbGridControl::PostExecuteRowContextMenu(sal_uInt16 /*nRow*/, const PopupMe // delete asynchronously if (m_nDeleteEvent) Application::RemoveUserEvent(m_nDeleteEvent); - m_nDeleteEvent = Application::PostUserEvent(LINK(this,DbGridControl,OnDelete)); + m_nDeleteEvent = Application::PostUserEvent(LINK(this,DbGridControl,OnDelete), NULL, true); break; case SID_FM_RECORD_UNDO: Undo(); @@ -3258,7 +3258,7 @@ bool DbGridControl::PreNotify(NotifyEvent& rEvt) // delete asynchronously if (m_nDeleteEvent) Application::RemoveUserEvent(m_nDeleteEvent); - m_nDeleteEvent = Application::PostUserEvent(LINK(this,DbGridControl,OnDelete)); + m_nDeleteEvent = Application::PostUserEvent(LINK(this,DbGridControl,OnDelete), NULL, true); return true; } } @@ -3434,7 +3434,7 @@ void DbGridControl::implAdjustInSolarThread(bool _bRows) ::osl::MutexGuard aGuard(m_aAdjustSafety); if (::osl::Thread::getCurrentIdentifier() != Application::GetMainThreadIdentifier()) { - m_nAsynAdjustEvent = PostUserEvent(LINK(this, DbGridControl, OnAsyncAdjust), reinterpret_cast< void* >( _bRows )); + m_nAsynAdjustEvent = PostUserEvent(LINK(this, DbGridControl, OnAsyncAdjust), reinterpret_cast< void* >( _bRows ), true); m_bPendingAdjustRows = _bRows; if (_bRows) SAL_INFO("svx.fmcomp", "posting an AdjustRows"); diff --git a/svx/source/form/delayedevent.cxx b/svx/source/form/delayedevent.cxx index f06fc1d..1063d0f 100644 --- a/svx/source/form/delayedevent.cxx +++ b/svx/source/form/delayedevent.cxx @@ -17,20 +17,11 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ - #include "delayedevent.hxx" - #include <vcl/svapp.hxx> - namespace svxform { - - - - //= DelayedEvent - - void DelayedEvent::Call( void* _pArg ) { CancelPendingCall(); @@ -39,7 +30,6 @@ namespace svxform m_nEventId = Application::PostUserEvent( LINK( this, DelayedEvent, OnCall ), _pArg ); } - void DelayedEvent::CancelPendingCall() { if ( m_nEventId ) @@ -47,15 +37,11 @@ namespace svxform m_nEventId = 0; } - IMPL_LINK( DelayedEvent, OnCall, void*, _pArg ) { m_nEventId = 0; return m_aHandler.Call( _pArg ); } - - } - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/source/form/filtnav.cxx b/svx/source/form/filtnav.cxx index 98e1f45..0ac78df 100644 --- a/svx/source/form/filtnav.cxx +++ b/svx/source/form/filtnav.cxx @@ -1212,7 +1212,7 @@ bool FmFilterNavigator::EditedEntry( SvTreeListEntry* pEntry, const OUString& rN if (aText.isEmpty()) { // deleting the entry asynchron - PostUserEvent(LINK(this, FmFilterNavigator, OnRemove), pEntry); + PostUserEvent(LINK(this, FmFilterNavigator, OnRemove), pEntry, true); } else { diff --git a/svx/source/form/fmPropBrw.cxx b/svx/source/form/fmPropBrw.cxx index 3d86527..427a16a 100644 --- a/svx/source/form/fmPropBrw.cxx +++ b/svx/source/form/fmPropBrw.cxx @@ -648,7 +648,7 @@ void FmPropBrw::StateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPool if ( m_bInitialStateChange ) { // if we're just newly created, we want to have the focus - PostUserEvent( LINK( this, FmPropBrw, OnAsyncGetFocus ) ); + PostUserEvent( LINK( this, FmPropBrw, OnAsyncGetFocus ), NULL, true ); // and additionally, we want to show the page which was active during // our previous incarnation diff --git a/svx/source/form/navigatortree.cxx b/svx/source/form/navigatortree.cxx index 938c166..95152e4 100644 --- a/svx/source/form/navigatortree.cxx +++ b/svx/source/form/navigatortree.cxx @@ -1473,7 +1473,7 @@ namespace svxform if( !bRes ) { m_pEditEntry = pEntry; - nEditEvent = Application::PostUserEvent( LINK(this, NavigatorTree, OnEdit) ); + nEditEvent = Application::PostUserEvent( LINK(this, NavigatorTree, OnEdit), NULL, true ); } else SetCursor(pEntry, true); diff --git a/svx/source/gallery2/galbrws1.cxx b/svx/source/gallery2/galbrws1.cxx index 854ce84..24c20e4 100644 --- a/svx/source/gallery2/galbrws1.cxx +++ b/svx/source/gallery2/galbrws1.cxx @@ -324,7 +324,7 @@ void GalleryBrowser1::ImplEndGalleryThemeProperties( VclAbstractDialog2* pDialog } // destroy mpThemeProps asynchronously - Application::PostUserEvent( LINK( this, GalleryBrowser1, DestroyThemePropertiesDlgHdl ), pDialog ); + Application::PostUserEvent( LINK( this, GalleryBrowser1, DestroyThemePropertiesDlgHdl ), pDialog, true ); } IMPL_LINK( GalleryBrowser1, EndNewThemePropertiesDlgHdl, VclAbstractDialog2*, pDialog ) @@ -509,7 +509,7 @@ void GalleryBrowser1::Notify( SfxBroadcaster&, const SfxHint& rHint ) void GalleryBrowser1::ShowContextMenu() { - Application::PostUserEvent( LINK( this, GalleryBrowser1, ShowContextMenuHdl ), this ); + Application::PostUserEvent( LINK( this, GalleryBrowser1, ShowContextMenuHdl ), this, true ); } bool GalleryBrowser1::KeyInput( const KeyEvent& rKEvt, vcl::Window* pWindow ) diff --git a/svx/source/tbxctrls/colrctrl.cxx b/svx/source/tbxctrls/colrctrl.cxx index 0796f53..54f7260 100644 --- a/svx/source/tbxctrls/colrctrl.cxx +++ b/svx/source/tbxctrls/colrctrl.cxx @@ -150,7 +150,7 @@ void SvxColorValueSet_docking::Command(const CommandEvent& rCEvt) void SvxColorValueSet_docking::StartDrag( sal_Int8 , const Point& ) { - Application::PostUserEvent(LINK(this, SvxColorValueSet_docking, ExecDragHdl)); + Application::PostUserEvent(LINK(this, SvxColorValueSet_docking, ExecDragHdl), NULL, true); } void SvxColorValueSet_docking::DoDrag() diff --git a/sw/source/ui/config/mailconfigpage.cxx b/sw/source/ui/config/mailconfigpage.cxx index da58030..3c16c99 100644 --- a/sw/source/ui/config/mailconfigpage.cxx +++ b/sw/source/ui/config/mailconfigpage.cxx @@ -254,7 +254,7 @@ SwTestAccountSettingsDialog::SwTestAccountSettingsDialog(SwMailConfigPage* pPare m_pStopPB->SetClickHdl(LINK(this, SwTestAccountSettingsDialog, StopHdl)); - Application::PostUserEvent( LINK( this, SwTestAccountSettingsDialog, TestHdl ), this ); + Application::PostUserEvent( LINK( this, SwTestAccountSettingsDialog, TestHdl ), this, true ); } SwTestAccountSettingsDialog::~SwTestAccountSettingsDialog() diff --git a/sw/source/ui/dbui/addresslistdialog.cxx b/sw/source/ui/dbui/addresslistdialog.cxx index 550b626..0ca561c 100644 --- a/sw/source/ui/dbui/addresslistdialog.cxx +++ b/sw/source/ui/dbui/addresslistdialog.cxx @@ -475,7 +475,7 @@ IMPL_LINK_NOARG(SwAddressListDialog, ListBoxSelectHdl_Impl) { SvTreeListEntry* pSelect = m_pListLB->FirstSelected(); Application::PostUserEvent( LINK( this, SwAddressListDialog, - StaticListBoxSelectHdl_Impl ), pSelect ); + StaticListBoxSelectHdl_Impl ), pSelect, true ); return 0; } diff --git a/sw/source/ui/dbui/mmoutputtypepage.cxx b/sw/source/ui/dbui/mmoutputtypepage.cxx index 84b62ba2..7819538d 100644 --- a/sw/source/ui/dbui/mmoutputtypepage.cxx +++ b/sw/source/ui/dbui/mmoutputtypepage.cxx @@ -540,7 +540,7 @@ void SwSendMailDialog::IterateMails() void SwSendMailDialog::ShowDialog() { Application::PostUserEvent( LINK( this, SwSendMailDialog, - StartSendMails ), this ); + StartSendMails ), this, true ); ModelessDialog::Show(); } @@ -564,7 +564,7 @@ void SwSendMailDialog::DocumentSent( uno::Reference< mail::XMailMessage> xMessag m_pImpl->xMailDispatcher.is() && m_pImpl->xMailDispatcher->isStarted()) { Application::PostUserEvent( LINK( this, SwSendMailDialog, - StopSendMails ), this ); + StopSendMails ), this, true ); } Image aInsertImg = m_aImageList.GetImage( bResult ? FN_FORMULA_APPLY : FN_FORMULA_CANCEL ); diff --git a/sw/source/uibase/dochdl/swdtflvr.cxx b/sw/source/uibase/dochdl/swdtflvr.cxx index 884e383..360a16b 100644 --- a/sw/source/uibase/dochdl/swdtflvr.cxx +++ b/sw/source/uibase/dochdl/swdtflvr.cxx @@ -2586,7 +2586,7 @@ bool SwTransferable::_PasteFileName( TransferableDataHelper& rData, pSect->SetProtectFlag( true ); Application::PostUserEvent( LINK( &rSh, SwWrtShell, - InsertRegionDialog ), pSect ); + InsertRegionDialog ), pSect ); nRet = true; } else if( SW_PASTESDR_SETATTR == nAction || diff --git a/sw/source/uibase/docvw/SidebarWin.cxx b/sw/source/uibase/docvw/SidebarWin.cxx index c8fa945..516eb9a 100644 --- a/sw/source/uibase/docvw/SidebarWin.cxx +++ b/sw/source/uibase/docvw/SidebarWin.cxx @@ -1027,7 +1027,7 @@ void SwSidebarWin::DeactivatePostIt() if ( !IsProtected() && Engine()->GetEditEngine().GetText().isEmpty() ) { - mnEventId = Application::PostUserEvent( LINK( this, SwSidebarWin, DeleteHdl), 0 ); + mnEventId = Application::PostUserEvent( LINK( this, SwSidebarWin, DeleteHdl), 0, true ); } } @@ -1071,7 +1071,7 @@ void SwSidebarWin::ExecuteCommand(sal_uInt16 nSlot) case FN_DELETE_COMMENT: //Delete(); // do not kill the parent of our open popup menu - mnEventId = Application::PostUserEvent( LINK( this, SwSidebarWin, DeleteHdl), 0 ); + mnEventId = Application::PostUserEvent( LINK( this, SwSidebarWin, DeleteHdl), 0, true ); break; case FN_FORMAT_ALL_NOTES: case FN_DELETE_ALL_NOTES: diff --git a/sw/source/uibase/shells/textsh2.cxx b/sw/source/uibase/shells/textsh2.cxx index 0622645..671c9e3 100644 --- a/sw/source/uibase/shells/textsh2.cxx +++ b/sw/source/uibase/shells/textsh2.cxx @@ -155,7 +155,7 @@ void SwTextShell::ExecDB(SfxRequest &rReq) pNew->xConnection = xConnection; Application::PostUserEvent( LINK( this, SwBaseShell, - InsertDBTextHdl ), pNew ); + InsertDBTextHdl ), pNew ); // the pNew will be removed in InsertDBTextHdl !! } } diff --git a/sw/source/uibase/utlui/glbltree.cxx b/sw/source/uibase/utlui/glbltree.cxx index e068da2..e622d58 100644 --- a/sw/source/uibase/utlui/glbltree.cxx +++ b/sw/source/uibase/utlui/glbltree.cxx @@ -1179,8 +1179,7 @@ void SwGlobalTree::OpenDoc(const SwGlblDocContent* pCont) { bFound = true; SwGlobalTree::SetShowShell(pCurr); - Application::PostUserEvent( LINK( - this, SwGlobalTree, ShowFrameHdl ) ); + Application::PostUserEvent( LINK( this, SwGlobalTree, ShowFrameHdl ), NULL, true ); pCurr = 0; } else diff --git a/sw/source/uibase/utlui/navipi.cxx b/sw/source/uibase/utlui/navipi.cxx index 25e7277..1141bef 100644 --- a/sw/source/uibase/utlui/navipi.cxx +++ b/sw/source/uibase/utlui/navipi.cxx @@ -217,7 +217,7 @@ IMPL_LINK_TYPED( SwNavigationPI, ToolBoxSelectHdl, ToolBox *, pBox, void ) { // #i75416# move the execution of the search to an asynchronously called static link bool* pbNext = new bool( FN_DOWN == nCurrItemId ); - Application::PostUserEvent( LINK(pView, SwView, MoveNavigationHdl), pbNext ); + Application::PostUserEvent( LINK(pView, SwView, MoveNavigationHdl), pbNext, true ); } break; case FN_SHOW_ROOT: diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx index d76d0c9..c87ed80 100644 --- a/vcl/source/window/dialog.cxx +++ b/vcl/source/window/dialog.cxx @@ -604,7 +604,7 @@ bool Dialog::Notify( NotifyEvent& rNEvt ) // like e.g. SfxModelessDialog which destroy themselves inside Close() // post this Close asynchronous so we can leave our key handler before // we get destroyed - PostUserEvent( LINK( this, Dialog, ImplAsyncCloseHdl ), this , true); + PostUserEvent( LINK( this, Dialog, ImplAsyncCloseHdl ), this, true); return true; } } commit 9aebad8b58a7ee36284e465a40101d2a045d00dd Author: Michael Meeks <michael.me...@collabora.com> Date: Mon May 25 20:20:22 2015 +0100 tdf#91525 - dispose SfxControllerItem member. Change-Id: I71b32c1db2f4695deb90412e83b9e7883e9bf1d7 diff --git a/svx/source/dialog/_bmpmask.cxx b/svx/source/dialog/_bmpmask.cxx index 90d97f3..b7b7217 100644 --- a/svx/source/dialog/_bmpmask.cxx +++ b/svx/source/dialog/_bmpmask.cxx @@ -335,8 +335,6 @@ SvxBmpMaskSelectItem::SvxBmpMaskSelectItem( sal_uInt16 nId_, SvxBmpMask& rMask, { } - - void SvxBmpMaskSelectItem::StateChanged( sal_uInt16 nSID, SfxItemState /*eState*/, const SfxPoolItem* pItem ) { @@ -487,6 +485,7 @@ void SvxBmpMask::dispose() m_pQSet4.disposeAndClear(); m_pCtlPipette.disposeAndClear(); delete pData; + pData = NULL; m_pTbxPipette.clear(); m_pBtnExec.clear(); m_pCbx1.clear(); @@ -503,6 +502,7 @@ void SvxBmpMask::dispose() m_pLbColor4.clear(); m_pCbxTrans.clear(); m_pLbColorTrans.clear(); + aSelItem.dispose(); SfxDockingWindow::dispose(); } commit 010eb0628f8f934c3c3d41f4b6338fa8935c95b9 Author: Michael Meeks <michael.me...@collabora.com> Date: Sat May 23 22:28:08 2015 +0100 tdf#91431 - fix post-dispose focus issue in color window. Change-Id: I7990cbddc8c664da5ec6521cf8e036ca67d5ce0e diff --git a/svx/source/tbxctrls/grafctrl.cxx b/svx/source/tbxctrls/grafctrl.cxx index 3e5e255..cb5add9 100644 --- a/svx/source/tbxctrls/grafctrl.cxx +++ b/svx/source/tbxctrls/grafctrl.cxx @@ -307,7 +307,8 @@ void ImplGrafControl::dispose() void ImplGrafControl::GetFocus() { - maField->GrabFocus(); + if (maField) + maField->GrabFocus(); } class ImplGrafModeControl : public ListBox commit 08ab1bc21e327b4178877aafe0424d8888a09e9b Author: Michael Meeks <michael.me...@collabora.com> Date: Sat May 23 19:44:15 2015 +0100 VclPtr - add compat methods for old-style focus / notification. The previous code would only invoke Window:: methods by the time we hit the destructor; do the same to avoid fixing more scattered crashers for now. Reviewed-on: https://gerrit.libreoffice.org/15880 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Michael Meeks <michael.me...@collabora.com> Conflicts: vcl/source/control/slider.cxx Change-Id: Ibdcd1290309bb7fc31a44d534c52d357da022591 diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx index 9e760e3..4b167a3 100644 --- a/include/vcl/window.hxx +++ b/include/vcl/window.hxx @@ -763,6 +763,14 @@ public: virtual bool Notify( NotifyEvent& rNEvt ); virtual vcl::Window* GetPreferredKeyInputWindow(); + // These methods call the relevant virtual method when not in/post dispose + void CompatGetFocus(); + void CompatLoseFocus(); + void CompatStateChanged( StateChangedType nStateChange ); + void CompatDataChanged( const DataChangedEvent& rDCEvt ); + bool CompatPreNotify( NotifyEvent& rNEvt ); + bool CompatNotify( NotifyEvent& rNEvt ); + void AddEventListener( const Link<>& rEventListener ); void RemoveEventListener( const Link<>& rEventListener ); void AddChildEventListener( const Link<>& rEventListener ); diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index fa49f99..b6256bd 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -1545,7 +1545,7 @@ void PushButton::SetSymbol( SymbolType eSymbol ) if ( meSymbol != eSymbol ) { meSymbol = eSymbol; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } } @@ -1559,7 +1559,7 @@ void PushButton::SetDropDown( PushButtonDropdownStyle nStyle ) if ( mnDDStyle != nStyle ) { mnDDStyle = nStyle; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } } @@ -1581,7 +1581,7 @@ void PushButton::SetState( TriState eState ) ImplGetButtonState() |= DrawButtonFlags::DontKnow; } - StateChanged( StateChangedType::State ); + CompatStateChanged( StateChangedType::State ); Toggle(); } } @@ -1591,7 +1591,7 @@ void PushButton::SetPressed( bool bPressed ) if ( mbPressed != bPressed ) { mbPressed = bPressed; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } } @@ -2638,7 +2638,7 @@ bool RadioButton::SetModeRadioImage( const Image& rImage ) if ( rImage != maImage ) { maImage = rImage; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); queue_resize(); } return true; @@ -2656,7 +2656,7 @@ void RadioButton::SetState( bool bCheck ) if ( mbChecked != bCheck ) { mbChecked = bCheck; - StateChanged( StateChangedType::State ); + CompatStateChanged( StateChangedType::State ); Toggle(); } } @@ -2713,7 +2713,7 @@ void RadioButton::Check( bool bCheck ) mbChecked = bCheck; ImplDelData aDelData; ImplAddDel( &aDelData ); - StateChanged( StateChangedType::State ); + CompatStateChanged( StateChangedType::State ); if ( aDelData.IsDead() ) return; if ( bCheck && mbRadioCheck ) diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx index b30317f..b60774d 100644 --- a/vcl/source/control/combobox.cxx +++ b/vcl/source/control/combobox.cxx @@ -664,7 +664,7 @@ void ComboBox::StateChanged( StateChangedType nType ) mpBtn->EnableRTL( IsRTLEnabled() ); ImplInitDropDownButton( mpBtn ); } - mpSubEdit->StateChanged( StateChangedType::Mirroring ); + mpSubEdit->CompatStateChanged( StateChangedType::Mirroring ); mpImplLB->EnableRTL( IsRTLEnabled() ); Resize(); } diff --git a/vcl/source/control/ctrl.cxx b/vcl/source/control/ctrl.cxx index 38aa416..a0a70e5 100644 --- a/vcl/source/control/ctrl.cxx +++ b/vcl/source/control/ctrl.cxx @@ -81,7 +81,7 @@ void Control::EnableRTL( bool bEnable ) // convenience: for controls also switch layout mode SetLayoutMode( bEnable ? TEXT_LAYOUT_BIDI_RTL | TEXT_LAYOUT_TEXTORIGIN_LEFT : TEXT_LAYOUT_TEXTORIGIN_LEFT ); - StateChanged( StateChangedType::Mirroring ); + CompatStateChanged( StateChangedType::Mirroring ); OutputDevice::EnableRTL(bEnable); } @@ -256,7 +256,7 @@ bool Control::Notify( NotifyEvent& rNEvt ) if ( !mbHasControlFocus ) { mbHasControlFocus = true; - StateChanged( StateChangedType::ControlFocus ); + CompatStateChanged( StateChangedType::ControlFocus ); if ( ImplCallEventListenersAndHandler( VCLEVENT_CONTROL_GETFOCUS, maGetFocusHdl, this ) ) // been destroyed within the handler return true; @@ -270,7 +270,7 @@ bool Control::Notify( NotifyEvent& rNEvt ) if ( !pFocusWin || !ImplIsWindowOrChild( pFocusWin ) ) { mbHasControlFocus = false; - StateChanged( StateChangedType::ControlFocus ); + CompatStateChanged( StateChangedType::ControlFocus ); if ( ImplCallEventListenersAndHandler( VCLEVENT_CONTROL_LOSEFOCUS, maLoseFocusHdl, this ) ) // been destroyed within the handler return true; diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx index 1cc602b..3c211b7 100644 --- a/vcl/source/control/edit.cxx +++ b/vcl/source/control/edit.cxx @@ -2454,7 +2454,7 @@ void Edit::SetReadOnly( bool bReadOnly ) if ( mpSubEdit ) mpSubEdit->SetReadOnly( bReadOnly ); - StateChanged( StateChangedType::ReadOnly ); + CompatStateChanged( StateChangedType::ReadOnly ); } } diff --git a/vcl/source/control/fixed.cxx b/vcl/source/control/fixed.cxx index dd7c27e..533d9c9 100644 --- a/vcl/source/control/fixed.cxx +++ b/vcl/source/control/fixed.cxx @@ -843,7 +843,7 @@ void FixedBitmap::DataChanged( const DataChangedEvent& rDCEvt ) void FixedBitmap::SetBitmap( const Bitmap& rBitmap ) { maBitmap = rBitmap; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); queue_resize(); } @@ -1020,7 +1020,7 @@ void FixedImage::SetImage( const Image& rImage ) if ( rImage != maImage ) { maImage = rImage; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); queue_resize(); } } diff --git a/vcl/source/control/ilstbox.cxx b/vcl/source/control/ilstbox.cxx index beca62b..7438cce 100644 --- a/vcl/source/control/ilstbox.cxx +++ b/vcl/source/control/ilstbox.cxx @@ -2205,7 +2205,7 @@ void ImplListBox::Clear() } mpVScrollBar->SetThumbPos( 0 ); mpHScrollBar->SetThumbPos( 0 ); - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } sal_Int32 ImplListBox::InsertEntry( sal_Int32 nPos, const OUString& rStr ) @@ -2217,7 +2217,7 @@ sal_Int32 ImplListBox::InsertEntry( sal_Int32 nPos, const OUString& rStr ) delete pNewEntry; return nNewPos; } - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); return nNewPos; } @@ -2230,14 +2230,14 @@ sal_Int32 ImplListBox::InsertEntry( sal_Int32 nPos, const OUString& rStr, const delete pNewEntry; return nNewPos; } - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); return nNewPos; } void ImplListBox::RemoveEntry( sal_Int32 nPos ) { maLBWindow->RemoveEntry( nPos ); - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } void ImplListBox::SetEntryFlags( sal_Int32 nPos, ListBoxEntryFlags nFlags ) @@ -2277,7 +2277,7 @@ void ImplListBox::Resize() IMPL_LINK_NOARG(ImplListBox, MRUChanged) { - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); return 1; } @@ -2593,7 +2593,7 @@ void ImplListBox::SetMRUEntries( const OUString& rEntries, sal_Unicode cSep ) { maLBWindow->GetEntryList()->SetMRUCount( nMRUCount ); SetSeparatorPos( nMRUCount ? nMRUCount-1 : 0 ); - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } } diff --git a/vcl/source/control/lstbox.cxx b/vcl/source/control/lstbox.cxx index 3a4d633..3f8f5e3 100644 --- a/vcl/source/control/lstbox.cxx +++ b/vcl/source/control/lstbox.cxx @@ -1404,7 +1404,7 @@ void ListBox::SetReadOnly( bool bReadOnly ) if ( mpImplLB->IsReadOnly() != bReadOnly ) { mpImplLB->SetReadOnly( bReadOnly ); - StateChanged( StateChangedType::ReadOnly ); + CompatStateChanged( StateChangedType::ReadOnly ); } } diff --git a/vcl/source/control/scrbar.cxx b/vcl/source/control/scrbar.cxx index 8e9f4b7..da769c8 100644 --- a/vcl/source/control/scrbar.cxx +++ b/vcl/source/control/scrbar.cxx @@ -1387,7 +1387,7 @@ void ScrollBar::SetRange( const Range& rRange ) if ( mnThumbPos < mnMinRange ) mnThumbPos = mnMinRange; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } } @@ -1401,7 +1401,7 @@ void ScrollBar::SetThumbPos( long nNewThumbPos ) if ( mnThumbPos != nNewThumbPos ) { mnThumbPos = nNewThumbPos; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } } @@ -1416,7 +1416,7 @@ void ScrollBar::SetVisibleSize( long nNewSize ) mnThumbPos = mnMaxRange-mnVisibleSize; if ( mnThumbPos < mnMinRange ) mnThumbPos = mnMinRange; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } } diff --git a/vcl/source/control/slider.cxx b/vcl/source/control/slider.cxx index fb566e8..04dcab6 100644 --- a/vcl/source/control/slider.cxx +++ b/vcl/source/control/slider.cxx @@ -948,7 +948,7 @@ void Slider::SetRange( const Range& rRange ) if ( mnThumbPos < mnMinRange ) mnThumbPos = mnMinRange; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } } @@ -962,7 +962,7 @@ void Slider::SetThumbPos( long nNewThumbPos ) if ( mnThumbPos != nNewThumbPos ) { mnThumbPos = nNewThumbPos; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } } diff --git a/vcl/source/control/spinbtn.cxx b/vcl/source/control/spinbtn.cxx index 2f196d6..6d1d5f3 100644 --- a/vcl/source/control/spinbtn.cxx +++ b/vcl/source/control/spinbtn.cxx @@ -76,7 +76,7 @@ void SpinButton::Up() if (ImplIsUpperEnabled()) { mnValue += mnValueStep; - StateChanged(StateChangedType::Data); + CompatStateChanged(StateChangedType::Data); ImplMoveFocus(true); } @@ -89,7 +89,7 @@ void SpinButton::Down() if (ImplIsLowerEnabled()) { mnValue -= mnValueStep; - StateChanged(StateChangedType::Data); + CompatStateChanged(StateChangedType::Data); ImplMoveFocus(false); } @@ -372,7 +372,7 @@ void SpinButton::SetRange( const Range& rRange ) if ( mnValue < mnMinRange ) mnValue = mnMinRange; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } } @@ -387,7 +387,7 @@ void SpinButton::SetValue( long nValue ) if ( mnValue != nValue ) { mnValue = nValue; - StateChanged( StateChangedType::Data ); + CompatStateChanged( StateChangedType::Data ); } } diff --git a/vcl/source/control/spinfld.cxx b/vcl/source/control/spinfld.cxx index 28cf70f..aa185e1 100644 --- a/vcl/source/control/spinfld.cxx +++ b/vcl/source/control/spinfld.cxx @@ -824,7 +824,7 @@ void SpinField::StateChanged(StateChangedType nType) else if( nType == StateChangedType::Mirroring ) { if (mpEdit) - mpEdit->StateChanged(StateChangedType::Mirroring); + mpEdit->CompatStateChanged(StateChangedType::Mirroring); Resize(); } } diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx index 93273a7..d76d0c9 100644 --- a/vcl/source/window/dialog.cxx +++ b/vcl/source/window/dialog.cxx @@ -805,7 +805,7 @@ bool Dialog::ImplStartExecuteModal() if ( GetParent() ) { NotifyEvent aNEvt( MouseNotifyEvent::EXECUTEDIALOG, this ); - GetParent()->Notify( aNEvt ); + GetParent()->CompatNotify( aNEvt ); } mbInExecute = true; SetModalInputMode( true ); @@ -933,7 +933,7 @@ void Dialog::EndDialog( long nResult ) if ( GetParent() ) { NotifyEvent aNEvt( MouseNotifyEvent::ENDEXECUTEDIALOG, this ); - GetParent()->Notify( aNEvt ); + GetParent()->CompatNotify( aNEvt ); } mpDialogImpl->mnResult = nResult; diff --git a/vcl/source/window/dlgctrl.cxx b/vcl/source/window/dlgctrl.cxx index eb899fd..e927590 100644 --- a/vcl/source/window/dlgctrl.cxx +++ b/vcl/source/window/dlgctrl.cxx @@ -689,11 +689,11 @@ bool Window::ImplDlgCtrl( const KeyEvent& rKEvt, bool bKeyInput ) { NotifyEvent aNEvt1( MouseNotifyEvent::LOSEFOCUS, pSWindow ); if ( !ImplCallPreNotify( aNEvt1 ) ) - pSWindow->LoseFocus(); + pSWindow->CompatLoseFocus(); pSWindow->mpWindowImpl->mnGetFocusFlags = nGetFocusFlags | GETFOCUS_AROUND; NotifyEvent aNEvt2( MouseNotifyEvent::GETFOCUS, pSWindow ); if ( !ImplCallPreNotify( aNEvt2 ) ) - pSWindow->GetFocus(); + pSWindow->CompatGetFocus(); pSWindow->mpWindowImpl->mnGetFocusFlags = 0; return true; } @@ -821,11 +821,11 @@ bool Window::ImplDlgCtrl( const KeyEvent& rKEvt, bool bKeyInput ) { NotifyEvent aNEvt1( MouseNotifyEvent::LOSEFOCUS, pSWindow ); if ( !ImplCallPreNotify( aNEvt1 ) ) - pSWindow->LoseFocus(); + pSWindow->CompatLoseFocus(); pSWindow->mpWindowImpl->mnGetFocusFlags = nGetFocusFlags | GETFOCUS_AROUND; NotifyEvent aNEvt2( MouseNotifyEvent::GETFOCUS, pSWindow ); if ( !ImplCallPreNotify( aNEvt2 ) ) - pSWindow->GetFocus(); + pSWindow->CompatGetFocus(); pSWindow->mpWindowImpl->mnGetFocusFlags = 0; return true; } diff --git a/vcl/source/window/event.cxx b/vcl/source/window/event.cxx index 3e729fd..61c11ab 100644 --- a/vcl/source/window/event.cxx +++ b/vcl/source/window/event.cxx @@ -38,8 +38,7 @@ void Window::DataChanged( const DataChangedEvent& ) void Window::NotifyAllChildren( DataChangedEvent& rDCEvt ) { - - DataChanged( rDCEvt ); + CompatDataChanged( rDCEvt ); vcl::Window* pChild = mpWindowImpl->mpFirstChild; while ( pChild ) @@ -53,7 +52,7 @@ bool Window::PreNotify( NotifyEvent& rNEvt ) { bool bDone = false; if ( mpWindowImpl->mpParent && !ImplIsOverlapWindow() ) - bDone = mpWindowImpl->mpParent->PreNotify( rNEvt ); + bDone = mpWindowImpl->mpParent->CompatPreNotify( rNEvt ); if ( !bDone ) { @@ -194,7 +193,7 @@ bool Window::Notify( NotifyEvent& rNEvt ) if ( !nRet ) { if ( mpWindowImpl->mpParent && !ImplIsOverlapWindow() ) - nRet = mpWindowImpl->mpParent->Notify( rNEvt ); + nRet = mpWindowImpl->mpParent->CompatNotify( rNEvt ); } return nRet; @@ -427,7 +426,7 @@ void Window::ImplCallInitShow() { mpWindowImpl->mbReallyShown = true; mpWindowImpl->mbInInitShow = true; - StateChanged( StateChangedType::InitShow ); + CompatStateChanged( StateChangedType::InitShow ); mpWindowImpl->mbInInitShow = false; vcl::Window* pWindow = mpWindowImpl->mpFirstOverlap; diff --git a/vcl/source/window/globalization.cxx b/vcl/source/window/globalization.cxx index 980a586..1c56638 100644 --- a/vcl/source/window/globalization.cxx +++ b/vcl/source/window/globalization.cxx @@ -24,7 +24,7 @@ namespace vcl { void Window::EnableRTL ( bool bEnable ) { - StateChanged( StateChangedType::Mirroring ); + CompatStateChanged( StateChangedType::Mirroring ); OutputDevice::EnableRTL(bEnable); } diff --git a/vcl/source/window/mouse.cxx b/vcl/source/window/mouse.cxx index 6dd6014..cab23bc 100644 --- a/vcl/source/window/mouse.cxx +++ b/vcl/source/window/mouse.cxx @@ -356,7 +356,7 @@ void Window::ImplGrabFocus( sal_uInt16 nFlags ) pOldFocusWindow->EndTracking( TrackingEventFlags::Cancel | TrackingEventFlags::Focus ); NotifyEvent aNEvt( MouseNotifyEvent::LOSEFOCUS, pOldFocusWindow ); if ( !ImplCallPreNotify( aNEvt ) ) - pOldFocusWindow->LoseFocus(); + pOldFocusWindow->CompatLoseFocus(); pOldFocusWindow->ImplCallDeactivateListeners( this ); } @@ -384,7 +384,7 @@ void Window::ImplGrabFocus( sal_uInt16 nFlags ) mpWindowImpl->mnGetFocusFlags |= GETFOCUS_FLOATWIN_POPUPMODEEND_CANCEL; NotifyEvent aNEvt( MouseNotifyEvent::GETFOCUS, this ); if ( !ImplCallPreNotify( aNEvt ) && !aDogTag.IsDead() ) - GetFocus(); + CompatGetFocus(); if( !aDogTag.IsDead() ) ImplCallActivateListeners( (pOldFocusWindow && ! aOldFocusDel.IsDead()) ? pOldFocusWindow : NULL ); if( !aDogTag.IsDead() ) diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 17a4590..8be6e90 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -398,7 +398,7 @@ void Window::dispose() // announce the window is to be destroyed { NotifyEvent aNEvt( MouseNotifyEvent::DESTROY, this ); - Notify( aNEvt ); + CompatNotify( aNEvt ); } // EndExtTextInputMode @@ -1910,14 +1910,14 @@ void Window::SimulateKeyPress( sal_uInt16 nKeyCode ) const void Window::KeyInput( const KeyEvent& rKEvt ) { NotifyEvent aNEvt( MouseNotifyEvent::KEYINPUT, this, &rKEvt ); - if ( !Notify( aNEvt ) ) + if ( !CompatNotify( aNEvt ) ) mpWindowImpl->mbKeyInput = true; } void Window::KeyUp( const KeyEvent& rKEvt ) { NotifyEvent aNEvt( MouseNotifyEvent::KEYUP, this, &rKEvt ); - if ( !Notify( aNEvt ) ) + if ( !CompatNotify( aNEvt ) ) mpWindowImpl->mbKeyUp = true; } @@ -1944,13 +1944,13 @@ void Window::GetFocus() } NotifyEvent aNEvt( MouseNotifyEvent::GETFOCUS, this ); - Notify( aNEvt ); + CompatNotify( aNEvt ); } void Window::LoseFocus() { NotifyEvent aNEvt( MouseNotifyEvent::LOSEFOCUS, this ); - Notify( aNEvt ); + CompatNotify( aNEvt ); } void Window::RequestHelp( const HelpEvent& rHEvt ) @@ -2008,7 +2008,7 @@ void Window::Command( const CommandEvent& rCEvt ) CallEventListeners( VCLEVENT_WINDOW_COMMAND, (void*)&rCEvt ); NotifyEvent aNEvt( MouseNotifyEvent::COMMAND, this, &rCEvt ); - if ( !Notify( aNEvt ) ) + if ( !CompatNotify( aNEvt ) ) mpWindowImpl->mbCommand = true; } @@ -2064,12 +2064,11 @@ bool Window::IsLocked( bool bChildren ) const void Window::SetStyle( WinBits nStyle ) { - - if ( mpWindowImpl->mnStyle != nStyle ) + if ( mpWindowImpl && mpWindowImpl->mnStyle != nStyle ) { mpWindowImpl->mnPrevStyle = mpWindowImpl->mnStyle; mpWindowImpl->mnStyle = nStyle; - StateChanged( StateChangedType::Style ); + CompatStateChanged( StateChangedType::Style ); } } @@ -2093,7 +2092,7 @@ void Window::SetExtendedStyle( WinBits nExtendedStyle ) } mpWindowImpl->mnPrevExtendedStyle = mpWindowImpl->mnExtendedStyle; mpWindowImpl->mnExtendedStyle = nExtendedStyle; - StateChanged( StateChangedType::ExtendedStyle ); + CompatStateChanged( StateChangedType::ExtendedStyle ); } } @@ -2303,7 +2302,7 @@ void Window::Show(bool bVisible, sal_uInt16 nFlags) mpWindowImpl->mpFrame->Show( false, false ); } - StateChanged( StateChangedType::Visible ); + CompatStateChanged( StateChangedType::Visible ); if ( mpWindowImpl->mbReallyVisible ) { @@ -2391,7 +2390,7 @@ void Window::Show(bool bVisible, sal_uInt16 nFlags) ImplCallResize(); } - StateChanged( StateChangedType::Visible ); + CompatStateChanged( StateChangedType::Visible ); vcl::Window* pTestParent; if ( ImplIsOverlapWindow() ) @@ -2578,7 +2577,7 @@ void Window::Enable( bool bEnable, bool bChild ) mpWindowImpl->mbDisabled = !bEnable; if ( mpWindowImpl->mpSysObj ) mpWindowImpl->mpSysObj->Enable( bEnable && !mpWindowImpl->mbInputDisabled ); - StateChanged( StateChangedType::Enable ); + CompatStateChanged( StateChangedType::Enable ); CallEventListeners( bEnable ? VCLEVENT_WINDOW_ENABLED : VCLEVENT_WINDOW_DISABLED ); } @@ -2673,7 +2672,7 @@ void Window::EnableInput( bool bEnable, bool bChild ) if ( bNotify ) { NotifyEvent aNEvt( bEnable ? MouseNotifyEvent::INPUTENABLE : MouseNotifyEvent::INPUTDISABLE, this ); - Notify( aNEvt ); + CompatNotify( aNEvt ); } } @@ -3130,9 +3129,8 @@ void Window::Sync() void Window::SetUpdateMode( bool bUpdate ) { - mpWindowImpl->mbNoUpdate = !bUpdate; - StateChanged( StateChangedType::UpdateMode ); + CompatStateChanged( StateChangedType::UpdateMode ); } void Window::GrabFocus() @@ -3203,7 +3201,7 @@ void Window::SetText( const OUString& rStr ) pWindow->CallEventListeners( VCLEVENT_WINDOW_FRAMETITLECHANGED, &oldTitle ); } - StateChanged( StateChangedType::Text ); + CompatStateChanged( StateChangedType::Text ); } OUString Window::GetText() const @@ -3723,7 +3721,7 @@ void Window::EnableNativeWidget( bool bEnable ) // send datachanged event to allow for internal changes required for NWF // like clipmode, transparency, etc. DataChangedEvent aDCEvt( DataChangedEventType::SETTINGS, mxSettings.get(), AllSettingsFlags::STYLE ); - DataChanged( aDCEvt ); + CompatDataChanged( aDCEvt ); // sometimes the borderwindow is queried, so keep it in sync if( mpWindowImpl->mpBorderWindow ) @@ -3946,6 +3944,53 @@ void Window::SetDoubleBuffering(bool bDoubleBuffering) mpWindowImpl->mbDoubleBuffering = bDoubleBuffering; } +/* + * The rational here is that we moved destructors to + * dispose and this altered a lot of code paths, that + * are better left unchanged for now. + */ +#define COMPAT_BODY(method,args) \ + if (!mpWindowImpl || mpWindowImpl->mbInDispose) \ + Window::method args; \ + else \ + method args; + +void Window::CompatGetFocus() +{ + COMPAT_BODY(GetFocus,()) +} + +void Window::CompatLoseFocus() +{ + COMPAT_BODY(LoseFocus,()) +} + +void Window::CompatStateChanged( StateChangedType nStateChange ) +{ + COMPAT_BODY(StateChanged,(nStateChange)) +} + +void Window::CompatDataChanged( const DataChangedEvent& rDCEvt ) +{ + COMPAT_BODY(DataChanged,(rDCEvt)) +} + +bool Window::CompatPreNotify( NotifyEvent& rNEvt ) +{ + if (!mpWindowImpl || mpWindowImpl->mbInDispose) + return Window::PreNotify( rNEvt ); + else + return PreNotify( rNEvt ); +} + +bool Window::CompatNotify( NotifyEvent& rNEvt ) +{ + if (!mpWindowImpl || mpWindowImpl->mbInDispose) + return Window::Notify( rNEvt ); + else + return Notify( rNEvt ); +} + } /* namespace vcl */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/window/window2.cxx b/vcl/source/window/window2.cxx index dd436d9..1e70a62 100644 --- a/vcl/source/window/window2.cxx +++ b/vcl/source/window/window2.cxx @@ -509,10 +509,10 @@ bool Window::EndSaveFocus( sal_uIntPtr nSaveId, bool bRestore ) void Window::SetZoom( const Fraction& rZoom ) { - if ( mpWindowImpl->maZoom != rZoom ) + if ( mpWindowImpl && mpWindowImpl->maZoom != rZoom ) { mpWindowImpl->maZoom = rZoom; - StateChanged( StateChangedType::Zoom ); + CompatStateChanged( StateChangedType::Zoom ); } } @@ -577,11 +577,11 @@ long Window::CalcZoom( long nCalc ) const void Window::SetControlFont() { - if (mpWindowImpl->mpControlFont) + if (mpWindowImpl && mpWindowImpl->mpControlFont) { delete mpWindowImpl->mpControlFont; mpWindowImpl->mpControlFont = NULL; - StateChanged(StateChangedType::ControlFont); + CompatStateChanged(StateChangedType::ControlFont); } } @@ -602,7 +602,7 @@ void Window::SetControlFont(const vcl::Font& rFont) else mpWindowImpl->mpControlFont = new vcl::Font(rFont); - StateChanged(StateChangedType::ControlFont); + CompatStateChanged(StateChangedType::ControlFont); } vcl::Font Window::GetControlFont() const @@ -630,7 +630,7 @@ void Window::SetControlForeground() { mpWindowImpl->maControlForeground = Color(COL_TRANSPARENT); mpWindowImpl->mbControlForeground = false; - StateChanged(StateChangedType::ControlForeground); + CompatStateChanged(StateChangedType::ControlForeground); } } @@ -642,7 +642,7 @@ void Window::SetControlForeground(const Color& rColor) { mpWindowImpl->maControlForeground = Color(COL_TRANSPARENT); mpWindowImpl->mbControlForeground = false; - StateChanged(StateChangedType::ControlForeground); + CompatStateChanged(StateChangedType::ControlForeground); } } else @@ -651,7 +651,7 @@ void Window::SetControlForeground(const Color& rColor) { mpWindowImpl->maControlForeground = rColor; mpWindowImpl->mbControlForeground = true; - StateChanged(StateChangedType::ControlForeground); + CompatStateChanged(StateChangedType::ControlForeground); } } } @@ -670,7 +670,7 @@ void Window::SetControlBackground() { mpWindowImpl->maControlBackground = Color(COL_TRANSPARENT); mpWindowImpl->mbControlBackground = false; - StateChanged(StateChangedType::ControlBackground); + CompatStateChanged(StateChangedType::ControlBackground); } } @@ -682,7 +682,7 @@ void Window::SetControlBackground(const Color& rColor) { mpWindowImpl->maControlBackground = Color(COL_TRANSPARENT); mpWindowImpl->mbControlBackground = false; - StateChanged(StateChangedType::ControlBackground); + CompatStateChanged(StateChangedType::ControlBackground); } } else @@ -691,7 +691,7 @@ void Window::SetControlBackground(const Color& rColor) { mpWindowImpl->maControlBackground = rColor; mpWindowImpl->mbControlBackground = true; - StateChanged(StateChangedType::ControlBackground); + CompatStateChanged(StateChangedType::ControlBackground); } } } diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx index ccbbb62..be93192 100644 --- a/vcl/source/window/winproc.cxx +++ b/vcl/source/window/winproc.cxx @@ -57,7 +57,7 @@ bool ImplCallPreNotify( NotifyEvent& rEvt ) { return Application::CallEventHooks( rEvt ) - || rEvt.GetWindow()->PreNotify( rEvt ); + || rEvt.GetWindow()->CompatPreNotify( rEvt ); } static bool ImplHandleMouseFloatMode( vcl::Window* pChild, const Point& rMousePos, @@ -1866,7 +1866,7 @@ IMPL_LINK_NOARG(vcl::Window, ImplAsyncFocusHdl) { NotifyEvent aNEvt( MouseNotifyEvent::LOSEFOCUS, pFocusWin ); if ( !ImplCallPreNotify( aNEvt ) ) - pFocusWin->LoseFocus(); + pFocusWin->CompatLoseFocus(); pFocusWin->ImplCallDeactivateListeners( NULL ); } // XXX commit 41b234cfa52c9e41b1780d4686a140bcc1c7b27a Author: Michael Meeks <michael.me...@collabora.com> Date: Sat May 23 19:59:55 2015 +0100 tdf#91499 - cleanup AnyRefDialog VclPtr's with an explicit dispose method. Change-Id: Ib3571fc6d2aa9343bcfd2d6a5bdbd6b1d193c0f1 Reviewed-on: https://gerrit.libreoffice.org/15883 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Michael Meeks <michael.me...@collabora.com> Tested-by: Michael Meeks <michael.me...@collabora.com> diff --git a/sc/source/ui/inc/anyrefdg.hxx b/sc/source/ui/inc/anyrefdg.hxx index 5bcc688..5f717ff 100644 --- a/sc/source/ui/inc/anyrefdg.hxx +++ b/sc/source/ui/inc/anyrefdg.hxx @@ -127,6 +127,7 @@ private: DECL_LINK_TYPED( UpdateFocusHdl, Idle*, void ); protected: + void disposeRefHandler(); bool DoClose( sal_uInt16 nId ); static void SetDispatcherLock( bool bLock ); @@ -280,9 +281,16 @@ struct ScRefHdlrImpl: ScRefHdlrImplBase< TBase, bBindRef > SC_MOD()->RegisterRefWindow( static_cast<sal_uInt16>( static_cast<TDerived*>(this)->SLOTID ), this ); } - ~ScRefHdlrImpl() + virtual void dispose() SAL_OVERRIDE { SC_MOD()->UnregisterRefWindow( static_cast<sal_uInt16>( static_cast<TDerived*>(this)->SLOTID ), this ); + ScRefHdlrImplBase<TBase, bBindRef >::disposeRefHandler(); + TBase::dispose(); + } + + ~ScRefHdlrImpl() + { + dispose(); } }; diff --git a/sc/source/ui/miscdlgs/anyrefdg.cxx b/sc/source/ui/miscdlgs/anyrefdg.cxx index 99d4f58..34ecb42 100644 --- a/sc/source/ui/miscdlgs/anyrefdg.cxx +++ b/sc/source/ui/miscdlgs/anyrefdg.cxx @@ -823,6 +823,13 @@ bool ScRefHandler::EnterRefMode() ScRefHandler::~ScRefHandler() { + disposeRefHandler(); +} + +void ScRefHandler::disposeRefHandler() +{ + m_rWindow.clear(); + pActiveWin.clear(); LeaveRefMode(); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits