Author: steve_y
Date: Mon Jan 6 07:40:48 2014
New Revision: 1555694
URL: http://svn.apache.org/r1555694
Log:
Bug 123629 - [ia2] Calc: Invalid focus event fired after editing cell
Some Coverity issues fixes
Modified:
openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleCell.cxx
openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleDocument.cxx
openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx
openoffice/trunk/main/sc/source/ui/inc/AccessibleCell.hxx
openoffice/trunk/main/sc/source/ui/inc/AccessibleSpreadsheet.hxx
openoffice/trunk/main/sc/source/ui/inc/tabvwsh.hxx
openoffice/trunk/main/sc/source/ui/view/cellsh4.cxx
openoffice/trunk/main/sc/source/ui/view/tabview3.cxx
openoffice/trunk/main/sc/source/ui/view/tabvwsh4.cxx
Modified: openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleCell.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleCell.cxx?rev=1555694&r1=1555693&r2=1555694&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleCell.cxx
(original)
+++ openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleCell.cxx Mon Jan
6 07:40:48 2014
@@ -510,7 +510,7 @@ void ScAccessibleCell::AddRelation(const
}
uno::Any SAL_CALL ScAccessibleCell::getExtendedAttributes()
- throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException,
com::sun::star::ucb::CommandFailedException)
{
uno::Any strRet;
if (mpViewShell)
Modified:
openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleDocument.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleDocument.cxx?rev=1555694&r1=1555693&r2=1555694&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleDocument.cxx
(original)
+++ openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleDocument.cxx Mon
Jan 6 07:40:48 2014
@@ -257,12 +257,12 @@ public:
virtual ::accessibility::AccessibleControlShape*
GetAccControlShapeFromModel
(::com::sun::star::beans::XPropertySet* pSet)
- throw (::com::sun::star::uno::RuntimeException);
+ throw (::com::sun::star::uno::RuntimeException,
com::sun::star::ucb::CommandFailedException);
virtual ::com::sun::star::uno::Reference<
::com::sun::star::accessibility::XAccessible>
GetAccessibleCaption (const ::com::sun::star::uno::Reference<
::com::sun::star::drawing::XShape>& xShape)
- throw (::com::sun::star::uno::RuntimeException);
+ throw (::com::sun::star::uno::RuntimeException,
com::sun::star::ucb::CommandFailedException);
///===== Internal
========================================================
void SetDrawBroadcaster();
@@ -483,7 +483,7 @@ sal_Bool ScChildrenShapes::ReplaceChild
return bResult;
}
-::accessibility::AccessibleControlShape *
ScChildrenShapes::GetAccControlShapeFromModel(::com::sun::star::beans::XPropertySet*
pSet) throw (::com::sun::star::uno::RuntimeException)
+::accessibility::AccessibleControlShape *
ScChildrenShapes::GetAccControlShapeFromModel(::com::sun::star::beans::XPropertySet*
pSet) throw (::com::sun::star::uno::RuntimeException,
com::sun::star::ucb::CommandFailedException)
{
sal_Int32 count = GetCount();
for (sal_Int32 index=0;index<count;index++)
@@ -504,7 +504,7 @@ sal_Bool ScChildrenShapes::ReplaceChild
}
::com::sun::star::uno::Reference <
::com::sun::star::accessibility::XAccessible >
ScChildrenShapes::GetAccessibleCaption (const ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShape>& xShape)
- throw (::com::sun::star::uno::RuntimeException)
+ throw (::com::sun::star::uno::RuntimeException,
com::sun::star::ucb::CommandFailedException)
{
sal_Int32 count = GetCount();
for (sal_Int32 index=0;index<count;index++)
@@ -1014,10 +1014,13 @@ sal_Bool ScChildrenShapes::FindSelectedS
++aDataItr;
}
bool bWinFocus=false;
- ScGridWindow* pWin =
static_cast<ScGridWindow*>(mpViewShell->GetWindowByPos(meSplitPos));
- if (pWin)
+ if (mpViewShell)
{
- bWinFocus = pWin->HasFocus();
+ ScGridWindow* pWin =
static_cast<ScGridWindow*>(mpViewShell->GetWindowByPos(meSplitPos));
+ if (pWin)
+ {
+ bWinFocus = pWin->HasFocus();
+ }
}
const SdrMarkList* pMarkList = NULL;
SdrObject* pMarkedObj = NULL;
Modified:
openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx?rev=1555694&r1=1555693&r2=1555694&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx
(original)
+++ openoffice/trunk/main/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx
Mon Jan 6 07:40:48 2014
@@ -480,7 +480,7 @@ void ScAccessibleSpreadsheet::Notify( Sf
pAccDoc->CommitChange(aEvent);
}
}
- sal_Bool bNewPosCell = (aNewCell !=
maActiveCell);
+ sal_Bool bNewPosCell = (aNewCell !=
maActiveCell) || mpViewShell->GetForceFocusOnCurCell(); // i123629
sal_Bool bNewPosCellFocus=sal_False;
if ( bNewPosCell && IsFocused() &&
aNewCell.Tab() == maActiveCell.Tab() )
{//single Focus
@@ -1490,7 +1490,7 @@ Rectangle ScAccessibleSpreadsheet::GetVi
return Rectangle();
}
sal_Bool SAL_CALL ScAccessibleSpreadsheet::selectRow( sal_Int32 row )
-throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException,
ucb::CommandFailedException, ucb::ContentCreationException)
{
if (IsFormulaMode())
{
@@ -1506,7 +1506,7 @@ throw (lang::IndexOutOfBoundsException,
}
sal_Bool SAL_CALL ScAccessibleSpreadsheet::selectColumn( sal_Int32 column )
- throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException,
ucb::CommandFailedException, ucb::ContentCreationException)
{
if (IsFormulaMode())
{
@@ -1522,7 +1522,7 @@ sal_Bool SAL_CALL ScAccessibleSpreadshee
}
sal_Bool SAL_CALL ScAccessibleSpreadsheet::unselectRow( sal_Int32 row )
- throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException,
ucb::CommandFailedException, ucb::ContentCreationException)
{
if (IsFormulaMode())
{
@@ -1539,7 +1539,7 @@ sal_Bool SAL_CALL ScAccessibleSpreadshee
}
sal_Bool SAL_CALL ScAccessibleSpreadsheet::unselectColumn( sal_Int32 column )
- throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException,
ucb::CommandFailedException, ucb::ContentCreationException)
{
if (IsFormulaMode())
{
Modified: openoffice/trunk/main/sc/source/ui/inc/AccessibleCell.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/ui/inc/AccessibleCell.hxx?rev=1555694&r1=1555693&r2=1555694&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/ui/inc/AccessibleCell.hxx (original)
+++ openoffice/trunk/main/sc/source/ui/inc/AccessibleCell.hxx Mon Jan 6
07:40:48 2014
@@ -35,6 +35,7 @@
#ifndef _COM_SUN_STAR_ACCESSIBILITY_XAccessibleExtendedAttributes_HPP_
#include <com/sun/star/accessibility/XAccessibleExtendedAttributes.hpp>
#endif
+#include <com/sun/star/ucb/CommandFailedException.hpp>
class ScTabViewShell;
class ScAccessibleDocument;
@@ -142,7 +143,7 @@ public:
throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getExtendedAttributes()
- throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException) ;
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException,
com::sun::star::ucb::CommandFailedException) ;
// Override this method to handle cell's ParaIndent attribute specially.
virtual ::com::sun::star::uno::Sequence<
::com::sun::star::beans::PropertyValue > SAL_CALL getCharacterAttributes(
sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::rtl::OUString >&
aRequestedAttributes )
Modified: openoffice/trunk/main/sc/source/ui/inc/AccessibleSpreadsheet.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/ui/inc/AccessibleSpreadsheet.hxx?rev=1555694&r1=1555693&r2=1555694&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/ui/inc/AccessibleSpreadsheet.hxx (original)
+++ openoffice/trunk/main/sc/source/ui/inc/AccessibleSpreadsheet.hxx Mon Jan 6
07:40:48 2014
@@ -28,6 +28,9 @@
#include "AccessibleTableBase.hxx"
#include "viewdata.hxx"
+#include <com/sun/star/ucb/CommandFailedException.hpp>
+#include <com/sun/star/ucb/ContentCreationException.hpp>
+
#include <vector>
#include "rangelst.hxx"
@@ -243,13 +246,13 @@ public:
throw (com::sun::star::uno::RuntimeException);
//===== XAccessibleTableSelection
============================================
virtual sal_Bool SAL_CALL selectRow( sal_Int32 row )
- throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException) ;
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException,
::com::sun::star::ucb::CommandFailedException,
com::sun::star::ucb::ContentCreationException) ;
virtual sal_Bool SAL_CALL selectColumn( sal_Int32 column )
- throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException) ;
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException,
::com::sun::star::ucb::CommandFailedException,
com::sun::star::ucb::ContentCreationException) ;
virtual sal_Bool SAL_CALL unselectRow( sal_Int32 row )
- throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException) ;
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException,
::com::sun::star::ucb::CommandFailedException,
com::sun::star::ucb::ContentCreationException) ;
virtual sal_Bool SAL_CALL unselectColumn( sal_Int32 column )
- throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException) ;
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException,
::com::sun::star::ucb::CommandFailedException,
com::sun::star::ucb::ContentCreationException) ;
protected:
/// Return the object's current bounding box relative to the
desktop.
Modified: openoffice/trunk/main/sc/source/ui/inc/tabvwsh.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/ui/inc/tabvwsh.hxx?rev=1555694&r1=1555693&r2=1555694&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/ui/inc/tabvwsh.hxx (original)
+++ openoffice/trunk/main/sc/source/ui/inc/tabvwsh.hxx Mon Jan 6 07:40:48 2014
@@ -177,6 +177,8 @@ private:
static const int MASTERENUMCOMMANDS = 6;
String aCurrShapeEnumCommand[
MASTERENUMCOMMANDS ];
+ sal_Bool bForceFocusOnCurCell; // i123629
+
private:
void Construct( sal_uInt8 nForceDesignMode = SC_FORCEMODE_NONE );
@@ -426,6 +428,10 @@ public:
sal_Bool IsActive(){ return bIsActive; }
rtl::OUString GetFormula(ScAddress& rAddress);
const ::com::sun::star::uno::Reference<
::com::sun::star::uno::XInterface > & GetForms() const;
+
+ // i123629
+ sal_Bool GetForceFocusOnCurCell(){return bForceFocusOnCurCell;}
+ void SetForceFocusOnCurCell(sal_Bool
bFlag){bForceFocusOnCurCell=bFlag;}
};
//==================================================================
Modified: openoffice/trunk/main/sc/source/ui/view/cellsh4.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/ui/view/cellsh4.cxx?rev=1555694&r1=1555693&r2=1555694&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/ui/view/cellsh4.cxx (original)
+++ openoffice/trunk/main/sc/source/ui/view/cellsh4.cxx Mon Jan 6 07:40:48 2014
@@ -95,6 +95,12 @@ void ScCellShell::ExecuteCursor( SfxRequ
// einmal extra, damit der Cursor bei ExecuteInputDirect nicht zuoft
gemalt wird:
pTabViewShell->HideAllCursors();
+ // i123629
+ if( pTabViewShell->GetCurObjectSelectionType() == OST_Editing )
+ pTabViewShell->SetForceFocusOnCurCell(sal_True);
+ else
+ pTabViewShell->SetForceFocusOnCurCell(sal_False);
+
//OS: einmal fuer alle wird doch reichen!
pTabViewShell->ExecuteInputDirect();
switch ( nSlotId )
Modified: openoffice/trunk/main/sc/source/ui/view/tabview3.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/ui/view/tabview3.cxx?rev=1555694&r1=1555693&r2=1555694&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/ui/view/tabview3.cxx (original)
+++ openoffice/trunk/main/sc/source/ui/view/tabview3.cxx Mon Jan 6 07:40:48
2014
@@ -911,6 +911,10 @@ void ScTabView::MoveCursorAbs( SCsCOL nC
if (!bKeepOld)
aViewData.ResetOldCursor();
+ // i123629
+ if( aViewData.GetViewShell()->GetForceFocusOnCurCell() )
+ aViewData.GetViewShell()->SetForceFocusOnCurCell(
!ValidColRow(nCurX, nCurY) );
+
if (nCurX < 0) nCurX = 0;
if (nCurY < 0) nCurY = 0;
if (nCurX > MAXCOL) nCurX = MAXCOL;
Modified: openoffice/trunk/main/sc/source/ui/view/tabvwsh4.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/ui/view/tabvwsh4.cxx?rev=1555694&r1=1555693&r2=1555694&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/ui/view/tabvwsh4.cxx (original)
+++ openoffice/trunk/main/sc/source/ui/view/tabvwsh4.cxx Mon Jan 6 07:40:48
2014
@@ -1588,6 +1588,7 @@ FASTBOOL __EXPORT ScTabViewShell::KeyInp
pScSbxObject(NULL), \
/*bChartDlgIsEdit(sal_False),*/ \
bChartAreaValid(sal_False), \
+ bForceFocusOnCurCell(sal_False), \
nCurRefDlgId(0), \
pAccessibilityBroadcaster(NULL)