[Libreoffice-commits] core.git: compilerplugins/clang editeng/source embeddedobj/source eventattacher/source extensions/source
Noel Grandin
noel.grandin at collabora.co.uk
Thu Sep 21 13:29:49 UTC 2017
compilerplugins/clang/flatten.cxx | 125 +++++++---
editeng/source/accessibility/AccessibleEditableTextPara.cxx | 51 +---
editeng/source/accessibility/AccessibleImageBullet.cxx | 15 -
editeng/source/uno/unotext.cxx | 85 +++---
embeddedobj/source/commonembedding/embedobj.cxx | 119 ++++-----
embeddedobj/source/commonembedding/persistence.cxx | 31 +-
embeddedobj/source/commonembedding/specialobject.cxx | 5
embeddedobj/source/commonembedding/visobj.cxx | 9
embeddedobj/source/commonembedding/xfactory.cxx | 150 +++++-------
embeddedobj/source/msole/olevisual.cxx | 9
eventattacher/source/eventattacher.cxx | 5
extensions/source/bibliography/bibload.cxx | 21 -
extensions/source/update/ui/updatecheckui.cxx | 5
13 files changed, 319 insertions(+), 311 deletions(-)
New commits:
commit 3a481dde031ba416ec4ef0351130e26e49417418
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Thu Sep 21 11:06:43 2017 +0200
loplugin:flatten in editeng..extensions
Change-Id: I2b68f5640471ea827c09af1b5a319fb526a53b4b
Reviewed-on: https://gerrit.libreoffice.org/42579
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/compilerplugins/clang/flatten.cxx b/compilerplugins/clang/flatten.cxx
index 4e031ef1f3a5..145311144fee 100644
--- a/compilerplugins/clang/flatten.cxx
+++ b/compilerplugins/clang/flatten.cxx
@@ -37,6 +37,7 @@ public:
private:
bool rewrite(const IfStmt * );
SourceRange ignoreMacroExpansions(SourceRange range);
+ SourceRange extendOverComments(SourceRange range);
std::string getSourceAsString(SourceRange range);
};
@@ -101,8 +102,9 @@ bool Flatten::VisitIfStmt(const IfStmt* ifStmt)
}
static std::string stripOpenAndCloseBrace(std::string s);
-static std::string deindentThenStmt(std::string const & s);
-static std::vector<std::string> split(std::string const & s);
+static std::string deindent(std::string const & s);
+static std::vector<std::string> split(std::string s);
+static bool startswith(const std::string& rStr, const char* pSubStr);
bool Flatten::rewrite(const IfStmt* ifStmt)
{
@@ -121,12 +123,22 @@ bool Flatten::rewrite(const IfStmt* ifStmt)
if (!elseRange.isValid()) {
return false;
}
- auto elseKeywordRange = ifStmt->getElseLoc();
+ SourceRange elseKeywordRange = ifStmt->getElseLoc();
+
+ thenRange = extendOverComments(thenRange);
+ elseRange = extendOverComments(elseRange);
+ elseKeywordRange = extendOverComments(elseKeywordRange);
// in adjusting the formatting I assume that "{" starts on a new line
std::string conditionString = getSourceAsString(conditionRange);
- conditionString = "!(" + conditionString + ")";
+ auto condExpr = ifStmt->getCond()->IgnoreImpCasts();
+ if (auto exprWithCleanups = dyn_cast<ExprWithCleanups>(condExpr))
+ condExpr = exprWithCleanups->getSubExpr()->IgnoreImpCasts();
+ if (isa<DeclRefExpr>(condExpr) || isa<CallExpr>(condExpr) || isa<MemberExpr>(condExpr))
+ conditionString = "!" + conditionString;
+ else
+ conditionString = "!(" + conditionString + ")";
std::string thenString = getSourceAsString(thenRange);
bool thenIsCompound = false;
@@ -136,23 +148,14 @@ bool Flatten::rewrite(const IfStmt* ifStmt)
thenString = stripOpenAndCloseBrace(thenString);
}
}
- thenString = deindentThenStmt(thenString);
+ thenString = deindent(thenString);
std::string elseString = getSourceAsString(elseRange);
- bool elseIsCompound = false;
- if (auto compoundStmt = dyn_cast<CompoundStmt>(ifStmt->getElse())) {
- if (compoundStmt->getLBracLoc().isValid()) {
- elseIsCompound = true;
- }
- }
- // indent else block if necessary
- if (thenIsCompound && !elseIsCompound)
- elseString = " " + elseString;
if (!replaceText(elseRange, thenString)) {
return false;
}
- if (!replaceText(elseKeywordRange, "")) {
+ if (!removeText(elseKeywordRange, RewriteOptions(RemoveLineIfEmpty))) {
return false;
}
if (!replaceText(thenRange, elseString)) {
@@ -167,38 +170,44 @@ bool Flatten::rewrite(const IfStmt* ifStmt)
std::string stripOpenAndCloseBrace(std::string s)
{
- size_t openBrace = s.find_first_of("{");
- if (openBrace != std::string::npos) {
- size_t openLineEnd = s.find_first_of("\n", openBrace + 1);
- if (openLineEnd != std::string::npos)
- s = s.substr(openLineEnd + 1);
- else
- s = s.substr(openBrace + 1);
+ size_t i = s.find("{");
+ if (i != std::string::npos) {
+ ++i;
+ // strip to line end
+ while (s[i] == ' ')
+ ++i;
+ if (s[i] == '\n')
+ ++i;
+ s = s.substr(i);
}
- size_t closeBrace = s.find_last_of("}");
- if (closeBrace != std::string::npos) {
- size_t closeLineEnd = s.find_last_of("\n", closeBrace);
- if (closeLineEnd != std::string::npos)
- s = s.substr(0, closeLineEnd - 1);
- else
- s = s.substr(0, closeBrace - 1);
+ i = s.rfind("}");
+ if (i != std::string::npos) {
+ --i;
+ while (s[i] == ' ')
+ --i;
+ s = s.substr(0,i);
}
return s;
}
-std::string deindentThenStmt(std::string const & s)
+std::string deindent(std::string const & s)
{
std::vector<std::string> lines = split(s);
std::string rv;
for (auto s : lines) {
- rv += s.length() > 4 ? s.substr(4) : s;
+ if (startswith(s, " "))
+ rv += s.substr(4);
+ else
+ rv += s;
rv += "\n";
}
return rv;
}
-std::vector<std::string> split(std::string const & s)
+std::vector<std::string> split(std::string s)
{
+ if (s.back() == '\n')
+ s = s.substr(0, s.size()-1);
size_t next = -1;
std::vector<std::string> rv;
do
@@ -211,6 +220,11 @@ std::vector<std::string> split(std::string const & s)
return rv;
}
+static bool startswith(const std::string& rStr, const char* pSubStr)
+{
+ return rStr.compare(0, strlen(pSubStr), pSubStr) == 0;
+}
+
SourceRange Flatten::ignoreMacroExpansions(SourceRange range) {
while (compiler.getSourceManager().isMacroArgExpansion(range.getBegin())) {
range.setBegin(
@@ -244,6 +258,49 @@ SourceRange Flatten::ignoreMacroExpansions(SourceRange range) {
? SourceRange() : range;
}
+/**
+ * Extend the SourceRange to include any leading and trailing whitespace, and any comments.
+ */
+SourceRange Flatten::extendOverComments(SourceRange range)
+{
+ SourceManager& SM = compiler.getSourceManager();
+ SourceLocation startLoc = range.getBegin();
+ SourceLocation endLoc = range.getEnd();
+ const char *p1 = SM.getCharacterData( startLoc );
+ const char *p2 = SM.getCharacterData( endLoc );
+
+ // scan backwards from the beginning to include any spaces on that line
+ while (*(p1-1) == ' ')
+ --p1;
+ startLoc = startLoc.getLocWithOffset(p1 - SM.getCharacterData( startLoc ));
+
+ p2 += Lexer::MeasureTokenLength( endLoc, SM, compiler.getLangOpts());
+ // look for trailing ";"
+ while (*p2 == ';')
+ ++p2;
+ // look for trailing " "
+ while (*p2 == ' ')
+ ++p2;
+ // look for single line comments attached to the end of the statement
+ if (*p2 == '/' && *(p2+1) == '/')
+ {
+ p2 += 2;
+ while (*p2 && *p2 != '\n')
+ ++p2;
+ if (*p2 == '\n')
+ ++p2;
+ }
+ else
+ {
+ // make the source code we extract include any trailing "\n"
+ if (*p2 == '\n')
+ ++p2;
+ }
+ endLoc = endLoc.getLocWithOffset(p2 - SM.getCharacterData( endLoc ));
+
+ return SourceRange(startLoc, endLoc);
+}
+
std::string Flatten::getSourceAsString(SourceRange range)
{
SourceManager& SM = compiler.getSourceManager();
@@ -251,8 +308,8 @@ std::string Flatten::getSourceAsString(SourceRange range)
SourceLocation endLoc = range.getEnd();
const char *p1 = SM.getCharacterData( startLoc );
const char *p2 = SM.getCharacterData( endLoc );
- unsigned n = Lexer::MeasureTokenLength( endLoc, SM, compiler.getLangOpts());
- return std::string( p1, p2 - p1 + n);
+ p2 += Lexer::MeasureTokenLength( endLoc, SM, compiler.getLangOpts());
+ return std::string( p1, p2 - p1);
}
loplugin::Plugin::Registration< Flatten > X("flatten", false);
diff --git a/editeng/source/accessibility/AccessibleEditableTextPara.cxx b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
index c35a2dc05343..04eed5cd5996 100644
--- a/editeng/source/accessibility/AccessibleEditableTextPara.cxx
+++ b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
@@ -434,13 +434,12 @@ namespace accessibility
SvxEditSourceAdapter& AccessibleEditableTextPara::GetEditSource() const
{
- if( mpEditSource )
- return *mpEditSource;
- else
+ if( !mpEditSource )
throw uno::RuntimeException("No edit source, object is defunct",
uno::Reference< uno::XInterface >
( static_cast< ::cppu::OWeakObject* >
( const_cast< AccessibleEditableTextPara* > (this) ) ) ); // disambiguate hierarchy
+ return *mpEditSource;
}
SvxAccessibleTextAdapter& AccessibleEditableTextPara::GetTextForwarder() const
@@ -454,13 +453,12 @@ namespace accessibility
( static_cast< ::cppu::OWeakObject* >
( const_cast< AccessibleEditableTextPara* > (this) ) ) ); // disambiguate hierarchy
- if( pTextForwarder->IsValid() )
- return *pTextForwarder;
- else
+ if( !pTextForwarder->IsValid() )
throw uno::RuntimeException("Text forwarder is invalid, object is defunct",
uno::Reference< uno::XInterface >
( static_cast< ::cppu::OWeakObject* >
( const_cast< AccessibleEditableTextPara* > (this) ) ) ); // disambiguate hierarchy
+ return *pTextForwarder;
}
SvxViewForwarder& AccessibleEditableTextPara::GetViewForwarder() const
@@ -476,13 +474,12 @@ namespace accessibility
( const_cast< AccessibleEditableTextPara* > (this) ) ) ); // disambiguate hierarchy
}
- if( pViewForwarder->IsValid() )
- return *pViewForwarder;
- else
+ if( !pViewForwarder->IsValid() )
throw uno::RuntimeException("View forwarder is invalid, object is defunct",
uno::Reference< uno::XInterface >
( static_cast< ::cppu::OWeakObject* >
( const_cast< AccessibleEditableTextPara* > (this) ) ) ); // disambiguate hierarchy
+ return *pViewForwarder;
}
SvxAccessibleTextEditViewAdapter& AccessibleEditableTextPara::GetEditViewForwarder( bool bCreate ) const
@@ -2644,10 +2641,9 @@ namespace accessibility
if (bValidPara)
{
// we explicitly allow for the index to point at the character right behind the text
- if (0 <= nIndex && nIndex <= rCacheTF.GetTextLen( nPara ))
- nRes = rCacheTF.GetLineNumberAtIndex( nPara, nIndex );
- else
+ if (0 > nIndex || nIndex > rCacheTF.GetTextLen( nPara ))
throw lang::IndexOutOfBoundsException();
+ nRes = rCacheTF.GetLineNumberAtIndex( nPara, nIndex );
}
return nRes;
}
@@ -2663,27 +2659,24 @@ namespace accessibility
DBG_ASSERT( bValidPara, "getTextAtLineNumber: current paragraph index out of range" );
if (bValidPara)
{
- if (0 <= nLineNo && nLineNo < rCacheTF.GetLineCount( nPara ))
+ if (0 > nLineNo || nLineNo >= rCacheTF.GetLineCount( nPara ))
+ throw lang::IndexOutOfBoundsException();
+ sal_Int32 nStart = 0, nEnd = 0;
+ rCacheTF.GetLineBoundaries( nStart, nEnd, nPara, nLineNo );
+ if (nStart >= 0 && nEnd >= 0)
{
- sal_Int32 nStart = 0, nEnd = 0;
- rCacheTF.GetLineBoundaries( nStart, nEnd, nPara, nLineNo );
- if (nStart >= 0 && nEnd >= 0)
+ try
{
- try
- {
- aResult.SegmentText = getTextRange( nStart, nEnd );
- aResult.SegmentStart = nStart;
- aResult.SegmentEnd = nEnd;
- }
- catch (const lang::IndexOutOfBoundsException&)
- {
- // this is not the exception that should be raised in this function ...
- DBG_UNHANDLED_EXCEPTION();
- }
+ aResult.SegmentText = getTextRange( nStart, nEnd );
+ aResult.SegmentStart = nStart;
+ aResult.SegmentEnd = nEnd;
+ }
+ catch (const lang::IndexOutOfBoundsException&)
+ {
+ // this is not the exception that should be raised in this function ...
+ DBG_UNHANDLED_EXCEPTION();
}
}
- else
- throw lang::IndexOutOfBoundsException();
}
return aResult;
}
diff --git a/editeng/source/accessibility/AccessibleImageBullet.cxx b/editeng/source/accessibility/AccessibleImageBullet.cxx
index fe88afb6f37d..58cc35859957 100644
--- a/editeng/source/accessibility/AccessibleImageBullet.cxx
+++ b/editeng/source/accessibility/AccessibleImageBullet.cxx
@@ -484,13 +484,12 @@ namespace accessibility
SvxEditSource& AccessibleImageBullet::GetEditSource() const
{
- if( mpEditSource )
- return *mpEditSource;
- else
+ if( !mpEditSource )
throw uno::RuntimeException("No edit source, object is defunct",
uno::Reference< uno::XInterface >
( static_cast< ::cppu::OWeakObject* >
( const_cast< AccessibleImageBullet* > (this) ) ) ); // disambiguate hierarchy
+ return *mpEditSource;
}
SvxTextForwarder& AccessibleImageBullet::GetTextForwarder() const
@@ -505,13 +504,12 @@ namespace accessibility
( static_cast< ::cppu::OWeakObject* >
( const_cast< AccessibleImageBullet* > (this) ) ) ); // disambiguate hierarchy
- if( pTextForwarder->IsValid() )
- return *pTextForwarder;
- else
+ if( !pTextForwarder->IsValid() )
throw uno::RuntimeException("Text forwarder is invalid, object is defunct",
uno::Reference< uno::XInterface >
( static_cast< ::cppu::OWeakObject* >
( const_cast< AccessibleImageBullet* > (this) ) ) ); // disambiguate hierarchy
+ return *pTextForwarder;
}
SvxViewForwarder& AccessibleImageBullet::GetViewForwarder() const
@@ -528,13 +526,12 @@ namespace accessibility
( const_cast< AccessibleImageBullet* > (this) ) ) ); // disambiguate hierarchy
}
- if( pViewForwarder->IsValid() )
- return *pViewForwarder;
- else
+ if( !pViewForwarder->IsValid() )
throw uno::RuntimeException("View forwarder is invalid, object is defunct",
uno::Reference< uno::XInterface >
( static_cast< ::cppu::OWeakObject* >
( const_cast< AccessibleImageBullet* > (this) ) ) ); // disambiguate hierarchy
+ return *pViewForwarder;
}
diff --git a/editeng/source/uno/unotext.cxx b/editeng/source/uno/unotext.cxx
index 6b209a6f2121..ebc6ee10fba9 100644
--- a/editeng/source/uno/unotext.cxx
+++ b/editeng/source/uno/unotext.cxx
@@ -2009,63 +2009,60 @@ void SvxPropertyValuesToItemSet(
for (sal_Int32 i = 0; i < nProps; ++i)
{
const SfxItemPropertySimpleEntry *pEntry = pPropSet->getPropertyMap().getByName( pProps[i].Name );
- if (pEntry)
- {
- // Note: there is no need to take special care of the properties
- // TextField (EE_FEATURE_FIELD) and
- // TextPortionType (WID_PORTIONTYPE)
- // since they are read-only and thus are already taken care of below.
+ if (!pEntry)
+ throw beans::UnknownPropertyException( "Unknown property: " + pProps[i].Name, static_cast < cppu::OWeakObject * > ( nullptr ) );
+ // Note: there is no need to take special care of the properties
+ // TextField (EE_FEATURE_FIELD) and
+ // TextPortionType (WID_PORTIONTYPE)
+ // since they are read-only and thus are already taken care of below.
- if (pEntry->nFlags & beans::PropertyAttribute::READONLY)
- // should be PropertyVetoException which is not yet defined for the new import API's functions
- throw uno::RuntimeException("Property is read-only: " + pProps[i].Name, static_cast < cppu::OWeakObject * > ( nullptr ) );
- //throw PropertyVetoException ("Property is read-only: " + pProps[i].Name, static_cast < cppu::OWeakObject * > ( 0 ) );
+ if (pEntry->nFlags & beans::PropertyAttribute::READONLY)
+ // should be PropertyVetoException which is not yet defined for the new import API's functions
+ throw uno::RuntimeException("Property is read-only: " + pProps[i].Name, static_cast < cppu::OWeakObject * > ( nullptr ) );
+ //throw PropertyVetoException ("Property is read-only: " + pProps[i].Name, static_cast < cppu::OWeakObject * > ( 0 ) );
- if (pEntry->nWID == WID_FONTDESC)
- {
- awt::FontDescriptor aDesc;
- if (pProps[i].Value >>= aDesc)
- SvxUnoFontDescriptor::FillItemSet( aDesc, rItemSet );
- }
- else if (pEntry->nWID == WID_NUMLEVEL)
+ if (pEntry->nWID == WID_FONTDESC)
+ {
+ awt::FontDescriptor aDesc;
+ if (pProps[i].Value >>= aDesc)
+ SvxUnoFontDescriptor::FillItemSet( aDesc, rItemSet );
+ }
+ else if (pEntry->nWID == WID_NUMLEVEL)
+ {
+ if (pForwarder)
{
- if (pForwarder)
- {
- sal_Int16 nLevel = -1;
- pProps[i].Value >>= nLevel;
+ sal_Int16 nLevel = -1;
+ pProps[i].Value >>= nLevel;
- // #101004# Call interface method instead of unsafe cast
- if (!pForwarder->SetDepth( nPara, nLevel ))
- throw lang::IllegalArgumentException();
- }
+ // #101004# Call interface method instead of unsafe cast
+ if (!pForwarder->SetDepth( nPara, nLevel ))
+ throw lang::IllegalArgumentException();
}
- else if (pEntry->nWID == WID_NUMBERINGSTARTVALUE )
+ }
+ else if (pEntry->nWID == WID_NUMBERINGSTARTVALUE )
+ {
+ if( pForwarder )
{
- if( pForwarder )
- {
- sal_Int16 nStartValue = -1;
- if( !(pProps[i].Value >>= nStartValue) )
- throw lang::IllegalArgumentException();
+ sal_Int16 nStartValue = -1;
+ if( !(pProps[i].Value >>= nStartValue) )
+ throw lang::IllegalArgumentException();
- pForwarder->SetNumberingStartValue( nPara, nStartValue );
- }
+ pForwarder->SetNumberingStartValue( nPara, nStartValue );
}
- else if (pEntry->nWID == WID_PARAISNUMBERINGRESTART )
+ }
+ else if (pEntry->nWID == WID_PARAISNUMBERINGRESTART )
+ {
+ if( pForwarder )
{
- if( pForwarder )
- {
- bool bParaIsNumberingRestart = false;
- if( !(pProps[i].Value >>= bParaIsNumberingRestart) )
- throw lang::IllegalArgumentException();
+ bool bParaIsNumberingRestart = false;
+ if( !(pProps[i].Value >>= bParaIsNumberingRestart) )
+ throw lang::IllegalArgumentException();
- pForwarder->SetParaIsNumberingRestart( nPara, bParaIsNumberingRestart );
- }
+ pForwarder->SetParaIsNumberingRestart( nPara, bParaIsNumberingRestart );
}
- else
- pPropSet->setPropertyValue( pProps[i].Name, pProps[i].Value, rItemSet );
}
else
- throw beans::UnknownPropertyException( "Unknown property: " + pProps[i].Name, static_cast < cppu::OWeakObject * > ( nullptr ) );
+ pPropSet->setPropertyValue( pProps[i].Name, pProps[i].Value, rItemSet );
}
}
diff --git a/embeddedobj/source/commonembedding/embedobj.cxx b/embeddedobj/source/commonembedding/embedobj.cxx
index f85ce88c133e..d24533a63146 100644
--- a/embeddedobj/source/commonembedding/embedobj.cxx
+++ b/embeddedobj/source/commonembedding/embedobj.cxx
@@ -230,33 +230,30 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState )
throw embed::WrongStateException( "client site not set, yet", *this );
uno::Reference< embed::XInplaceClient > xInplaceClient( m_xClientSite, uno::UNO_QUERY );
- if ( xInplaceClient.is() && xInplaceClient->canInplaceActivate() )
- {
- xInplaceClient->activatingInplace();
+ if ( !xInplaceClient.is() || !xInplaceClient->canInplaceActivate() )
+ throw embed::WrongStateException(); //TODO: can't activate inplace
+ xInplaceClient->activatingInplace();
- uno::Reference< embed::XWindowSupplier > xClientWindowSupplier( xInplaceClient, uno::UNO_QUERY_THROW );
+ uno::Reference< embed::XWindowSupplier > xClientWindowSupplier( xInplaceClient, uno::UNO_QUERY_THROW );
- m_xClientWindow = xClientWindowSupplier->getWindow();
- m_aOwnRectangle = xInplaceClient->getPlacement();
- m_aClipRectangle = xInplaceClient->getClipRectangle();
- awt::Rectangle aRectangleToShow = GetRectangleInterception( m_aOwnRectangle, m_aClipRectangle );
+ m_xClientWindow = xClientWindowSupplier->getWindow();
+ m_aOwnRectangle = xInplaceClient->getPlacement();
+ m_aClipRectangle = xInplaceClient->getClipRectangle();
+ awt::Rectangle aRectangleToShow = GetRectangleInterception( m_aOwnRectangle, m_aClipRectangle );
- // create own window based on the client window
- // place and resize the window according to the rectangles
- uno::Reference< awt::XWindowPeer > xClientWindowPeer( m_xClientWindow, uno::UNO_QUERY_THROW );
+ // create own window based on the client window
+ // place and resize the window according to the rectangles
+ uno::Reference< awt::XWindowPeer > xClientWindowPeer( m_xClientWindow, uno::UNO_QUERY_THROW );
- // dispatch provider may not be provided
- uno::Reference< frame::XDispatchProvider > xContainerDP = xInplaceClient->getInplaceDispatchProvider();
- bool bOk = m_xDocHolder->ShowInplace( xClientWindowPeer, aRectangleToShow, xContainerDP );
- m_nObjectState = nNextState;
- if ( !bOk )
- {
- SwitchStateTo_Impl( embed::EmbedStates::RUNNING );
- throw embed::WrongStateException(); //TODO: can't activate inplace
- }
- }
- else
+ // dispatch provider may not be provided
+ uno::Reference< frame::XDispatchProvider > xContainerDP = xInplaceClient->getInplaceDispatchProvider();
+ bool bOk = m_xDocHolder->ShowInplace( xClientWindowPeer, aRectangleToShow, xContainerDP );
+ m_nObjectState = nNextState;
+ if ( !bOk )
+ {
+ SwitchStateTo_Impl( embed::EmbedStates::RUNNING );
throw embed::WrongStateException(); //TODO: can't activate inplace
+ }
}
else if ( nNextState == embed::EmbedStates::ACTIVE )
{
@@ -296,45 +293,42 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState )
// TODO:
uno::Reference< css::frame::XLayoutManager > xContainerLM =
xInplaceClient->getLayoutManager();
- if ( xContainerLM.is() )
+ if ( !xContainerLM.is() )
+ throw embed::WrongStateException(); //TODO: can't activate UI
+ // dispatch provider may not be provided
+ uno::Reference< frame::XDispatchProvider > xContainerDP = xInplaceClient->getInplaceDispatchProvider();
+
+ // get the container module name
+ OUString aModuleName;
+ try
{
- // dispatch provider may not be provided
- uno::Reference< frame::XDispatchProvider > xContainerDP = xInplaceClient->getInplaceDispatchProvider();
-
- // get the container module name
- OUString aModuleName;
- try
- {
- uno::Reference< embed::XComponentSupplier > xCompSupl( m_xClientSite, uno::UNO_QUERY_THROW );
- uno::Reference< uno::XInterface > xContDoc( xCompSupl->getComponent(), uno::UNO_QUERY_THROW );
-
- uno::Reference< frame::XModuleManager2 > xManager( frame::ModuleManager::create( m_xContext ) );
-
- aModuleName = xManager->identify( xContDoc );
- }
- catch( const uno::Exception& )
- {}
-
- // if currently another object is UIactive it will be deactivated; usually this will activate the LM of
- // the container. Locking the LM will prevent flicker.
- xContainerLM->lock();
- xInplaceClient->activatingUI();
- bool bOk = m_xDocHolder->ShowUI( xContainerLM, xContainerDP, aModuleName );
- xContainerLM->unlock();
-
- if ( bOk )
- {
- m_nObjectState = nNextState;
- m_xDocHolder->ResizeHatchWindow();
- }
- else
- {
- xInplaceClient->deactivatedUI();
- throw embed::WrongStateException(); //TODO: can't activate UI
- }
+ uno::Reference< embed::XComponentSupplier > xCompSupl( m_xClientSite, uno::UNO_QUERY_THROW );
+ uno::Reference< uno::XInterface > xContDoc( xCompSupl->getComponent(), uno::UNO_QUERY_THROW );
+
+ uno::Reference< frame::XModuleManager2 > xManager( frame::ModuleManager::create( m_xContext ) );
+
+ aModuleName = xManager->identify( xContDoc );
+ }
+ catch( const uno::Exception& )
+ {}
+
+ // if currently another object is UIactive it will be deactivated; usually this will activate the LM of
+ // the container. Locking the LM will prevent flicker.
+ xContainerLM->lock();
+ xInplaceClient->activatingUI();
+ bool bOk = m_xDocHolder->ShowUI( xContainerLM, xContainerDP, aModuleName );
+ xContainerLM->unlock();
+
+ if ( bOk )
+ {
+ m_nObjectState = nNextState;
+ m_xDocHolder->ResizeHatchWindow();
}
else
+ {
+ xInplaceClient->deactivatedUI();
throw embed::WrongStateException(); //TODO: can't activate UI
+ }
}
}
else
@@ -368,14 +362,11 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState )
if ( xContainerLM.is() )
bOk = m_xDocHolder->HideUI( xContainerLM );
- if ( bOk )
- {
- m_nObjectState = nNextState;
- m_xDocHolder->ResizeHatchWindow();
- xInplaceClient->deactivatedUI();
- }
- else
+ if ( !bOk )
throw embed::WrongStateException(); //TODO: can't activate UI
+ m_nObjectState = nNextState;
+ m_xDocHolder->ResizeHatchWindow();
+ xInplaceClient->deactivatedUI();
}
}
else
diff --git a/embeddedobj/source/commonembedding/persistence.cxx b/embeddedobj/source/commonembedding/persistence.cxx
index ba5a3fde2c6e..2a5d09bfeb94 100644
--- a/embeddedobj/source/commonembedding/persistence.cxx
+++ b/embeddedobj/source/commonembedding/persistence.cxx
@@ -953,26 +953,23 @@ void SAL_CALL OCommonEmbeddedObject::setPersistentEntry(
if ( m_bWaitSaveCompleted )
{
- if ( nEntryConnectionMode == embed::EntryInitModes::NO_INIT )
- {
- // saveCompleted is expected, handle it accordingly
- if ( m_xNewParentStorage == xStorage && m_aNewEntryName == sEntName )
- {
- saveCompleted( true );
- return;
- }
-
- // if a completely different entry is provided, switch first back to the old persistence in saveCompleted
- // and then switch to the target persistence
- bool bSwitchFurther = ( m_xParentStorage != xStorage || m_aEntryName != sEntName );
- saveCompleted( false );
- if ( !bSwitchFurther )
- return;
- }
- else
+ if ( nEntryConnectionMode != embed::EntryInitModes::NO_INIT )
throw embed::WrongStateException(
"The object waits for saveCompleted() call!",
static_cast< ::cppu::OWeakObject* >(this) );
+ // saveCompleted is expected, handle it accordingly
+ if ( m_xNewParentStorage == xStorage && m_aNewEntryName == sEntName )
+ {
+ saveCompleted( true );
+ return;
+ }
+
+ // if a completely different entry is provided, switch first back to the old persistence in saveCompleted
+ // and then switch to the target persistence
+ bool bSwitchFurther = ( m_xParentStorage != xStorage || m_aEntryName != sEntName );
+ saveCompleted( false );
+ if ( !bSwitchFurther )
+ return;
}
// for now support of this interface is required to allow breaking of links and converting them to normal embedded
diff --git a/embeddedobj/source/commonembedding/specialobject.cxx b/embeddedobj/source/commonembedding/specialobject.cxx
index e6f04fdf5b06..24100fa7465d 100644
--- a/embeddedobj/source/commonembedding/specialobject.cxx
+++ b/embeddedobj/source/commonembedding/specialobject.cxx
@@ -163,10 +163,9 @@ void SAL_CALL OSpecialEmbeddedObject::doVerb( sal_Int32 nVerbID )
{
uno::Reference < ui::dialogs::XExecutableDialog > xDlg( m_xDocHolder->GetComponent(), uno::UNO_QUERY );
- if ( xDlg.is() )
- xDlg->execute();
- else
+ if ( !xDlg.is() )
throw embed::UnreachableStateException();
+ xDlg->execute();
}
else
OCommonEmbeddedObject::doVerb( nVerbID );
diff --git a/embeddedobj/source/commonembedding/visobj.cxx b/embeddedobj/source/commonembedding/visobj.cxx
index 7ed1bdcc029e..431f871fe492 100644
--- a/embeddedobj/source/commonembedding/visobj.cxx
+++ b/embeddedobj/source/commonembedding/visobj.cxx
@@ -193,13 +193,10 @@ embed::VisualRepresentation SAL_CALL OCommonEmbeddedObject::getPreferredVisualRe
"GDIMetaFile",
cppu::UnoType<uno::Sequence< sal_Int8 >>::get() );
- if( xTransferable->isDataFlavorSupported( aDataFlavor ))
- {
- aVisualRepresentation.Data = xTransferable->getTransferData( aDataFlavor );
- aVisualRepresentation.Flavor = aDataFlavor;
- }
- else
+ if( !xTransferable->isDataFlavorSupported( aDataFlavor ))
throw uno::RuntimeException();
+ aVisualRepresentation.Data = xTransferable->getTransferData( aDataFlavor );
+ aVisualRepresentation.Flavor = aDataFlavor;
}
if ( bBackToLoaded )
diff --git a/embeddedobj/source/commonembedding/xfactory.cxx b/embeddedobj/source/commonembedding/xfactory.cxx
index a361190c580f..caf009f80a27 100644
--- a/embeddedobj/source/commonembedding/xfactory.cxx
+++ b/embeddedobj/source/commonembedding/xfactory.cxx
@@ -78,52 +78,49 @@ uno::Reference< uno::XInterface > SAL_CALL OOoEmbeddedObjectFactory::createInsta
throw container::NoSuchElementException();
uno::Reference< uno::XInterface > xResult;
- if ( xStorage->isStorageElement( sEntName ) )
- {
- // the object must be based on storage
- uno::Reference< embed::XStorage > xSubStorage =
- xStorage->openStorageElement( sEntName, embed::ElementModes::READ );
-
- uno::Reference< beans::XPropertySet > xPropSet( xSubStorage, uno::UNO_QUERY_THROW );
-
- OUString aMediaType;
- try {
- uno::Any aAny = xPropSet->getPropertyValue("MediaType");
- aAny >>= aMediaType;
- }
- catch ( const uno::Exception& )
- {
- }
-
- try {
- uno::Reference< lang::XComponent > xComp( xSubStorage, uno::UNO_QUERY );
- if ( xComp.is() )
- xComp->dispose();
- }
- catch ( const uno::Exception& )
- {
- }
- xSubStorage.clear();
-
- uno::Sequence< beans::NamedValue > aObject = m_aConfigHelper.GetObjectPropsByMediaType( aMediaType );
-
- // If the sequence is empty, fall back to the FileFormatVersion=6200 filter, Base only has that.
- if (!aObject.hasElements() && aMediaType == MIMETYPE_OASIS_OPENDOCUMENT_DATABASE_ASCII)
- aObject = m_aConfigHelper.GetObjectPropsByMediaType(MIMETYPE_VND_SUN_XML_BASE_ASCII);
-
- if ( !aObject.getLength() )
- throw io::IOException(); // unexpected mimetype of the storage
-
- xResult.set(static_cast< ::cppu::OWeakObject* > ( new OCommonEmbeddedObject(
- m_xContext,
- aObject ) ),
- uno::UNO_QUERY );
- }
- else
+ if ( !xStorage->isStorageElement( sEntName ) )
{
// the object must be OOo embedded object, if it is not an exception must be thrown
throw io::IOException(); // TODO:
}
+ // the object must be based on storage
+ uno::Reference< embed::XStorage > xSubStorage =
+ xStorage->openStorageElement( sEntName, embed::ElementModes::READ );
+
+ uno::Reference< beans::XPropertySet > xPropSet( xSubStorage, uno::UNO_QUERY_THROW );
+
+ OUString aMediaType;
+ try {
+ uno::Any aAny = xPropSet->getPropertyValue("MediaType");
+ aAny >>= aMediaType;
+ }
+ catch ( const uno::Exception& )
+ {
+ }
+
+ try {
+ uno::Reference< lang::XComponent > xComp( xSubStorage, uno::UNO_QUERY );
+ if ( xComp.is() )
+ xComp->dispose();
+ }
+ catch ( const uno::Exception& )
+ {
+ }
+ xSubStorage.clear();
+
+ uno::Sequence< beans::NamedValue > aObject = m_aConfigHelper.GetObjectPropsByMediaType( aMediaType );
+
+ // If the sequence is empty, fall back to the FileFormatVersion=6200 filter, Base only has that.
+ if (!aObject.hasElements() && aMediaType == MIMETYPE_OASIS_OPENDOCUMENT_DATABASE_ASCII)
+ aObject = m_aConfigHelper.GetObjectPropsByMediaType(MIMETYPE_VND_SUN_XML_BASE_ASCII);
+
+ if ( !aObject.getLength() )
+ throw io::IOException(); // unexpected mimetype of the storage
+
+ xResult.set(static_cast< ::cppu::OWeakObject* > ( new OCommonEmbeddedObject(
+ m_xContext,
+ aObject ) ),
+ uno::UNO_QUERY );
uno::Reference< embed::XEmbedPersist > xPersist( xResult, uno::UNO_QUERY_THROW );
@@ -160,23 +157,20 @@ uno::Reference< uno::XInterface > SAL_CALL OOoEmbeddedObjectFactory::createInsta
uno::Reference< uno::XInterface > xResult;
// find document service name
- if ( !aFilterName.isEmpty() )
- {
- uno::Sequence< beans::NamedValue > aObject = m_aConfigHelper.GetObjectPropsByFilter( aFilterName );
- if ( !aObject.getLength() )
- throw io::IOException(); // unexpected mimetype of the storage
-
-
- xResult.set(static_cast< ::cppu::OWeakObject* > ( new OCommonEmbeddedObject(
- m_xContext,
- aObject ) ),
- uno::UNO_QUERY );
- }
- else
+ if ( aFilterName.isEmpty() )
{
// the object must be OOo embedded object, if it is not an exception must be thrown
throw io::IOException(); // TODO:
}
+ uno::Sequence< beans::NamedValue > aObject = m_aConfigHelper.GetObjectPropsByFilter( aFilterName );
+ if ( !aObject.getLength() )
+ throw io::IOException(); // unexpected mimetype of the storage
+
+
+ xResult.set(static_cast< ::cppu::OWeakObject* > ( new OCommonEmbeddedObject(
+ m_xContext,
+ aObject ) ),
+ uno::UNO_QUERY );
uno::Reference< embed::XEmbedPersist > xPersist( xResult, uno::UNO_QUERY_THROW );
@@ -301,25 +295,22 @@ uno::Reference< uno::XInterface > SAL_CALL OOoEmbeddedObjectFactory::createInsta
OUString aFilterName = m_aConfigHelper.UpdateMediaDescriptorWithFilterName( aTempMedDescr, false );
- if ( !aFilterName.isEmpty() )
- {
- uno::Sequence< beans::NamedValue > aObject = m_aConfigHelper.GetObjectPropsByFilter( aFilterName );
- if ( !aObject.getLength() )
- throw io::IOException(); // unexpected mimetype of the storage
-
-
- xResult.set(static_cast< ::cppu::OWeakObject* > ( new OCommonEmbeddedObject(
- m_xContext,
- aObject,
- aTempMedDescr,
- lObjArgs ) ),
- uno::UNO_QUERY );
- }
- else
+ if ( aFilterName.isEmpty() )
{
// the object must be OOo embedded object, if it is not an exception must be thrown
throw io::IOException(); // TODO:
}
+ uno::Sequence< beans::NamedValue > aObject = m_aConfigHelper.GetObjectPropsByFilter( aFilterName );
+ if ( !aObject.getLength() )
+ throw io::IOException(); // unexpected mimetype of the storage
+
+
+ xResult.set(static_cast< ::cppu::OWeakObject* > ( new OCommonEmbeddedObject(
+ m_xContext,
+ aObject,
+ aTempMedDescr,
+ lObjArgs ) ),
+ uno::UNO_QUERY );
return xResult;
}
@@ -363,22 +354,19 @@ uno::Reference< uno::XInterface > SAL_CALL OOoEmbeddedObjectFactory::createInsta
OUString aFilterName = m_aConfigHelper.UpdateMediaDescriptorWithFilterName( aTempMedDescr, aObject );
- if ( !aFilterName.isEmpty() )
- {
-
- xResult.set(static_cast< ::cppu::OWeakObject* > ( new OCommonEmbeddedObject(
- m_xContext,
- aObject,
- aTempMedDescr,
- lObjArgs ) ),
- uno::UNO_QUERY );
- }
- else
+ if ( aFilterName.isEmpty() )
{
// the object must be OOo embedded object, if it is not an exception must be thrown
throw io::IOException(); // TODO:
}
+ xResult.set(static_cast< ::cppu::OWeakObject* > ( new OCommonEmbeddedObject(
+ m_xContext,
+ aObject,
+ aTempMedDescr,
+ lObjArgs ) ),
+ uno::UNO_QUERY );
+
return xResult;
}
diff --git a/embeddedobj/source/msole/olevisual.cxx b/embeddedobj/source/msole/olevisual.cxx
index ace3ee94aa0f..49e41275c93b 100644
--- a/embeddedobj/source/msole/olevisual.cxx
+++ b/embeddedobj/source/msole/olevisual.cxx
@@ -296,17 +296,14 @@ awt::Size SAL_CALL OleEmbeddedObject::getVisualAreaSize( sal_Int64 nAspect )
#endif
{
// return cached value
- if ( m_bHasCachedSize )
- {
- SAL_WARN_IF( nAspect != m_nCachedAspect, "embeddedobj.ole", "Unexpected aspect is requested!" );
- aResult = m_aCachedSize;
- }
- else
+ if ( !m_bHasCachedSize )
{
throw embed::NoVisualAreaSizeException(
"No size available!",
static_cast< ::cppu::OWeakObject* >(this) );
}
+ SAL_WARN_IF( nAspect != m_nCachedAspect, "embeddedobj.ole", "Unexpected aspect is requested!" );
+ aResult = m_aCachedSize;
}
return aResult;
diff --git a/eventattacher/source/eventattacher.cxx b/eventattacher/source/eventattacher.cxx
index 654cce006837..4862049ea14b 100644
--- a/eventattacher/source/eventattacher.cxx
+++ b/eventattacher/source/eventattacher.cxx
@@ -482,10 +482,9 @@ void FilterAllListenerImpl::convertToEventReturn( Any & rRet, const Type & rRetT
else if( !rRet.getValueType().equals( rRetType ) )
{
Reference< XTypeConverter > xConverter = m_pEA->getConverter();
- if( xConverter.is() )
- rRet = xConverter->convertTo( rRet, rRetType );
- else
+ if( !xConverter.is() )
throw CannotConvertException(); // TODO TypeConversionException
+ rRet = xConverter->convertTo( rRet, rRetType );
}
}
diff --git a/extensions/source/bibliography/bibload.cxx b/extensions/source/bibliography/bibload.cxx
index eeb13f2fc7b7..22cf6b8275b0 100644
--- a/extensions/source/bibliography/bibload.cxx
+++ b/extensions/source/bibliography/bibload.cxx
@@ -621,20 +621,17 @@ Any BibliographyLoader::getPropertyValue(const OUString& rPropertyName)
CUSTOM5_POS , // BibliographyDataField_CUSTOM5
ISBN_POS //BibliographyDataField_ISBN
};
- if(rPropertyName == "BibliographyDataFieldNames")
+ if(rPropertyName != "BibliographyDataFieldNames")
+ throw UnknownPropertyException();
+ Sequence<PropertyValue> aSeq(COLUMN_COUNT);
+ PropertyValue* pArray = aSeq.getArray();
+ BibConfig* pConfig = BibModul::GetConfig();
+ for(sal_uInt16 i = 0; i <= text::BibliographyDataField::ISBN ; i++)
{
- Sequence<PropertyValue> aSeq(COLUMN_COUNT);
- PropertyValue* pArray = aSeq.getArray();
- BibConfig* pConfig = BibModul::GetConfig();
- for(sal_uInt16 i = 0; i <= text::BibliographyDataField::ISBN ; i++)
- {
- pArray[i].Name = pConfig->GetDefColumnName(aInternalMapping[i]);
- pArray[i].Value <<= (sal_Int16) i;
- }
- aRet <<= aSeq;
+ pArray[i].Name = pConfig->GetDefColumnName(aInternalMapping[i]);
+ pArray[i].Value <<= (sal_Int16) i;
}
- else
- throw UnknownPropertyException();
+ aRet <<= aSeq;
return aRet;
}
diff --git a/extensions/source/update/ui/updatecheckui.cxx b/extensions/source/update/ui/updatecheckui.cxx
index 2e334fc2c361..b7e512dd537c 100644
--- a/extensions/source/update/ui/updatecheckui.cxx
+++ b/extensions/source/update/ui/updatecheckui.cxx
@@ -390,10 +390,9 @@ void UpdateCheckUI::setPropertyValue(const OUString& rPropertyName,
else if( rPropertyName == PROPERTY_CLICK_HDL ) {
uno::Reference< task::XJob > aJob;
rValue >>= aJob;
- if ( aJob.is() )
- mrJob = aJob;
- else
+ if ( !aJob.is() )
throw lang::IllegalArgumentException();
+ mrJob = aJob;
}
else if (rPropertyName == PROPERTY_SHOW_MENUICON ) {
bool bShowMenuIcon = false;
More information about the Libreoffice-commits
mailing list