diff options
25 files changed, 249 insertions, 127 deletions
diff --git a/dbaccess/qa/complex/dbaccess/DatabaseDocument.java b/dbaccess/qa/complex/dbaccess/DatabaseDocument.java index 09f7871dbbbb..ceca1e431715 100644 --- a/dbaccess/qa/complex/dbaccess/DatabaseDocument.java +++ b/dbaccess/qa/complex/dbaccess/DatabaseDocument.java @@ -48,7 +48,6 @@ import com.sun.star.document.XDocumentEventBroadcaster; import com.sun.star.document.XDocumentEventListener; import com.sun.star.document.XEmbeddedScripts; import com.sun.star.document.XEventsSupplier; -import com.sun.star.document.XScriptInvocationContext; import com.sun.star.frame.DoubleInitializationException; import com.sun.star.lang.XComponent; import com.sun.star.frame.XComponentLoader; diff --git a/dbaccess/source/core/api/KeySet.cxx b/dbaccess/source/core/api/KeySet.cxx index fa2bde353d29..e39c5b0f57b2 100644 --- a/dbaccess/source/core/api/KeySet.cxx +++ b/dbaccess/source/core/api/KeySet.cxx @@ -157,8 +157,10 @@ DBG_NAME(OKeySet) OKeySet::OKeySet(const connectivity::OSQLTable& _xTable, const Reference< XIndexAccess>& _xTableKeys, const ::rtl::OUString& _rUpdateTableName, // this can be the alias or the full qualified name - const Reference< XSingleSelectQueryAnalyzer >& _xComposer) - :m_pKeyColumnNames(NULL) + const Reference< XSingleSelectQueryAnalyzer >& _xComposer, + const ORowSetValueVector& _aParameterValueForCache) + :m_aParameterValueForCache(_aParameterValueForCache) + ,m_pKeyColumnNames(NULL) ,m_pColumnNames(NULL) ,m_pForeignColumnNames(NULL) ,m_xTable(_xTable) @@ -304,6 +306,11 @@ void OKeySet::construct(const Reference< XResultSet>& _xDriverSet) break; } } + } // if ( aSeq.getLength() > 1 ) // special handling for join + const ::rtl::OUString sOldFilter = xAnalyzer->getFilter(); + if ( sOldFilter.getLength() ) + { + aFilter = sOldFilter + aAnd + aFilter; } xAnalyzer->setFilter(aFilter.makeStringAndClear()); m_xStatement = m_xConnection->prepareStatement(xAnalyzer->getQueryWithSubstitution()); @@ -1124,6 +1131,12 @@ void SAL_CALL OKeySet::refreshRow() throw(SQLException, RuntimeException) OSL_ENSURE(xParameter.is(),"No Parameter interface!"); xParameter->clearParameters(); sal_Int32 nPos=1; + connectivity::ORowVector< ORowSetValue >::Vector::const_iterator aParaIter = m_aParameterValueForCache.get().begin(); + connectivity::ORowVector< ORowSetValue >::Vector::const_iterator aParaEnd = m_aParameterValueForCache.get().end(); + for(++aParaIter;aParaIter != aParaEnd;++aParaIter,++nPos) + { + ::dbtools::setObjectWithInfo( xParameter, nPos, aParaIter->makeAny(), aParaIter->getTypeKind() ); + } connectivity::ORowVector< ORowSetValue >::Vector::const_iterator aIter = m_aKeyIter->second.first->get().begin(); SelectColumnsMetaData::const_iterator aPosIter = (*m_pKeyColumnNames).begin(); SelectColumnsMetaData::const_iterator aPosEnd = (*m_pKeyColumnNames).end(); diff --git a/dbaccess/source/core/api/KeySet.hxx b/dbaccess/source/core/api/KeySet.hxx index c930d1fe2b2e..4193f60506d1 100644 --- a/dbaccess/source/core/api/KeySet.hxx +++ b/dbaccess/source/core/api/KeySet.hxx @@ -97,6 +97,7 @@ namespace dbaccess ::std::vector< ::rtl::OUString > m_aAutoColumns; // contains all columns which are autoincrement ones + ORowSetValueVector m_aParameterValueForCache; SelectColumnsMetaData* m_pKeyColumnNames; // contains all key column names SelectColumnsMetaData* m_pColumnNames; // contains all column names SelectColumnsMetaData* m_pForeignColumnNames; // contains all column names of the rest @@ -139,7 +140,8 @@ namespace dbaccess OKeySet(const connectivity::OSQLTable& _xTable, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& _xTableKeys, const ::rtl::OUString& _rUpdateTableName, - const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryAnalyzer >& _xComposer); + const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryAnalyzer >& _xComposer, + const ORowSetValueVector& _aParameterValueForCache); // late ctor which can throw exceptions virtual void construct(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDriverSet); diff --git a/dbaccess/source/core/api/RowSet.cxx b/dbaccess/source/core/api/RowSet.cxx index f49d074ff3fc..ebbb982a6305 100644 --- a/dbaccess/source/core/api/RowSet.cxx +++ b/dbaccess/source/core/api/RowSet.cxx @@ -1716,13 +1716,14 @@ Reference< XResultSet > ORowSet::impl_prepareAndExecute_throw() // this exception doesn't matter here because when we catch an exception // then the driver doesn't support this feature } - + m_aParameterValueForCache.get().resize(1); Reference< XParameters > xParam( m_xStatement, UNO_QUERY_THROW ); size_t nParamCount( m_pParameters.is() ? m_pParameters->size() : m_aPrematureParamValues.get().size() ); for ( size_t i=1; i<=nParamCount; ++i ) { ORowSetValue& rParamValue( getParameterStorage( (sal_Int32)i ) ); ::dbtools::setObjectWithInfo( xParam, i, rParamValue.makeAny(), rParamValue.getTypeKind() ); + m_aParameterValueForCache.get().push_back(rParamValue); } xResultSet = m_xStatement->executeQuery(); @@ -1864,7 +1865,7 @@ void ORowSet::execute_NoApprove_NoNewConn(ResettableMutexGuard& _rClearForNotifi { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "frank.schoenheit@sun.com", "ORowSet::execute_NoApprove_NoNewConn: creating cache" ); - m_pCache = new ORowSetCache( xResultSet, m_xComposer.get(), m_aContext, aComposedUpdateTableName, m_bModified, m_bNew ); + m_pCache = new ORowSetCache( xResultSet, m_xComposer.get(), m_aContext, aComposedUpdateTableName, m_bModified, m_bNew,m_aParameterValueForCache ); if ( m_nResultSetConcurrency == ResultSetConcurrency::READ_ONLY ) { m_nPrivileges = Privilege::SELECT; diff --git a/dbaccess/source/core/api/RowSet.hxx b/dbaccess/source/core/api/RowSet.hxx index 90a0ad9c7928..25fa3a3415f6 100644 --- a/dbaccess/source/core/api/RowSet.hxx +++ b/dbaccess/source/core/api/RowSet.hxx @@ -133,6 +133,7 @@ namespace dbaccess (since we have not been executed, yet) */ ORowSetValueVector m_aPrematureParamValues; + ORowSetValueVector m_aParameterValueForCache; ::std::bit_vector m_aParametersSet; ::cppu::OInterfaceContainerHelper m_aRowsetListeners; diff --git a/dbaccess/source/core/api/RowSetCache.cxx b/dbaccess/source/core/api/RowSetCache.cxx index 38f075493f89..1472516faca5 100644 --- a/dbaccess/source/core/api/RowSetCache.cxx +++ b/dbaccess/source/core/api/RowSetCache.cxx @@ -137,7 +137,8 @@ ORowSetCache::ORowSetCache(const Reference< XResultSet >& _xRs, const ::comphelper::ComponentContext& _rContext, const ::rtl::OUString& _rUpdateTableName, sal_Bool& _bModified, - sal_Bool& _bNew) + sal_Bool& _bNew, + const ORowSetValueVector& _aParameterValueForCache) :m_xSet(_xRs) ,m_xMetaData(Reference< XResultSetMetaDataSupplier >(_xRs,UNO_QUERY)->getMetaData()) ,m_aContext( _rContext ) @@ -328,7 +329,7 @@ ORowSetCache::ORowSetCache(const Reference< XResultSet >& _xRs, } } - OKeySet* pKeySet = new OKeySet(m_aUpdateTable,xUpdateTableKeys,aUpdateTableName ,_xAnalyzer); + OKeySet* pKeySet = new OKeySet(m_aUpdateTable,xUpdateTableKeys,aUpdateTableName ,_xAnalyzer,_aParameterValueForCache); try { m_pCacheSet = pKeySet; diff --git a/dbaccess/source/core/api/RowSetCache.hxx b/dbaccess/source/core/api/RowSetCache.hxx index f89a1cd82caa..81b74a6a6d13 100644 --- a/dbaccess/source/core/api/RowSetCache.hxx +++ b/dbaccess/source/core/api/RowSetCache.hxx @@ -194,7 +194,8 @@ namespace dbaccess const ::comphelper::ComponentContext& _rContext, const ::rtl::OUString& _rUpdateTableName, sal_Bool& _bModified, - sal_Bool& _bNew); + sal_Bool& _bNew, + const ORowSetValueVector& _aParameterValueForCache); ~ORowSetCache(); diff --git a/dbaccess/source/core/api/statement.cxx b/dbaccess/source/core/api/statement.cxx index ac658ea1bba8..c4ddacd87db2 100644 --- a/dbaccess/source/core/api/statement.cxx +++ b/dbaccess/source/core/api/statement.cxx @@ -111,12 +111,14 @@ Sequence< Type > OStatementBase::getTypes() throw (RuntimeException) ::getCppuType( (const Reference< XWarningsSupplier > *)0 ), ::getCppuType( (const Reference< XCloseable > *)0 ), ::getCppuType( (const Reference< XMultipleResults > *)0 ), - ::getCppuType( (const Reference< XPreparedBatchExecution > *)0 ), ::getCppuType( (const Reference< ::com::sun::star::util::XCancellable > *)0 ), OSubComponent::getTypes() ); Reference< XGeneratedResultSet > xGRes(m_xAggregateAsSet, UNO_QUERY); if ( xGRes.is() ) aTypes = OTypeCollection(::getCppuType( (const Reference< XGeneratedResultSet > *)0 ),aTypes.getTypes()); + Reference< XPreparedBatchExecution > xPreparedBatchExecution(m_xAggregateAsSet, UNO_QUERY); + if ( xPreparedBatchExecution.is() ) + aTypes = OTypeCollection(::getCppuType( (const Reference< XPreparedBatchExecution > *)0 ),aTypes.getTypes()); return aTypes.getTypes(); } @@ -134,7 +136,6 @@ Any OStatementBase::queryInterface( const Type & rType ) throw (RuntimeException static_cast< XPropertySet * >( this ), static_cast< XWarningsSupplier * >( this ), static_cast< XCloseable * >( this ), - static_cast< XPreparedBatchExecution * >( this ), static_cast< XMultipleResults * >( this ), static_cast< ::com::sun::star::util::XCancellable * >( this )); if ( !aIface.hasValue() ) @@ -142,6 +143,12 @@ Any OStatementBase::queryInterface( const Type & rType ) throw (RuntimeException Reference< XGeneratedResultSet > xGRes(m_xAggregateAsSet, UNO_QUERY); if ( ::getCppuType( (const Reference< XGeneratedResultSet > *)0 ) == rType && xGRes.is() ) aIface = ::cppu::queryInterface(rType,static_cast< XGeneratedResultSet * >( this )); + } // if ( !aIface.hasValue() ) + if ( !aIface.hasValue() ) + { + Reference< XPreparedBatchExecution > xGRes(m_xAggregateAsSet, UNO_QUERY); + if ( ::getCppuType( (const Reference< XPreparedBatchExecution > *)0 ) == rType && xGRes.is() ) + aIface = ::cppu::queryInterface(rType,static_cast< XPreparedBatchExecution * >( this )); } } return aIface; @@ -583,6 +590,46 @@ sal_Bool OStatement::execute( const rtl::OUString& _rSQL ) throw( SQLException, ::rtl::OUString sSQL( impl_doEscapeProcessing_nothrow( _rSQL ) ); return m_xAggregateStatement->execute( sSQL ); } +//------------------------------------------------------------------------------ +void OStatement::addBatch( const rtl::OUString& _rSQL ) throw( SQLException, RuntimeException ) +{ + RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::execute" ); + MutexGuard aGuard(m_aMutex); + ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed); + + // first check the meta data + Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData(); + if (!xMeta.is() && !xMeta->supportsBatchUpdates()) + throwFunctionSequenceException(*this); + + ::rtl::OUString sSQL( impl_doEscapeProcessing_nothrow( _rSQL ) ); + Reference< XBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->addBatch( sSQL ); +} +//------------------------------------------------------------------------------ +void OStatement::clearBatch( ) throw( SQLException, RuntimeException ) +{ + RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::execute" ); + MutexGuard aGuard(m_aMutex); + ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed); + // first check the meta data + Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData(); + if (!xMeta.is() && !xMeta->supportsBatchUpdates()) + throwFunctionSequenceException(*this); + + Reference< XBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->clearBatch(); +} +//------------------------------------------------------------------------------ +Sequence< sal_Int32 > OStatement::executeBatch( ) throw( SQLException, RuntimeException ) +{ + RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::execute" ); + MutexGuard aGuard(m_aMutex); + ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed); + // first check the meta data + Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData(); + if (!xMeta.is() && !xMeta->supportsBatchUpdates()) + throwFunctionSequenceException(*this); + return Reference< XBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->executeBatch( ); +} //------------------------------------------------------------------------------ Reference< XConnection > OStatement::getConnection(void) throw( SQLException, RuntimeException ) diff --git a/dbaccess/source/core/inc/statement.hxx b/dbaccess/source/core/inc/statement.hxx index 33d3e87e2f12..82b031548e22 100644 --- a/dbaccess/source/core/inc/statement.hxx +++ b/dbaccess/source/core/inc/statement.hxx @@ -54,6 +54,7 @@ #ifndef _COM_SUN_STAR_SDBC_XPREPAREDBATCHEXECUTION_HDL_ #include <com/sun/star/sdbc/XPreparedBatchExecution.hpp> #endif +#include <com/sun/star/sdbc/XBatchExecution.hpp> #ifndef _COM_SUN_STAR_SDBC_XGENERATEDRESULTSET_HPP_ #include <com/sun/star/sdbc/XGeneratedResultSet.hpp> #endif @@ -72,9 +73,8 @@ #ifndef _COMPHELPER_BROADCASTHELPER_HXX_ #include <comphelper/broadcasthelper.hxx> #endif -#ifndef _CPPUHELPER_IMPLBASE2_HXX_ -#include <cppuhelper/implbase2.hxx> -#endif + +#include <cppuhelper/implbase3.hxx> //************************************************************ // OStatementBase @@ -171,8 +171,9 @@ protected: //************************************************************ // OStatement //************************************************************ -typedef ::cppu::ImplHelper2 < ::com::sun::star::sdbc::XStatement +typedef ::cppu::ImplHelper3 < ::com::sun::star::sdbc::XStatement , ::com::sun::star::lang::XServiceInfo + , ::com::sun::star::sdbc::XBatchExecution > OStatement_IFACE; class OStatement :public OStatementBase ,public OStatement_IFACE @@ -203,6 +204,13 @@ public: // OComponentHelper virtual void SAL_CALL disposing(); + // XBatchExecution + virtual void SAL_CALL addBatch( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL clearBatch( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL executeBatch( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); + + using OStatementBase::addBatch; + private: /** does escape processing for the given SQL command, if the our EscapeProcessing property allows so. diff --git a/dbaccess/source/inc/dbustrings.hrc b/dbaccess/source/inc/dbustrings.hrc index 009b263d6081..e044627d32cd 100644 --- a/dbaccess/source/inc/dbustrings.hrc +++ b/dbaccess/source/inc/dbustrings.hrc @@ -74,6 +74,7 @@ namespace dbaui DECLARE_CONSTASCII_USTRING(PROPERTY_DEFAULTCONTROL); DECLARE_CONSTASCII_USTRING(PROPERTY_TABSTOP); DECLARE_CONSTASCII_USTRING(PROPERTY_ENABLED); + DECLARE_CONSTASCII_USTRING(PROPERTY_MOUSE_WHEEL_BEHAVIOR); } #endif // DBACCESS_SHARED_DBUSTRINGS_HRC diff --git a/dbaccess/source/shared/dbustrings.cxx b/dbaccess/source/shared/dbustrings.cxx index 875342b73b07..7acbe561ffff 100644 --- a/dbaccess/source/shared/dbustrings.cxx +++ b/dbaccess/source/shared/dbustrings.cxx @@ -72,4 +72,5 @@ namespace dbaui IMPLEMENT_CONSTASCII_USTRING(PROPERTY_TABSTOP, "TabStop"); IMPLEMENT_CONSTASCII_USTRING(PROPERTY_DEFAULTCONTROL, "DefaultControl"); IMPLEMENT_CONSTASCII_USTRING(PROPERTY_ENABLED, "Enabled"); + IMPLEMENT_CONSTASCII_USTRING(PROPERTY_MOUSE_WHEEL_BEHAVIOR, "MouseWheelBehavior"); } diff --git a/dbaccess/source/ui/browser/brwctrlr.cxx b/dbaccess/source/ui/browser/brwctrlr.cxx index 706064da08f1..fdd9e7396d83 100644 --- a/dbaccess/source/ui/browser/brwctrlr.cxx +++ b/dbaccess/source/ui/browser/brwctrlr.cxx @@ -489,6 +489,7 @@ SbaXDataBrowserController::SbaXDataBrowserController(const Reference< ::com::sun :SbaXDataBrowserController_Base(_rM) ,m_pClipbordNotifier( NULL ) ,m_aAsyncGetCellFocus(LINK(this, SbaXDataBrowserController, OnAsyncGetCellFocus)) + ,m_aAsyncDisplayError( LINK( this, SbaXDataBrowserController, OnAsyncDisplayError ) ) ,m_sStateSaveRecord(ModuleRes(RID_STR_SAVE_CURRENT_RECORD)) ,m_sStateUndoRecord(ModuleRes(RID_STR_UNDO_MODIFY_RECORD)) ,m_sModuleIdentifier( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.DataSourceBrowser" ) ) ) @@ -498,7 +499,6 @@ SbaXDataBrowserController::SbaXDataBrowserController(const Reference< ::com::sun ,m_nFormActionNestingLevel(0) ,m_bLoadCanceled( sal_False ) ,m_bClosingKillOpen( sal_False ) - ,m_bErrorOccured( sal_False ) ,m_bCannotSelectUnfiltered( true ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaui", "Ocke.Janssen@sun.com", "SbaXDataBrowserController::SbaXDataBrowserController" ); @@ -608,7 +608,7 @@ sal_Bool SbaXDataBrowserController::reloadForm( const Reference< XLoadable >& _r } } - return _rxLoadable->isLoaded() && !errorOccured(); + return _rxLoadable->isLoaded(); } // ----------------------------------------------------------------------------- @@ -1201,6 +1201,7 @@ sal_Bool SbaXDataBrowserController::suspend(sal_Bool /*bSuspend*/) throw( Runtim DBG_ASSERT(m_nPendingLoadFinished == 0, "SbaXDataBrowserController::suspend : there shouldn't be a pending load !"); m_aAsyncGetCellFocus.CancelCall(); + m_aAsyncDisplayError.CancelCall(); m_aAsyncInvalidateAll.CancelCall(); sal_Bool bSuccess = SaveModified(); @@ -1345,17 +1346,30 @@ void SbaXDataBrowserController::frameAction(const ::com::sun::star::frame::Frame } //------------------------------------------------------------------------------ +IMPL_LINK( SbaXDataBrowserController, OnAsyncDisplayError, void*, /* _pNotInterestedIn */ ) +{ + OSQLMessageBox aDlg( getBrowserView(), m_aCurrentError ); + aDlg.Execute(); + return 0L; +} + +//------------------------------------------------------------------------------ void SbaXDataBrowserController::errorOccured(const ::com::sun::star::sdb::SQLErrorEvent& aEvent) throw( RuntimeException ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaui", "Ocke.Janssen@sun.com", "SbaXDataBrowserController::errorOccured" ); - SQLExceptionInfo aInfo(aEvent.Reason); - if ( aInfo.isValid() ) + ::osl::MutexGuard aGuard( getMutex() ); + + SQLExceptionInfo aInfo( aEvent.Reason ); + if ( !aInfo.isValid() ) + return; + + if ( m_nFormActionNestingLevel ) { - ::vos::OGuard aGuard(Application::GetSolarMutex()); - showError( aInfo ); + OSL_ENSURE( !m_aCurrentError.isValid(), "SbaXDataBrowserController::errorOccured: can handle one error per transaction only!" ); + m_aCurrentError = aInfo; } - if (m_nFormActionNestingLevel) - m_bErrorOccured = true; + else + m_aAsyncDisplayError.Call(); } //------------------------------------------------------------------------------ @@ -2659,10 +2673,9 @@ void SbaXDataBrowserController::reloaded(const EventObject& /*aEvent*/) throw( R //------------------------------------------------------------------------------ void SbaXDataBrowserController::enterFormAction() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaui", "Ocke.Janssen@sun.com", "SbaXDataBrowserController::enterFormAction" ); - if (!m_nFormActionNestingLevel) - // first action -> reset flag - m_bErrorOccured = false; + if ( !m_nFormActionNestingLevel ) + // first action -> reset + m_aCurrentError.clear(); ++m_nFormActionNestingLevel; } @@ -2670,9 +2683,14 @@ void SbaXDataBrowserController::enterFormAction() //------------------------------------------------------------------------------ void SbaXDataBrowserController::leaveFormAction() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaui", "Ocke.Janssen@sun.com", "SbaXDataBrowserController::leaveFormAction" ); - DBG_ASSERT(m_nFormActionNestingLevel > 0, "SbaXDataBrowserController::leaveFormAction : invalid call !"); - --m_nFormActionNestingLevel; + DBG_ASSERT( m_nFormActionNestingLevel > 0, "SbaXDataBrowserController::leaveFormAction : invalid call !" ); + if ( --m_nFormActionNestingLevel > 0 ) + return; + + if ( !m_aCurrentError.isValid() ) + return; + + m_aAsyncDisplayError.Call(); } // ------------------------------------------------------------------------- diff --git a/dbaccess/source/ui/browser/unodatbr.cxx b/dbaccess/source/ui/browser/unodatbr.cxx index 57a4a9270c25..98caa841c84c 100644 --- a/dbaccess/source/ui/browser/unodatbr.cxx +++ b/dbaccess/source/ui/browser/unodatbr.cxx @@ -60,6 +60,8 @@ /** === begin UNO includes === **/ #include <com/sun/star/awt/LineEndFormat.hpp> +#include <com/sun/star/awt/LineEndFormat.hpp> +#include <com/sun/star/awt/MouseWheelBehavior.hpp> #include <com/sun/star/awt/TextAlign.hpp> #include <com/sun/star/awt/VisualEffect.hpp> #include <com/sun/star/beans/NamedValue.hpp> @@ -684,13 +686,23 @@ sal_Bool SbaTableQueryBrowser::InitializeGridModel(const Reference< ::com::sun:: aCopyProperties.push_back( PROPERTY_WIDTH ); // help text to display for the column - Any aDescription; aDescription <<= ::rtl::OUString(); + Any aDescription; if ( xColPSI->hasPropertyByName( PROPERTY_HELPTEXT ) ) - aDescription <<= ::comphelper::getString( xColumn->getPropertyValue( PROPERTY_HELPTEXT ) ); + aDescription = xColumn->getPropertyValue( PROPERTY_HELPTEXT ); + if ( !aDescription.hasValue() ) + aDescription <<= ::rtl::OUString(); aInitialValues.push_back( NamedValue( PROPERTY_HELPTEXT, aDescription ) ); // ... horizontal justify - aInitialValues.push_back( NamedValue( PROPERTY_ALIGN, makeAny( sal_Int16( ::comphelper::getINT32( xColumn->getPropertyValue( PROPERTY_ALIGN ) ) ) ) ) ); + Any aAlign; aAlign <<= sal_Int16( 0 ); + Any aColAlign( xColumn->getPropertyValue( PROPERTY_ALIGN ) ); + if ( aColAlign.hasValue() ) + aAlign <<= sal_Int16( ::comphelper::getINT32( aColAlign ) ); + aInitialValues.push_back( NamedValue( PROPERTY_ALIGN, aAlign ) ); + + // don't allow the mouse to scroll in the cells + if ( xGridColPSI->hasPropertyByName( PROPERTY_MOUSE_WHEEL_BEHAVIOR ) ) + aInitialValues.push_back( NamedValue( PROPERTY_MOUSE_WHEEL_BEHAVIOR, makeAny( MouseWheelBehavior::SCROLL_DISABLED ) ) ); // now set all those values for ( ::std::vector< NamedValue >::const_iterator property = aInitialValues.begin(); @@ -2346,31 +2358,34 @@ sal_Bool SbaTableQueryBrowser::implSelect(const ::rtl::OUString& _rDataSourceNam SvLBoxEntry* pCommandType = NULL; SvLBoxEntry* pCommand = getObjectEntry( _rDataSourceName, _rCommand, _nCommandType, &pDataSource, &pCommandType, sal_True, _rxConnection ); - // if (pDataSource) // OJ change for the new app + if (pCommand) { - if (pCommand) + bool bSuccess = true; + if ( _bSelectDirect ) { - if ( _bSelectDirect ) - { - implSelect( pCommand ); - } - else - m_pTreeView->getListBox().Select(pCommand); + bSuccess = implSelect( pCommand ); + } + else + { + m_pTreeView->getListBox().Select( pCommand ); + } + if ( bSuccess ) + { m_pTreeView->getListBox().MakeVisible(pCommand); m_pTreeView->getListBox().SetCursor(pCommand); } - else if (!pCommandType) - { - if ( m_pCurrentlyDisplayed ) - { // tell the old entry (if any) it has been deselected - selectPath(m_pCurrentlyDisplayed, sal_False); - m_pCurrentlyDisplayed = NULL; - } - - // we have a command and need to display this in the rowset - return implLoadAnything(_rDataSourceName, _rCommand, _nCommandType, _bEscapeProcessing, _rxConnection); + } + else if (!pCommandType) + { + if ( m_pCurrentlyDisplayed ) + { // tell the old entry (if any) it has been deselected + selectPath(m_pCurrentlyDisplayed, sal_False); + m_pCurrentlyDisplayed = NULL; } + + // we have a command and need to display this in the rowset + return implLoadAnything(_rDataSourceName, _rCommand, _nCommandType, _bEscapeProcessing, _rxConnection); } } return sal_False; @@ -2437,7 +2452,8 @@ bool SbaTableQueryBrowser::implSelect( SvLBoxEntry* _pEntry ) Reference< ::com::sun::star::form::XLoadable > xLoadable = getLoadable(); bRebuild |= !xLoadable->isLoaded(); - if(bRebuild) + bool bSuccess = true; + if ( bRebuild ) { try { @@ -2458,7 +2474,7 @@ bool SbaTableQueryBrowser::implSelect( SvLBoxEntry* _pEntry ) if ( !pConData->xConnection.is() ) { unloadAndCleanup( sal_False ); - return 0L; + return false; } Reference<XNameAccess> xNameAccess; @@ -2532,6 +2548,7 @@ bool SbaTableQueryBrowser::implSelect( SvLBoxEntry* _pEntry ) } catch (Exception&) { + DBG_UNHANDLED_EXCEPTION(); } } } @@ -2540,10 +2557,8 @@ bool SbaTableQueryBrowser::implSelect( SvLBoxEntry* _pEntry ) } String sDataSourceName( getDataSourceAcessor( pConnection ) ); - if ( implLoadAnything( sDataSourceName, aName, nCommandType, sal_True, pConData->xConnection ) ) - // set the title of the beamer - ;/*updateTitle();*/ - else + bSuccess = implLoadAnything( sDataSourceName, aName, nCommandType, sal_True, pConData->xConnection ); + if ( !bSuccess ) { // clean up criticalFail(); } @@ -2573,7 +2588,7 @@ bool SbaTableQueryBrowser::implSelect( SvLBoxEntry* _pEntry ) xRowSetProps->setPropertyValue(PROPERTY_ACTIVE_CONNECTION,Any()); } } - return true; + return bSuccess; } // ----------------------------------------------------------------------------- diff --git a/dbaccess/source/ui/dlg/dbwizsetup.cxx b/dbaccess/source/ui/dlg/dbwizsetup.cxx index caa8657d5276..9147ef69e9ad 100644 --- a/dbaccess/source/ui/dlg/dbwizsetup.cxx +++ b/dbaccess/source/ui/dlg/dbwizsetup.cxx @@ -865,6 +865,7 @@ sal_Bool ODbTypeWizDialogSetup::SaveDatabaseDocument() ::comphelper::NamedValueCollection aArgs( xModel->getArgs() ); aArgs.put( "Overwrite", sal_Bool( sal_True ) ); aArgs.put( "InteractionHandler", xHandler ); + aArgs.put( "MacroExecutionMode", MacroExecMode::USE_CONFIG ); ::rtl::OUString sPath = m_pImpl->getDocumentUrl( *m_pOutSet ); xStore->storeAsURL( sPath, aArgs.getPropertyValues() ); diff --git a/dbaccess/source/ui/inc/brwctrlr.hxx b/dbaccess/source/ui/inc/brwctrlr.hxx index 381c70a2c0cd..1e796fbed624 100644 --- a/dbaccess/source/ui/inc/brwctrlr.hxx +++ b/dbaccess/source/ui/inc/brwctrlr.hxx @@ -71,7 +71,6 @@ namespace dbtools namespace dbaui { - // ========================================================================= typedef ::cppu::ImplInheritanceHelper9 < OGenericUnoController @@ -115,6 +114,8 @@ namespace dbaui ::osl::Mutex m_aAsyncLoadSafety; // for multi-thread access to our members OAsyncronousLink m_aAsyncGetCellFocus; + OAsyncronousLink m_aAsyncDisplayError; + ::dbtools::SQLExceptionInfo m_aCurrentError; String m_sStateSaveRecord; String m_sStateUndoRecord; @@ -129,7 +130,6 @@ namespace dbaui sal_Bool m_bLoadCanceled : 1; // the load was canceled somehow sal_Bool m_bClosingKillOpen : 1; // are we killing the load thread because we are to be suspended ? - sal_Bool m_bErrorOccured : 1; // see enter-/leaveFormAction bool m_bCannotSelectUnfiltered : 1; // recieved an DATA_CANNOT_SELECT_UNFILTERED error protected: @@ -237,6 +237,8 @@ namespace dbaui virtual void BeforeDrop(); virtual void AfterDrop(); + public: + protected: virtual ~SbaXDataBrowserController(); @@ -322,10 +324,7 @@ namespace dbaui void enterFormAction(); void leaveFormAction(); - bool errorOccured() const { return m_bErrorOccured; } - // As many form actions don't throw an exception but call their error handler instead we don't have - // a chance to recognize errors by exception catching. - // So for error recognition the above methods may be used. + // init the formatter if form changes void initFormatter(); @@ -371,6 +370,8 @@ namespace dbaui // (the alternative would be to lock the SolarMutex in OnOpenFinished to avoid problems with the needed updates, // but playing with this mutex seems very hazardous to me ....) DECL_LINK(OnAsyncGetCellFocus, void*); + + DECL_LINK( OnAsyncDisplayError, void* ); }; //================================================================== diff --git a/dbaccess/source/ui/querydesign/QueryDesignView.cxx b/dbaccess/source/ui/querydesign/QueryDesignView.cxx index d02fb11fe54c..e489a0c2a585 100644 --- a/dbaccess/source/ui/querydesign/QueryDesignView.cxx +++ b/dbaccess/source/ui/querydesign/QueryDesignView.cxx @@ -1432,7 +1432,7 @@ namespace if ( SQL_ISRULE(pChild,search_condition) ) eErrorCode = GetORCriteria(_pView,_pSelectionBrw,pChild,nLevel,bHaving,bAddOrOnOneLine); else - eErrorCode = GetANDCriteria(_pView,_pSelectionBrw,pChild, bAddOrOnOneLine ? nLevel : nLevel++,bHaving,bAddOrOnOneLine); + eErrorCode = GetANDCriteria(_pView,_pSelectionBrw,pChild, bAddOrOnOneLine ? nLevel : nLevel++,bHaving, i == 0 ? false : bAddOrOnOneLine); } } else @@ -1486,8 +1486,9 @@ namespace eErrorCode = GetORCriteria(_pView,_pSelectionBrw,pCondition->getChild(1), nLevel2,bHaving,bMustAddOrOnOneLine ); } // Das erste Element ist (wieder) eine AND-Verknuepfung - else if ( SQL_ISRULE(pCondition,boolean_term) && pCondition->count() == 3 ) + else if ( SQL_ISRULE(pCondition,boolean_term) ) { + OSL_ENSURE(pCondition->count() == 3,"Illegal definifiton of boolean_term"); eErrorCode = GetANDCriteria(_pView,_pSelectionBrw,pCondition->getChild(0), nLevel,bHaving,bAddOrOnOneLine ); if ( eErrorCode == eOk ) eErrorCode = GetANDCriteria(_pView,_pSelectionBrw,pCondition->getChild(2), nLevel,bHaving,bAddOrOnOneLine ); @@ -2974,6 +2975,7 @@ sal_Bool OQueryDesignView::checkStatement() !pEntryField->HasCriteria() && pEntryField->isNoneFunction() && pEntryField->GetOrderDir() == ORDER_NONE && + !pEntryField->IsGroupBy() && !pEntryField->GetFunction().getLength() ) rUnUsedFields.push_back(pEntryField); } diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx index fa1b1e82fbd8..6b48bc528776 100644 --- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx +++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx @@ -1844,7 +1844,7 @@ void OSelectionBrowseBox::AddCondition( const OTableFieldDescRef& rInfo, const S DBG_CHKTHIS(OSelectionBrowseBox,NULL); DBG_ASSERT(rInfo.isValid() && !rInfo->IsEmpty(),"AddCondition:: OTableFieldDescRef sollte nicht Empty sein!"); - OTableFieldDescRef pEntry; + OTableFieldDescRef pLastEntry; Reference<XDatabaseMetaData> xMeta = xConnection->getMetaData(); ::comphelper::UStringMixEqual bCase(xMeta.is() && xMeta->supportsMixedCaseQuotedIdentifiers()); @@ -1853,7 +1853,7 @@ void OSelectionBrowseBox::AddCondition( const OTableFieldDescRef& rInfo, const S OTableFields::iterator aEnd = rFields.end(); for(;aIter != aEnd;++aIter) { - pEntry = *aIter; + OTableFieldDescRef pEntry = *aIter; const ::rtl::OUString aField = pEntry->GetField(); const ::rtl::OUString aAlias = pEntry->GetAlias(); @@ -1870,22 +1870,9 @@ void OSelectionBrowseBox::AddCondition( const OTableFieldDescRef& rInfo, const S if(!m_bGroupByUnRelated && pEntry->IsGroupBy()) pEntry->SetVisible(sal_True); } - if (!pEntry->GetCriteria(nLevel).getLength() || _bAddOrOnOneLine ) + if (!pEntry->GetCriteria(nLevel).getLength() ) { - String sCriteria = rValue; - if ( _bAddOrOnOneLine ) - { - String sOldCriteria = pEntry->GetCriteria( nLevel ); - if ( sOldCriteria.Len() ) - { - sCriteria = String(RTL_CONSTASCII_USTRINGPARAM("(")); - sCriteria += sOldCriteria; - sCriteria += String(RTL_CONSTASCII_USTRINGPARAM(" OR ")); - sCriteria += rValue; - sCriteria += String(RTL_CONSTASCII_USTRINGPARAM(")")); - } - } - pEntry->SetCriteria( nLevel, sCriteria); + pEntry->SetCriteria( nLevel, rValue); if(nLevel == (m_nVisibleCount-BROW_CRIT1_ROW-1)) { RowInserted( GetRowCount()-1, 1, TRUE ); @@ -1894,11 +1881,36 @@ void OSelectionBrowseBox::AddCondition( const OTableFieldDescRef& rInfo, const S } m_bVisibleRow[BROW_CRIT1_ROW + nLevel] = sal_True; break; + } // if (!pEntry->GetCriteria(nLevel).getLength() ) + if ( _bAddOrOnOneLine ) + { + pLastEntry = pEntry; } } + } // for(;aIter != getFields().end();++aIter) + if ( pLastEntry.isValid() ) + { + String sCriteria = rValue; + String sOldCriteria = pLastEntry->GetCriteria( nLevel ); + if ( sOldCriteria.Len() ) + { + sCriteria = String(RTL_CONSTASCII_USTRINGPARAM("( ")); + sCriteria += sOldCriteria; + sCriteria += String(RTL_CONSTASCII_USTRINGPARAM(" OR ")); + sCriteria += rValue; + sCriteria += String(RTL_CONSTASCII_USTRINGPARAM(" )")); + } + pLastEntry->SetCriteria( nLevel, sCriteria); + if(nLevel == (m_nVisibleCount-BROW_CRIT1_ROW-1)) + { + RowInserted( GetRowCount()-1, 1, TRUE ); + m_bVisibleRow.push_back(sal_True); + ++m_nVisibleCount; + } + m_bVisibleRow[BROW_CRIT1_ROW + nLevel] = sal_True; } - if (aIter == getFields().end()) + else if (aIter == getFields().end()) { OTableFieldDescRef pTmp = InsertField(rInfo, BROWSER_INVALIDID, sal_False, sal_False ); if ( pTmp->isNumericOrAggreateFunction() && rInfo->IsGroupBy() ) // das GroupBy wird bereits von rInfo "ubernommen diff --git a/dbaccess/source/ui/querydesign/query.src b/dbaccess/source/ui/querydesign/query.src index 4dd9cb564b3e..393003b9a4f8 100644 --- a/dbaccess/source/ui/querydesign/query.src +++ b/dbaccess/source/ui/querydesign/query.src @@ -310,28 +310,6 @@ String STR_QRY_ILLEGAL_JOIN Text [ en-US ] = "Join could not be processed" ; }; -String STR_QUERY_SAVEMODIFIED -{ - Text [ en-US ] = "The $object$ has been changed.\nDo you want to save the changes?" ; - Text [ x-comment ] = "For $object$, one of the values of the RSC_QUERY_OBJECT_TYPE resource will be inserted."; -}; - -Resource RSC_QUERY_OBJECT_TYPE -{ - String 1 - { - Text [ en-US ] = "table view"; - }; - String 2 - { - Text [ en-US ] = "query"; - }; - String 3 - { - Text [ en-US ] = "SQL statement"; - }; -}; - String STR_SVT_SQL_SYNTAX_ERROR { Text [ en-US ] = "Syntax error in SQL statement" ; @@ -401,20 +379,42 @@ String STR_VIEWDESIGN Text [ en-US ] = " - %PRODUCTNAME Base: View Design"; }; +String STR_QUERY_SAVEMODIFIED +{ + Text [ en-US ] = "$object$ has been changed.\nDo you want to save the changes?" ; + Text [ x-comment ] = "For $object$, one of the values of the RSC_QUERY_OBJECT_TYPE resource will be inserted."; +}; + String STR_ERROR_PARSING_STATEMENT { - Text [ en-US ] = "The SQL command which constitutes the $object$ could not be parsed."; + Text [ en-US ] = "$object$ is based on an SQL command which could not be parsed."; Text [ x-comment ] = "For $object$, one of the values of the RSC_QUERY_OBJECT_TYPE resource " "(except \"SQL command\", which doesn't make sense here) will be inserted."; }; String STR_INFO_OPENING_IN_SQL_VIEW { - Text [ en-US ] = "The $object$ will be opened in SQL view."; + Text [ en-US ] = "$object$ will be opened in SQL view."; Text [ x-comment ] = "For $object$, one of the values of the RSC_QUERY_OBJECT_TYPE resource " "(except \"SQL command\", which doesn't make sense here) will be inserted."; }; +Resource RSC_QUERY_OBJECT_TYPE +{ + String 1 + { + Text [ en-US ] = "The table view"; + }; + String 2 + { + Text [ en-US ] = "The query"; + }; + String 3 + { + Text [ en-US ] = "The SQL statement"; + }; +}; + String STR_STATEMENT_WITHOUT_RESULT_SET { Text [ en-US ] = "The query does not create a result set, and thus cannot be part of another query."; diff --git a/dbaccess/source/ui/querydesign/querycontroller.cxx b/dbaccess/source/ui/querydesign/querycontroller.cxx index d29fa9b3ab5a..ca1bc56f01ef 100644 --- a/dbaccess/source/ui/querydesign/querycontroller.cxx +++ b/dbaccess/source/ui/querydesign/querycontroller.cxx @@ -717,6 +717,8 @@ void OQueryController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >& pNodeTmp = pTemp->getChild(1); ::connectivity::OSQLParseNode::absorptions(pNodeTmp); pNodeTmp = pTemp->getChild(1); + OSQLParseNode::compress(pNodeTmp); + pNodeTmp = pTemp->getChild(1); } // if ( pCondition ) // no where clause ::rtl::OUString sTemp; pNode->parseNodeToStr(sTemp,getConnection()); diff --git a/dbaccess/source/ui/tabledesign/TEditControl.cxx b/dbaccess/source/ui/tabledesign/TEditControl.cxx index 1c8bf569ea19..9694d285c511 100644 --- a/dbaccess/source/ui/tabledesign/TEditControl.cxx +++ b/dbaccess/source/ui/tabledesign/TEditControl.cxx @@ -1312,9 +1312,9 @@ Any OTableEditorCtrl::GetCellData( long nRow, sal_uInt16 nColId ) String OTableEditorCtrl::GetCellText( long nRow, sal_uInt16 nColId ) const { DBG_CHKTHIS(OTableEditorCtrl,NULL); - ////////////////////////////////////////////////////////////////////// - // Text aus Dokumentdaten holen - return ::comphelper::getString(const_cast<OTableEditorCtrl*>(this)->GetCellData( nRow, nColId )); + ::rtl::OUString sCellText; + const_cast< OTableEditorCtrl* >( this )->GetCellData( nRow, nColId ) >>= sCellText; + return sCellText; } //------------------------------------------------------------------------------ diff --git a/dbaccess/source/ui/uno/copytablewizard.cxx b/dbaccess/source/ui/uno/copytablewizard.cxx index 9fa9d828d755..1f8fd4dc4dbc 100644 --- a/dbaccess/source/ui/uno/copytablewizard.cxx +++ b/dbaccess/source/ui/uno/copytablewizard.cxx @@ -1018,18 +1018,18 @@ namespace else (m_xDest.get()->*_pSetter)( m_rDestPos, value ); } - - template< typename VALUE_TYPE > + template< typename VALUE_TYPE > void transferComplexValue( VALUE_TYPE ( SAL_CALL XRow::*_pGetter )( sal_Int32 ), void (SAL_CALL XParameters::*_pSetter)( sal_Int32, const VALUE_TYPE& ) ) { - VALUE_TYPE value( (m_xSource.get()->*_pGetter)( m_rSourcePos ) ); + const VALUE_TYPE value( (m_xSource.get()->*_pGetter)( m_rSourcePos ) ); + { if ( m_xSource->wasNull() ) m_xDest->setNull( m_rDestPos, m_rColTypes[ m_rSourcePos ] ); else (m_xDest.get()->*_pSetter)( m_rDestPos, value ); + } } - private: const sal_Int32& m_rSourcePos; const sal_Int32& m_rDestPos; @@ -1193,7 +1193,9 @@ void CopyTableWizard::impl_copyRows_throw( const Reference< XResultSet >& _rxSou bContinue = _rxSourceResultSet->next(); if ( !bContinue ) + { break; + } ++nRowCount; sal_Bool bInsertAutoIncrement = sal_True; diff --git a/dbaccess/source/ui/uno/makefile.mk b/dbaccess/source/ui/uno/makefile.mk index d29d881d7a26..11a1c7c5fbbd 100644 --- a/dbaccess/source/ui/uno/makefile.mk +++ b/dbaccess/source/ui/uno/makefile.mk @@ -51,8 +51,14 @@ SRC1FILES = \ copytablewizard.src # ... object files ............................ +# workaround for issue http://qa.openoffice.org/issues/show_bug.cgi?id=102305 Linux specific +.IF "$(COM)" == "GCC" +NOOPTFILES=\ + $(SLO)$/copytablewizard.obj +.ENDIF SLOFILES= \ + $(SLO)$/copytablewizard.obj \ $(SLO)$/composerdialogs.obj \ $(SLO)$/unosqlmessage.obj \ $(SLO)$/unoadmin.obj \ @@ -67,7 +73,6 @@ SLOFILES= \ $(SLO)$/ColumnControl.obj \ $(SLO)$/ColumnPeer.obj \ $(SLO)$/dbinteraction.obj \ - $(SLO)$/copytablewizard.obj \ $(SLO)$/textconnectionsettings_uno.obj # --- Targets ---------------------------------- diff --git a/reportdesign/source/ui/inc/FixedTextColor.hxx b/reportdesign/source/ui/inc/FixedTextColor.hxx index c80a49a9a557..32c139fa847b 100644 --- a/reportdesign/source/ui/inc/FixedTextColor.hxx +++ b/reportdesign/source/ui/inc/FixedTextColor.hxx @@ -31,10 +31,6 @@ #ifndef INCLUDED_FIXEDTEXTCOLOR_HXX #define INCLUDED_FIXEDTEXTCOLOR_HXX -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_reportdesign.hxx" - - /** === begin UNO includes === **/ #include <com/sun/star/beans/PropertyChangeEvent.hpp> #include <com/sun/star/container/XChild.hpp> diff --git a/reportdesign/source/ui/inc/FormattedFieldBeautifier.hxx b/reportdesign/source/ui/inc/FormattedFieldBeautifier.hxx index bc5d406d1e5c..5c835d983ff3 100644 --- a/reportdesign/source/ui/inc/FormattedFieldBeautifier.hxx +++ b/reportdesign/source/ui/inc/FormattedFieldBeautifier.hxx @@ -31,10 +31,6 @@ #ifndef INCLUDED_FORMATTEDFIELDBEAUTIFIER_HXX #define INCLUDED_FORMATTEDFIELDBEAUTIFIER_HXX -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_reportdesign.hxx" - - /** === begin UNO includes === **/ #include <com/sun/star/beans/PropertyChangeEvent.hpp> #include <com/sun/star/container/XChild.hpp> diff --git a/reportdesign/source/ui/inc/IReportControllerObserver.hxx b/reportdesign/source/ui/inc/IReportControllerObserver.hxx index 2a51e1a655eb..e171fc386967 100644 --- a/reportdesign/source/ui/inc/IReportControllerObserver.hxx +++ b/reportdesign/source/ui/inc/IReportControllerObserver.hxx @@ -31,9 +31,6 @@ #ifndef INCLUDED_BEAUTIFIER_HXX #define INCLUDED_BEAUTIFIER_HXX -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_reportdesign.hxx" - /** === begin UNO includes === **/ #include <com/sun/star/beans/PropertyChangeEvent.hpp> /** === end UNO includes === **/ |