framework/inc/properties.h                             |   19 --
 framework/inc/services/desktop.hxx                     |    1 
 framework/inc/threadhelp/transactionguard.hxx          |   90 -----------
 framework/inc/threadhelp/transactionmanager.hxx        |   23 --
 framework/source/fwi/threadhelp/transactionmanager.cxx |  116 +++-----------
 framework/source/services/desktop.cxx                  |  138 +++++------------
 framework/source/services/frame.cxx                    |  115 +++++++-------
 vcl/source/window/brdwin.cxx                           |    2 
 8 files changed, 137 insertions(+), 367 deletions(-)

New commits:
commit 81a1d5ceb7a2fefa0d41a6e5ca1650120e46cbe9
Author: Stephan Bergmann <[email protected]>
Date:   Wed Dec 16 14:20:46 2015 +0100

    loplugin:vclwidgets
    
    Change-Id: I9a9748879fcc55b524138d865e71a713efad180d

diff --git a/vcl/source/window/brdwin.cxx b/vcl/source/window/brdwin.cxx
index cc7cb3f..0e844e2 100644
--- a/vcl/source/window/brdwin.cxx
+++ b/vcl/source/window/brdwin.cxx
@@ -2179,7 +2179,7 @@ void ImplBorderWindow::SetMenuBarMode( bool bHide )
 
 void ImplBorderWindow::SetNotebookBarWindow(const OUString& rUIXMLDescription, 
const css::uno::Reference<css::frame::XFrame>& rFrame)
 {
-    mpNotebookBarWindow.reset(new NotebookBarWindow(this, "NotebookBar", 
rUIXMLDescription, rFrame));
+    mpNotebookBarWindow = VclPtr<NotebookBarWindow>::Create(this, 
"NotebookBar", rUIXMLDescription, rFrame);
     Resize();
     mpNotebookBarWindow->Show();
 }
commit df997d92e080c8ed95e393ae9710483529a82115
Author: Stephan Bergmann <[email protected]>
Date:   Wed Dec 16 11:11:51 2015 +0100

    Simplify Desktop::getInfoHelper
    
    Change-Id: I13058816e8b2b1c821f0123f110671706bf90449

diff --git a/framework/inc/services/desktop.hxx 
b/framework/inc/services/desktop.hxx
index 6379e41..1731dd8 100644
--- a/framework/inc/services/desktop.hxx
+++ b/framework/inc/services/desktop.hxx
@@ -322,7 +322,6 @@ class Desktop : private cppu::BaseMutex,
     private:
 
         css::uno::Reference< css::lang::XComponent >            
impl_getFrameComponent          ( const css::uno::Reference< css::frame::XFrame 
>&  xFrame          ) const;
-        static const css::uno::Sequence< css::beans::Property > 
impl_getStaticPropertyDescriptor(                                               
                    );
 
         /** calls queryTermination() on every registered termination listener.
          *
diff --git a/framework/source/services/desktop.cxx 
b/framework/source/services/desktop.cxx
index 68c5ca8..8e92656 100644
--- a/framework/source/services/desktop.cxx
+++ b/framework/source/services/desktop.cxx
@@ -60,6 +60,7 @@
 
 #include <comphelper/sequence.hxx>
 #include <cppuhelper/supportsservice.hxx>
+#include <rtl/instance.hxx>
 #include <vcl/svapp.hxx>
 
 #include <tools/errinf.hxx>
@@ -1411,46 +1412,34 @@ void SAL_CALL Desktop::getFastPropertyValue( 
css::uno::Any& aValue  ,
     }
 }
 
-/*-************************************************************************************************************
-    @short      return structure and information about transient properties
-    @descr      This method is calling from helperclass "OPropertySetHelper".
-                Don't use this directly!
-
-    @attention  You must use global lock (method use static variable) ... and 
it must be the shareable osl mutex of it.
-                Because; our baseclass use this mutex to make his code 
threadsafe. We use our lock!
-                So we could have two different mutex/lock mechanism at the 
same object.
-
-    @seealso    class OPropertySetHelper
-    @return     structure with property-information
-    @threadsafe yes
-*//*-*************************************************************************************************************/
 ::cppu::IPropertyArrayHelper& SAL_CALL Desktop::getInfoHelper()
 {
-    /* UNSAFE AREA 
---------------------------------------------------------------------------------------------
 */
-    // Register transaction and reject wrong calls.
-    TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS );
-
-    // Optimize this method !
-    // We initialize a static variable only one time. And we don't must use a 
mutex at every call!
-    // For the first call; pInfoHelper is NULL - for the second call 
pInfoHelper is different from NULL!
-    static ::cppu::OPropertyArrayHelper* pInfoHelper = nullptr;
-
-    if( pInfoHelper == nullptr )
+    struct Static:
+        public rtl::StaticWithInit<cppu::OPropertyArrayHelper, Static>
     {
-        SolarMutexGuard aGuard;
-
-        // Control this pointer again, another instance can be faster then 
these!
-        if( pInfoHelper == nullptr )
-        {
-            // Define static member to give structure of properties to 
baseclass "OPropertySetHelper".
-            // "impl_getStaticPropertyDescriptor" is a non exported and static 
function, who will define a static propertytable.
-            // "sal_True" say: Table is sorted by name.
-            static ::cppu::OPropertyArrayHelper aInfoHelper( 
impl_getStaticPropertyDescriptor(), sal_True );
-            pInfoHelper = &aInfoHelper;
+        cppu::OPropertyArrayHelper operator ()() {
+            return {
+                {{"ActiveFrame", PropHandle::ActiveFrame,
+                  cppu::UnoType<css::lang::XComponent>::get(),
+                  (css::beans::PropertyAttribute::TRANSIENT
+                   | css::beans::PropertyAttribute::READONLY)},
+                 {"DispatchRecorderSupplier",
+                  PropHandle::DispatchRecorderSupplier,
+                  cppu::UnoType<css::frame::XDispatchRecorderSupplier>::get(),
+                  css::beans::PropertyAttribute::TRANSIENT},
+                 {"IsPlugged",
+                  PropHandle::IsPlugged, cppu::UnoType<bool>::get(),
+                  (css::beans::PropertyAttribute::TRANSIENT
+                   | css::beans::PropertyAttribute::READONLY)},
+                 {"SuspendQuickstartVeto", PropHandle::SuspendQuickstartVeto,
+                  cppu::UnoType<bool>::get(),
+                  css::beans::PropertyAttribute::TRANSIENT},
+                 {"Title", PropHandle::Title, cppu::UnoType<OUString>::get(),
+                  css::beans::PropertyAttribute::TRANSIENT}},
+                true};
         }
-    }
-
-    return(*pInfoHelper);
+    };
+    return Static::get();
 }
 
 
/*-************************************************************************************************************
@@ -1549,43 +1538,6 @@ css::uno::Reference< css::lang::XComponent > 
Desktop::impl_getFrameComponent( co
     return xComponent;
 }
 
-/*-************************************************************************************************************
-    @short      create table with information about properties
-    @descr      We use a helper class to support properties. These class need 
some information about this.
-                These method create a new static description table with name, 
type, r/w-flags and so on ...
-
-    @seealso    class OPropertySetHelper
-    @seealso    method getInfoHelper()
-    @return     Static table with information about properties.
-    @threadsafe yes
-*//*-*************************************************************************************************************/
-const css::uno::Sequence< css::beans::Property > 
Desktop::impl_getStaticPropertyDescriptor()
-{
-    // Create a property array to initialize sequence!
-    // Table of all predefined properties of this class. Its used from 
OPropertySetHelper-class!
-    // Don't forget to change the defines (see begin of this file), if you 
add, change or delete a property in this list!!!
-    // It's necessary for methods of OPropertySetHelper.
-    // ATTENTION:
-    //      YOU MUST SORT FOLLOW TABLE BY NAME ALPHABETICAL !!!
-    return {
-        {"ActiveFrame", PropHandle::ActiveFrame,
-         cppu::UnoType<css::lang::XComponent>::get(),
-         (css::beans::PropertyAttribute::TRANSIENT
-          | css::beans::PropertyAttribute::READONLY)},
-        {"DispatchRecorderSupplier",
-                PropHandle::DispatchRecorderSupplier,
-         cppu::UnoType<css::frame::XDispatchRecorderSupplier>::get(),
-         css::beans::PropertyAttribute::TRANSIENT},
-        {"IsPlugged", PropHandle::IsPlugged, cppu::UnoType<bool>::get(),
-         (css::beans::PropertyAttribute::TRANSIENT
-          | css::beans::PropertyAttribute::READONLY)},
-        {"SuspendQuickstartVeto",
-         PropHandle::SuspendQuickstartVeto, cppu::UnoType<bool>::get(),
-         css::beans::PropertyAttribute::TRANSIENT},
-        {"Title", PropHandle::Title, cppu::UnoType<OUString>::get(),
-         css::beans::PropertyAttribute::TRANSIENT}};
-}
-
 void Desktop::impl_sendQueryTerminationEvent(Desktop::TTerminateListenerList& 
lCalledListener,
                                              bool&                      bVeto  
        )
 {
commit a2016848005b3ed9430575f6401bfec25f354dfa
Author: Stephan Bergmann <[email protected]>
Date:   Wed Dec 16 10:53:36 2015 +0100

    Remove comment noise
    
    Change-Id: I7794e40e07520c1e504b1167aa64cf24819271f2

diff --git a/framework/inc/threadhelp/transactionguard.hxx 
b/framework/inc/threadhelp/transactionguard.hxx
index 52ee098..0b87721 100644
--- a/framework/inc/threadhelp/transactionguard.hxx
+++ b/framework/inc/threadhelp/transactionguard.hxx
@@ -25,59 +25,26 @@
 
 namespace framework{
 
-/*-************************************************************************************************************
-    @short          implement a guard to support non breakable transactions
-    @descr          If you wish to support non breakable method calls without 
locking any mutex, rw-lock or
-                    something like that - you should use this guard 
implementation.
-                    Initialize it at first in your method and don't release it 
till end of your function!
-                    Your "transaction" is registered in ctor and automatically 
released in dtor.
-                    Use set/get of working mode to enable/disable further 
transactions.
-                    It's possible too, to enable automatically throwing of 
some exceptions for illegal
-                    transaction requests ... e.g. interface call for already 
disposed objects.
-
-    @attention      To prevent us against wrong using, the default ctor, copy 
ctor and the =operator are marked private!
-    @devstatus      draft
-*//*-*************************************************************************************************************/
 class TransactionGuard : private boost::noncopyable
 {
-
-    //  public methods
-
     public:
-
-        
/*-****************************************************************************************************
-            @short      ctors
-            @descr      Use these ctor methods to initialize the guard right.
-                        Given reference must be valid - otherwise crashes 
could occur!
-
-            @attention  It's not necessary to lock any mutex here! Because a 
ctor should not be called
-                        from different threads at the same time ... this class 
use no refcount mechanism!
-            @param      "rManager"  reference to transaction manager for using 
to register a request
-            @param      "eMode"     enable/disable throwing of exceptions for 
rejected calls
-        
*//*-*****************************************************************************************************/
         inline TransactionGuard( TransactionManager& rManager, EExceptionMode 
eMode )
             : m_pManager( &rManager )
         {
             m_pManager->registerTransaction( eMode );
         }
 
-        
/*-************************************************************************************************************
-            @short      dtor
-            @descr      We must release the transaction manager and can forget 
his pointer.
-        
*//*-*************************************************************************************************************/
         inline ~TransactionGuard()
         {
             m_pManager->unregisterTransaction();
         }
 
     private:
+        TransactionManager*   m_pManager;
+};
 
-        TransactionManager*   m_pManager;   /// pointer to safed transaction 
manager
-
-};      //  class TransactionGuard
-
-}       //  namespace framework
+}
 
-#endif // INCLUDED_FRAMEWORK_INC_THREADHELP_TRANSACTIONGUARD_HXX
+#endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 4ac13fb72a12ac6dba7b002a4ac0cdd40eaaada5
Author: Stephan Bergmann <[email protected]>
Date:   Wed Dec 16 10:52:40 2015 +0100

    No need for TransactionGuard::stop
    
    Change-Id: If1c0b7285817bb10338077460b77de4a27d35753

diff --git a/framework/inc/threadhelp/transactionguard.hxx 
b/framework/inc/threadhelp/transactionguard.hxx
index ac3aeca..52ee098 100644
--- a/framework/inc/threadhelp/transactionguard.hxx
+++ b/framework/inc/threadhelp/transactionguard.hxx
@@ -67,24 +67,7 @@ class TransactionGuard : private boost::noncopyable
         
*//*-*************************************************************************************************************/
         inline ~TransactionGuard()
         {
-            stop();
-        }
-
-        
/*-************************************************************************************************************
-            @short      stop current transaction
-            @descr      We must release the transaction manager and can forget 
his pointer.
-
-            @attention  We don't support any start() method here - because it 
is not easy to
-                        detect if a transaction already started or not!
-                        (combination of EExceptionMode and ERejectReason)
-        
*//*-*************************************************************************************************************/
-        inline void stop()
-        {
-            if( m_pManager != nullptr )
-            {
-                m_pManager->unregisterTransaction();
-                m_pManager = nullptr;
-            }
+            m_pManager->unregisterTransaction();
         }
 
     private:
diff --git a/framework/source/services/desktop.cxx 
b/framework/source/services/desktop.cxx
index 35ce361..68c5ca8 100644
--- a/framework/source/services/desktop.cxx
+++ b/framework/source/services/desktop.cxx
@@ -1029,19 +1029,9 @@ void SAL_CALL Desktop::disposing()
 
     SolarMutexClearableGuard aWriteLock;
 
-    // Look for multiple calls of this method!
-    // If somewhere call dispose() twice - he will be stopped here really!!!
-    TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS );
-
-    // Now - we are alone and its the first call of this method ...
-    // otherwise call before had thrown a DisposedException / hopefully .-)
-    // But we don't use the transaction object created before ... we reset it 
immediately ...
-    // two lines of code ... for what ?
-    // The answer: We wished to synchronize concurrent dispose() calls -> OK
-    // But next line will wait for all currently running transaction (even if 
they
-    // are running within the same thread!) So we would block ourself there if 
aTransaction
-    // will stay registered .-)
-    aTransaction.stop();
+    {
+        TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS 
);
+    }
 
     // Disable this instance for further work.
     // This will wait for all current running transactions ...
diff --git a/framework/source/services/frame.cxx 
b/framework/source/services/frame.cxx
index bcd12d4..69692ec 100644
--- a/framework/source/services/frame.cxx
+++ b/framework/source/services/frame.cxx
@@ -1729,79 +1729,80 @@ void SAL_CALL Frame::removeFrameActionListener( const 
css::uno::Reference< css::
 void SAL_CALL Frame::close( sal_Bool bDeliverOwnership ) throw( 
css::util::CloseVetoException,
                                                                 
css::uno::RuntimeException, std::exception   )
 {
-    TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS );
-
-    // At the end of this method may we must dispose ourself...
-    // and may nobody from outside hold a reference to us...
-    // then it's a good idea to do that by ourself.
-    css::uno::Reference< css::uno::XInterface > xSelfHold( static_cast< 
::cppu::OWeakObject* >(this) );
-
-    // Check any close listener before we look for currently running internal 
processes.
-    // Because if a listener disagree with this close() request - we have time 
to finish this
-    // internal operations too...
-    // Note: container is threadsafe himself.
-    css::lang::EventObject             aSource    (static_cast< 
::cppu::OWeakObject*>(this));
-    ::cppu::OInterfaceContainerHelper* pContainer = 
m_aListenerContainer.getContainer( 
cppu::UnoType<css::util::XCloseListener>::get());
-    if (pContainer!=nullptr)
     {
-        ::cppu::OInterfaceIteratorHelper pIterator(*pContainer);
-        while (pIterator.hasMoreElements())
+        TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS 
);
+
+        // At the end of this method may we must dispose ourself...
+        // and may nobody from outside hold a reference to us...
+        // then it's a good idea to do that by ourself.
+        css::uno::Reference< css::uno::XInterface > xSelfHold( static_cast< 
::cppu::OWeakObject* >(this) );
+
+        // Check any close listener before we look for currently running 
internal processes.
+        // Because if a listener disagree with this close() request - we have 
time to finish this
+        // internal operations too...
+        // Note: container is threadsafe himself.
+        css::lang::EventObject             aSource    (static_cast< 
::cppu::OWeakObject*>(this));
+        ::cppu::OInterfaceContainerHelper* pContainer = 
m_aListenerContainer.getContainer( 
cppu::UnoType<css::util::XCloseListener>::get());
+        if (pContainer!=nullptr)
         {
-            try
+            ::cppu::OInterfaceIteratorHelper pIterator(*pContainer);
+            while (pIterator.hasMoreElements())
             {
-                
static_cast<css::util::XCloseListener*>(pIterator.next())->queryClosing( 
aSource, bDeliverOwnership );
-            }
-            catch( const css::uno::RuntimeException& )
-            {
-                pIterator.remove();
+                try
+                {
+                    
static_cast<css::util::XCloseListener*>(pIterator.next())->queryClosing( 
aSource, bDeliverOwnership );
+                }
+                catch( const css::uno::RuntimeException& )
+                {
+                    pIterator.remove();
+                }
             }
         }
-    }
 
-    // Ok - no listener disagreed with this close() request
-    // check if this frame is used for any load process currently
-    if (isActionLocked())
-    {
-        if (bDeliverOwnership)
+        // Ok - no listener disagreed with this close() request
+        // check if this frame is used for any load process currently
+        if (isActionLocked())
         {
-            SolarMutexGuard g;
-            m_bSelfClose = true;
-        }
+            if (bDeliverOwnership)
+            {
+                SolarMutexGuard g;
+                m_bSelfClose = true;
+            }
 
-        throw css::util::CloseVetoException("Frame in use for loading document 
...",static_cast< ::cppu::OWeakObject*>(this));
-    }
+            throw css::util::CloseVetoException("Frame in use for loading 
document ...",static_cast< ::cppu::OWeakObject*>(this));
+        }
 
-    if ( ! setComponent(nullptr,nullptr) )
-        throw css::util::CloseVetoException("Component couldn't be deattached 
...",static_cast< ::cppu::OWeakObject*>(this));
+        if ( ! setComponent(nullptr,nullptr) )
+            throw css::util::CloseVetoException("Component couldn't be 
deattached ...",static_cast< ::cppu::OWeakObject*>(this));
 
-    // If closing is allowed... inform all listeners and dispose this frame!
-    pContainer = m_aListenerContainer.getContainer( 
cppu::UnoType<css::util::XCloseListener>::get());
-    if (pContainer!=nullptr)
-    {
-        ::cppu::OInterfaceIteratorHelper pIterator(*pContainer);
-        while (pIterator.hasMoreElements())
+        // If closing is allowed... inform all listeners and dispose this 
frame!
+        pContainer = m_aListenerContainer.getContainer( 
cppu::UnoType<css::util::XCloseListener>::get());
+        if (pContainer!=nullptr)
         {
-            try
+            ::cppu::OInterfaceIteratorHelper pIterator(*pContainer);
+            while (pIterator.hasMoreElements())
             {
-                
static_cast<css::util::XCloseListener*>(pIterator.next())->notifyClosing( 
aSource );
-            }
-            catch( const css::uno::RuntimeException& )
-            {
-                pIterator.remove();
+                try
+                {
+                    
static_cast<css::util::XCloseListener*>(pIterator.next())->notifyClosing( 
aSource );
+                }
+                catch( const css::uno::RuntimeException& )
+                {
+                    pIterator.remove();
+                }
             }
         }
-    }
 
-    /* SAFE { */
-    SolarMutexClearableGuard aWriteLock;
-    m_bIsHidden = true;
-    aWriteLock.clear();
-    /* } SAFE */
-    impl_checkMenuCloser();
+        /* SAFE { */
+        SolarMutexClearableGuard aWriteLock;
+        m_bIsHidden = true;
+        aWriteLock.clear();
+        /* } SAFE */
+        impl_checkMenuCloser();
 
-    // Attention: We must release our own registered transaction here. 
Otherwhise following dispose() call
-    // wait for us too ....
-    aTransaction.stop();
+        // Attention: We must release our own registered transaction here. 
Otherwhise following dispose() call
+        // wait for us too ....
+    }
     dispose();
 }
 
commit e9e61809ea31b30f50d39dda45e54bed6f0e4742
Author: Stephan Bergmann <[email protected]>
Date:   Wed Dec 16 10:45:33 2015 +0100

    Simplify TransactionManager
    
    Change-Id: I51d1969f9f88d9e29fc081fd54df365578900126

diff --git a/framework/inc/threadhelp/transactionmanager.hxx 
b/framework/inc/threadhelp/transactionmanager.hxx
index cc9e0b1..e4beb04 100644
--- a/framework/inc/threadhelp/transactionmanager.hxx
+++ b/framework/inc/threadhelp/transactionmanager.hxx
@@ -52,18 +52,6 @@ enum EWorkingMode
 };
 
 
/*-************************************************************************************************************
-    @descr          If a request was refused by a transaction manager 
(internal state different E_WORK ...)
-                    user can check the reason by using this enum values.
-*//*-*************************************************************************************************************/
-enum ERejectReason
-{
-    E_UNINITIALIZED ,
-    E_NOREASON      ,
-    E_INCLOSE       ,
-    E_CLOSED
-};
-
-/*-************************************************************************************************************
     @descr          A transaction object should support throwing exceptions if 
user used it at wrong working mode.
                     e.g. We can throw a DisposedException if user try to work 
and our mode is E_CLOSE!
                     But sometimes he doesn't need this feature - will handle 
it by himself.
@@ -120,18 +108,9 @@ class FWI_DLLPUBLIC TransactionManager: private 
boost::noncopyable
                                    ~TransactionManager          (              
                                );
         void               setWorkingMode               ( EWorkingMode eMode   
                        );
         EWorkingMode       getWorkingMode               (                      
                        ) const;
-        bool               isCallRejected               ( ERejectReason& 
eReason                       ) const;
         void               registerTransaction          ( EExceptionMode eMode 
) throw( css::uno::RuntimeException, css::lang::DisposedException );
         void               unregisterTransaction        (                      
                        ) throw( css::uno::RuntimeException, 
css::lang::DisposedException );
 
-    //  private methods
-
-    private:
-
-        void impl_throwExceptions( EExceptionMode eMode, ERejectReason eReason 
) const throw( css::uno::RuntimeException, css::lang::DisposedException );
-
-    //  private member
-
     private:
 
         mutable ::osl::Mutex    m_aAccessLock;   /// regulate access on 
internal member of this instance
diff --git a/framework/source/fwi/threadhelp/transactionmanager.cxx 
b/framework/source/fwi/threadhelp/transactionmanager.cxx
index 6639d78..a6d8efc 100644
--- a/framework/source/fwi/threadhelp/transactionmanager.cxx
+++ b/framework/source/fwi/threadhelp/transactionmanager.cxx
@@ -155,22 +155,34 @@ EWorkingMode TransactionManager::getWorkingMode() const
 
*//*-*****************************************************************************************************/
 void  TransactionManager::registerTransaction( EExceptionMode eMode ) throw( 
css::uno::RuntimeException, css::lang::DisposedException )
 {
-    // Look for rejected calls first.
-    // If call was refused we throw some exceptions or do nothing!
-    // It depends from given parameter eMode.
-    ERejectReason eReason;
-    if( isCallRejected( eReason ) )
+    ::osl::MutexGuard aAccessGuard( m_aAccessLock );
+    switch( m_eWorkingMode )
     {
-        impl_throwExceptions( eMode, eReason );
+    case E_INIT:
+        if( eMode == E_HARDEXCEPTIONS )
+        {
+            // Help programmer to find out, why this exception is thrown!
+            SAL_WARN( "fwk", "TransactionManager...: Owner instance not 
correctly initialized yet. Call was rejected! Normally it's an algorithm error 
... wrong use of class!" );
+            //ATTENTION: temp. disabled - till all bad code positions are 
detected and changed! */
+            // throw css::uno::RuntimeException( "TransactionManager...\nOwner 
instance not right initialized yet. Call was rejected! Normally it's an 
algorithm error... wrong using of class!\n", css::uno::Reference< 
css::uno::XInterface >() );
+        }
+        break;
+    case E_WORK:
+        break;
+    case E_BEFORECLOSE:
+        if( eMode == E_HARDEXCEPTIONS )
+        {
+            // Help programmer to find out, why this exception is thrown!
+            SAL_WARN( "fwk", "TransactionManager...: Owner instance stand in 
close method. Call was rejected!" );
+            throw css::lang::DisposedException( "TransactionManager...\nOwner 
instance stand in close method. Call was rejected!" );
+        }
+        break;
+    case E_CLOSE:
+        // Help programmer to find out, why this exception is thrown!
+        SAL_WARN( "fwk", "TransactionManager...: Owner instance already 
closed. Call was rejected!" );
+        throw css::lang::DisposedException( "TransactionManager...\nOwner 
instance already closed. Call was rejected!" );
     }
 
-    // BUT if no exception was thrown ... (may be eMode = E_SOFTEXCEPTIONS!)
-    // we must register this transaction too!
-    // Don't use "else" or a new scope here!!!
-
-    // Safe access to internal member.
-    ::osl::MutexGuard aAccessGuard( m_aAccessLock );
-
     // Register this new transaction.
     // If it is the first one .. close gate to disable changing of working 
mode.
     ++m_nTransactionCount;
@@ -203,82 +215,6 @@ void  TransactionManager::unregisterTransaction() throw( 
css::uno::RuntimeExcept
     }
 }
 
-/*-****************************************************************************************************
-    @short      look for rejected calls
-    @descr      Sometimes user need a possibility to get information about 
rejected calls
-                without starting a transaction!
-    @param      "eReason" returns reason of a rejected call
-    @return     true if call was rejected, false otherwise
-
-    @onerror    We return false.
-*//*-*****************************************************************************************************/
-bool  TransactionManager::isCallRejected( ERejectReason& eReason ) const
-{
-    // This call must safe access to internal member only.
-    // Set "possible reason" for return and check reject-state then!
-    // User should look for return value first - reason then ...
-    ::osl::MutexGuard aAccessGuard( m_aAccessLock );
-    switch( m_eWorkingMode )
-    {
-        case E_INIT        : eReason = E_UNINITIALIZED;
-                                break;
-        case E_WORK        : eReason = E_NOREASON;
-                                break;
-        case E_BEFORECLOSE : eReason = E_INCLOSE;
-                                break;
-        case E_CLOSE       : eReason = E_CLOSED;
-                                break;
-    }
-    return( eReason!=E_NOREASON );
-}
-
-/*-****************************************************************************************************
-    @short      throw any exceptions for rejected calls
-    @descr      If a user wishes to use our automatic exception mode we use 
this impl-method.
-                We check all combinations of eReason and eExceptionMode and 
throw correct exception with some
-                descriptions for the recipient.
-
-    @seealso    method registerTransaction()
-    @seealso    enum ERejectReason
-    @seealso    enum EExceptionMode
-
-    @param      "eReason" , reason for rejected call
-    @param      "eMode"   , exception mode - set by user
-*//*-*****************************************************************************************************/
-void TransactionManager::impl_throwExceptions( EExceptionMode eMode, 
ERejectReason eReason ) const throw( css::uno::RuntimeException, 
css::lang::DisposedException )
-{
-    switch( eReason )
-    {
-        case E_UNINITIALIZED   :    if( eMode == E_HARDEXCEPTIONS )
-                                    {
-                                        // Help programmer to find out, why 
this exception is thrown!
-                                        SAL_WARN( "fwk", 
"TransactionManager...: Owner instance not correctly initialized yet. Call was 
rejected! Normally it's an algorithm error ... wrong use of class!" );
-                                        //ATTENTION: temp. disabled - till all 
bad code positions are detected and changed! */
-                                        // throw css::uno::RuntimeException( 
"TransactionManager...\nOwner instance not right initialized yet. Call was 
rejected! Normally it's an algorithm error... wrong using of class!\n", 
css::uno::Reference< css::uno::XInterface >() );
-                                    }
-                                    break;
-        case E_INCLOSE         :    if( eMode == E_HARDEXCEPTIONS )
-                                    {
-                                        // Help programmer to find out, why 
this exception is thrown!
-                                        SAL_WARN( "fwk", 
"TransactionManager...: Owner instance stand in close method. Call was 
rejected!" );
-                                        throw css::lang::DisposedException( 
"TransactionManager...\nOwner instance stand in close method. Call was 
rejected!" );
-                                    }
-                                    break;
-        case E_CLOSED           :   {
-                                        // Help programmer to find out, why 
this exception is thrown!
-                                        SAL_WARN( "fwk", 
"TransactionManager...: Owner instance already closed. Call was rejected!" );
-                                        throw css::lang::DisposedException( 
"TransactionManager...\nOwner instance already closed. Call was rejected!" );
-                                    }
-        case E_NOREASON         :   {
-                                        // Help programmer to find out
-                                        SAL_WARN( "fwk", 
"TransactionManager...: Impossible case E_NOREASON!" );
-                                    }
-                                    break;
-        default:
-            assert(false);
-    }
-}
-
 }   //  namespace framework
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit fc44b7104cacc5ec76d2a0b560a9f6bbc5c252b5
Author: Stephan Bergmann <[email protected]>
Date:   Wed Dec 16 10:35:35 2015 +0100

    No need to pass eReason out of TransactionManager::registerTransaction
    
    Change-Id: I0c8468219a4a9df904f34ec1363043bc46265c14

diff --git a/framework/inc/threadhelp/transactionguard.hxx 
b/framework/inc/threadhelp/transactionguard.hxx
index 7a85e6a..ac3aeca 100644
--- a/framework/inc/threadhelp/transactionguard.hxx
+++ b/framework/inc/threadhelp/transactionguard.hxx
@@ -58,11 +58,7 @@ class TransactionGuard : private boost::noncopyable
         inline TransactionGuard( TransactionManager& rManager, EExceptionMode 
eMode )
             : m_pManager( &rManager )
         {
-            // If exception mode is set to E_HARDEXCEPTIONS we don't need a 
buffer to return reason!
-            // We handle it private. If a call is rejected, our manager throw 
some exceptions ... and the reason
-            // could be ignorable ...
-            ERejectReason eMyReason;
-            m_pManager->registerTransaction( eMode, eMyReason );
+            m_pManager->registerTransaction( eMode );
         }
 
         
/*-************************************************************************************************************
diff --git a/framework/inc/threadhelp/transactionmanager.hxx 
b/framework/inc/threadhelp/transactionmanager.hxx
index 393e130..cc9e0b1 100644
--- a/framework/inc/threadhelp/transactionmanager.hxx
+++ b/framework/inc/threadhelp/transactionmanager.hxx
@@ -121,7 +121,7 @@ class FWI_DLLPUBLIC TransactionManager: private 
boost::noncopyable
         void               setWorkingMode               ( EWorkingMode eMode   
                        );
         EWorkingMode       getWorkingMode               (                      
                        ) const;
         bool               isCallRejected               ( ERejectReason& 
eReason                       ) const;
-        void               registerTransaction          ( EExceptionMode 
eMode, ERejectReason& eReason ) throw( css::uno::RuntimeException, 
css::lang::DisposedException );
+        void               registerTransaction          ( EExceptionMode eMode 
) throw( css::uno::RuntimeException, css::lang::DisposedException );
         void               unregisterTransaction        (                      
                        ) throw( css::uno::RuntimeException, 
css::lang::DisposedException );
 
     //  private methods
diff --git a/framework/source/fwi/threadhelp/transactionmanager.cxx 
b/framework/source/fwi/threadhelp/transactionmanager.cxx
index a6ade42..6639d78 100644
--- a/framework/source/fwi/threadhelp/transactionmanager.cxx
+++ b/framework/source/fwi/threadhelp/transactionmanager.cxx
@@ -152,13 +152,13 @@ EWorkingMode TransactionManager::getWorkingMode() const
     @seealso    method unregisterTransaction()
 
     @param      "eMode"     ,used to enable/disable throwing exceptions 
automatically for rejected calls
-    @param      "eReason"   ,reason for rejected calls
 
*//*-*****************************************************************************************************/
-void  TransactionManager::registerTransaction( EExceptionMode eMode, 
ERejectReason& eReason ) throw( css::uno::RuntimeException, 
css::lang::DisposedException )
+void  TransactionManager::registerTransaction( EExceptionMode eMode ) throw( 
css::uno::RuntimeException, css::lang::DisposedException )
 {
     // Look for rejected calls first.
     // If call was refused we throw some exceptions or do nothing!
     // It depends from given parameter eMode.
+    ERejectReason eReason;
     if( isCallRejected( eReason ) )
     {
         impl_throwExceptions( eMode, eReason );
commit 51351a28ec45f7b3cb4bcca6bead9a5c2165211b
Author: Stephan Bergmann <[email protected]>
Date:   Wed Dec 16 10:28:38 2015 +0100

    TransactionGuard is always called with null eReason
    
    Change-Id: If416f9539136563dba43f38f7622d70e7fb1f005

diff --git a/framework/inc/threadhelp/transactionguard.hxx 
b/framework/inc/threadhelp/transactionguard.hxx
index 80ffb77..7a85e6a 100644
--- a/framework/inc/threadhelp/transactionguard.hxx
+++ b/framework/inc/threadhelp/transactionguard.hxx
@@ -54,23 +54,15 @@ class TransactionGuard : private boost::noncopyable
                         from different threads at the same time ... this class 
use no refcount mechanism!
             @param      "rManager"  reference to transaction manager for using 
to register a request
             @param      "eMode"     enable/disable throwing of exceptions for 
rejected calls
-            @param      "eReason"   returns reason for rejected calls
         
*//*-*****************************************************************************************************/
-        inline TransactionGuard( TransactionManager& rManager, EExceptionMode 
eMode, ERejectReason* eReason = nullptr )
+        inline TransactionGuard( TransactionManager& rManager, EExceptionMode 
eMode )
             : m_pManager( &rManager )
         {
             // If exception mode is set to E_HARDEXCEPTIONS we don't need a 
buffer to return reason!
             // We handle it private. If a call is rejected, our manager throw 
some exceptions ... and the reason
             // could be ignorable ...
-            if( eReason == nullptr )
-            {
-                ERejectReason eMyReason;
-                m_pManager->registerTransaction( eMode, eMyReason );
-            }
-            else
-            {
-                m_pManager->registerTransaction( eMode, *eReason );
-            }
+            ERejectReason eMyReason;
+            m_pManager->registerTransaction( eMode, eMyReason );
         }
 
         
/*-************************************************************************************************************
commit 1681323093de8555edf49c136621db80c05cd892
Author: Stephan Bergmann <[email protected]>
Date:   Wed Dec 16 10:26:40 2015 +0100

    Remove dead ctor
    
    Change-Id: If1576f9eabcad4e0287181838e0a019fe9372065

diff --git a/framework/inc/threadhelp/transactionguard.hxx 
b/framework/inc/threadhelp/transactionguard.hxx
index 30f9dfb..80ffb77 100644
--- a/framework/inc/threadhelp/transactionguard.hxx
+++ b/framework/inc/threadhelp/transactionguard.hxx
@@ -99,20 +99,6 @@ class TransactionGuard : private boost::noncopyable
             }
         }
 
-
-    private:
-
-        
/*-****************************************************************************************************
-            @short      disable using of these functions!
-            @descr      It's not allowed to use this methods. Different 
problem can occur otherwise.
-                        Thats why we disable it by make it private.
-
-            @seealso    other ctor
-        
*//*-*****************************************************************************************************/
-        TransactionGuard();
-
-    //  private member
-
     private:
 
         TransactionManager*   m_pManager;   /// pointer to safed transaction 
manager
commit 52379d720b0f61bd14520c69a4fbff928e37a0d0
Author: Stephan Bergmann <[email protected]>
Date:   Tue Dec 15 17:30:21 2015 +0100

    Clean up
    
    Change-Id: I170b12d1024d51beb5c48333c0759bc33049f577

diff --git a/framework/inc/properties.h b/framework/inc/properties.h
index 5f0947d..383225f 100644
--- a/framework/inc/properties.h
+++ b/framework/inc/properties.h
@@ -43,25 +43,6 @@ namespace framework{
 
 #define FRAME_PROPCOUNT                                 5
 
-/** properties for "Desktop" class */
-
-#define DESKTOP_PROPNAME_ASCII_ACTIVEFRAME              "ActiveFrame"
-#define DESKTOP_PROPNAME_ASCII_DISPATCHRECORDERSUPPLIER 
"DispatchRecorderSupplier"
-#define DESKTOP_PROPNAME_ASCII_ISPLUGGED                "IsPlugged"
-#define DESKTOP_PROPNAME_ASCII_SUSPENDQUICKSTARTVETO    "SuspendQuickstartVeto"
-#define DESKTOP_PROPNAME_ASCII_TITLE                    "Title"
-
-// Please add new entries alphabetical sorted and correct all other handles!
-// Start counting with 0, so it can be used as direct index into an array too.
-// Don't forget updating of define DESKTOP_PROPCOUNT below!!!
-#define DESKTOP_PROPHANDLE_ACTIVEFRAME                  0
-#define DESKTOP_PROPHANDLE_DISPATCHRECORDERSUPPLIER     1
-#define DESKTOP_PROPHANDLE_ISPLUGGED                    2
-#define DESKTOP_PROPHANDLE_SUSPENDQUICKSTARTVETO        3
-#define DESKTOP_PROPHANDLE_TITLE                        4
-
-#define DESKTOP_PROPCOUNT                               5
-
 /** properties for "PathSettings" class */
 
 #define PATHSETTINGS_PROPNAME_ASCII_ADDIN               "Addin"
diff --git a/framework/source/services/desktop.cxx 
b/framework/source/services/desktop.cxx
index edbadd8..35ce361 100644
--- a/framework/source/services/desktop.cxx
+++ b/framework/source/services/desktop.cxx
@@ -68,6 +68,10 @@
 
 namespace framework{
 
+enum PropHandle {
+    ActiveFrame, DispatchRecorderSupplier, IsPlugged, SuspendQuickstartVeto,
+    Title };
+
 OUString SAL_CALL Desktop::getImplementationName()
     throw (css::uno::RuntimeException, std::exception)
 {
@@ -1288,7 +1292,7 @@ OUString SAL_CALL Desktop::getUntitledPrefix()
     @short      try to convert a property value
     @descr      This method is called from helperclass "OPropertySetHelper".
                 Don't use this directly!
-                You must try to convert the value of given DESKTOP_PROPHANDLE 
and
+                You must try to convert the value of given PropHandle and
                 return results of this operation. This will be used to ask 
vetoable
                 listener. If no listener has a veto, we will change value 
really!
                 ( in method setFastPropertyValue_NoBroadcast(...) )
@@ -1323,21 +1327,21 @@ sal_Bool SAL_CALL Desktop::convertFastPropertyValue(    
   css::uno::Any&   aCon
 
     switch( nHandle )
     {
-        case DESKTOP_PROPHANDLE_SUSPENDQUICKSTARTVETO:
+        case PropHandle::SuspendQuickstartVeto:
                 bReturn = PropHelper::willPropertyBeChanged(
                     css::uno::makeAny(m_bSuspendQuickstartVeto),
                     aValue,
                     aOldValue,
                     aConvertedValue);
                 break;
-        case DESKTOP_PROPHANDLE_DISPATCHRECORDERSUPPLIER :
+        case PropHandle::DispatchRecorderSupplier :
                 bReturn = PropHelper::willPropertyBeChanged(
                     css::uno::makeAny(m_xDispatchRecorderSupplier),
                     aValue,
                     aOldValue,
                     aConvertedValue);
                 break;
-        case DESKTOP_PROPHANDLE_TITLE :
+        case PropHandle::Title :
                 bReturn = PropHelper::willPropertyBeChanged(
                     css::uno::makeAny(m_sTitle),
                     aValue,
@@ -1373,11 +1377,11 @@ void SAL_CALL 
Desktop::setFastPropertyValue_NoBroadcast(       sal_Int32
 
     switch( nHandle )
     {
-        case DESKTOP_PROPHANDLE_SUSPENDQUICKSTARTVETO:    aValue >>= 
m_bSuspendQuickstartVeto;
+        case PropHandle::SuspendQuickstartVeto:    aValue >>= 
m_bSuspendQuickstartVeto;
                                                     break;
-        case DESKTOP_PROPHANDLE_DISPATCHRECORDERSUPPLIER:    aValue >>= 
m_xDispatchRecorderSupplier;
+        case PropHandle::DispatchRecorderSupplier:    aValue >>= 
m_xDispatchRecorderSupplier;
                                                     break;
-        case DESKTOP_PROPHANDLE_TITLE:    aValue >>= m_sTitle;
+        case PropHandle::Title:    aValue >>= m_sTitle;
                                                     break;
     }
 }
@@ -1404,15 +1408,15 @@ void SAL_CALL Desktop::getFastPropertyValue( 
css::uno::Any& aValue  ,
 
     switch( nHandle )
     {
-        case DESKTOP_PROPHANDLE_ACTIVEFRAME           :   aValue <<= 
m_aChildTaskContainer.getActive();
+        case PropHandle::ActiveFrame           :   aValue <<= 
m_aChildTaskContainer.getActive();
                                                     break;
-        case DESKTOP_PROPHANDLE_ISPLUGGED           :   aValue <<= sal_False;
+        case PropHandle::IsPlugged           :   aValue <<= sal_False;
                                                     break;
-        case DESKTOP_PROPHANDLE_SUSPENDQUICKSTARTVETO:    aValue <<= 
m_bSuspendQuickstartVeto;
+        case PropHandle::SuspendQuickstartVeto:    aValue <<= 
m_bSuspendQuickstartVeto;
                                                     break;
-        case DESKTOP_PROPHANDLE_DISPATCHRECORDERSUPPLIER:    aValue <<= 
m_xDispatchRecorderSupplier;
+        case PropHandle::DispatchRecorderSupplier:    aValue <<= 
m_xDispatchRecorderSupplier;
                                                     break;
-        case DESKTOP_PROPHANDLE_TITLE:    aValue <<= m_sTitle;
+        case PropHandle::Title:    aValue <<= m_sTitle;
                                                     break;
     }
 }
@@ -1573,19 +1577,23 @@ const css::uno::Sequence< css::beans::Property > 
Desktop::impl_getStaticProperty
     // It's necessary for methods of OPropertySetHelper.
     // ATTENTION:
     //      YOU MUST SORT FOLLOW TABLE BY NAME ALPHABETICAL !!!
-
-    const css::beans::Property pProperties[] =
-    {
-        css::beans::Property( DESKTOP_PROPNAME_ASCII_ACTIVEFRAME              
, DESKTOP_PROPHANDLE_ACTIVEFRAME             , 
cppu::UnoType<css::lang::XComponent>::get(), 
css::beans::PropertyAttribute::TRANSIENT | 
css::beans::PropertyAttribute::READONLY ),
-        css::beans::Property( DESKTOP_PROPNAME_ASCII_DISPATCHRECORDERSUPPLIER 
, DESKTOP_PROPHANDLE_DISPATCHRECORDERSUPPLIER, 
cppu::UnoType<css::frame::XDispatchRecorderSupplier>::get(), 
css::beans::PropertyAttribute::TRANSIENT ),
-        css::beans::Property( DESKTOP_PROPNAME_ASCII_ISPLUGGED                
, DESKTOP_PROPHANDLE_ISPLUGGED               , cppu::UnoType<bool>::get()       
                                                           , 
css::beans::PropertyAttribute::TRANSIENT | 
css::beans::PropertyAttribute::READONLY ),
-        css::beans::Property( DESKTOP_PROPNAME_ASCII_SUSPENDQUICKSTARTVETO    
, DESKTOP_PROPHANDLE_SUSPENDQUICKSTARTVETO   , cppu::UnoType<bool>::get()       
                                                           , 
css::beans::PropertyAttribute::TRANSIENT ),
-        css::beans::Property( DESKTOP_PROPNAME_ASCII_TITLE                    
, DESKTOP_PROPHANDLE_TITLE                   , cppu::UnoType<OUString>::get(), 
css::beans::PropertyAttribute::TRANSIENT ),
-    };
-    // Use it to initialize sequence!
-    const css::uno::Sequence< css::beans::Property > lPropertyDescriptor( 
pProperties, DESKTOP_PROPCOUNT );
-    // Return "PropertyDescriptor"
-    return lPropertyDescriptor;
+    return {
+        {"ActiveFrame", PropHandle::ActiveFrame,
+         cppu::UnoType<css::lang::XComponent>::get(),
+         (css::beans::PropertyAttribute::TRANSIENT
+          | css::beans::PropertyAttribute::READONLY)},
+        {"DispatchRecorderSupplier",
+                PropHandle::DispatchRecorderSupplier,
+         cppu::UnoType<css::frame::XDispatchRecorderSupplier>::get(),
+         css::beans::PropertyAttribute::TRANSIENT},
+        {"IsPlugged", PropHandle::IsPlugged, cppu::UnoType<bool>::get(),
+         (css::beans::PropertyAttribute::TRANSIENT
+          | css::beans::PropertyAttribute::READONLY)},
+        {"SuspendQuickstartVeto",
+         PropHandle::SuspendQuickstartVeto, cppu::UnoType<bool>::get(),
+         css::beans::PropertyAttribute::TRANSIENT},
+        {"Title", PropHandle::Title, cppu::UnoType<OUString>::get(),
+         css::beans::PropertyAttribute::TRANSIENT}};
 }
 
 void Desktop::impl_sendQueryTerminationEvent(Desktop::TTerminateListenerList& 
lCalledListener,
_______________________________________________
Libreoffice-commits mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to