summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2013-10-09 18:55:30 -0400
committerKohei Yoshida <kohei.yoshida@collabora.com>2013-10-11 12:14:25 -0400
commit91923443e0d04218ae7124f439fc06a76f904462 (patch)
tree89b766be488eeca04308f93e8710b9b679754739 /sc
parent29958cb6d8adff86ba9a68f683cd28e3baef4289 (diff)
Fix context menu launch on mis-spelled word in a cell.
This was broken when the spell check handler was re-implemented after the cell storage rework. Change-Id: I4e7e718ffba45b2163bea4dd382f2a49f75fd5f9
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/inc/gridwin.hxx4
-rw-r--r--sc/source/ui/view/gridwin.cxx57
2 files changed, 26 insertions, 35 deletions
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index 1fb0fc8e8f3c..4cc224292542 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -274,8 +274,8 @@ class ScGridWindow : public Window, public DropTargetHelper, public DragSourceHe
bool GetEditUrl( const Point& rPos,
OUString* pName=0, OUString* pUrl=0, OUString* pTarget=0 );
- bool GetEditUrlOrError( bool bSpellErr, const Point& rPos,
- OUString* pName=0, OUString* pUrl=0, OUString* pTarget=0 );
+ bool GetEditUrlOrError(
+ const Point& rPos, OUString* pName = NULL, OUString* pUrl = NULL, OUString* pTarget = NULL );
bool HitRangeFinder( const Point& rMouse, RfCorner& rCorner, sal_uInt16* pIndex = NULL,
SCsCOL* pAddX = NULL, SCsROW* pAddY = NULL );
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 62b1651ebde8..7a6a7532370c 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -2946,11 +2946,12 @@ void ScGridWindow::Command( const CommandEvent& rCEvt )
Point aPosPixel = rCEvt.GetMousePosPixel();
Point aMenuPos = aPosPixel;
+ SCsCOL nCellX = -1;
+ SCsROW nCellY = -1;
+ pViewData->GetPosFromPixel(aPosPixel.X(), aPosPixel.Y(), eWhich, nCellX, nCellY);
+
if ( bMouse )
{
- SCsCOL nCellX = -1;
- SCsROW nCellY = -1;
- pViewData->GetPosFromPixel(aPosPixel.X(), aPosPixel.Y(), eWhich, nCellX, nCellY);
ScDocument* pDoc = pViewData->GetDocument();
SCTAB nTab = pViewData->GetTabNo();
const ScTableProtection* pProtect = pDoc->GetTabProtection(nTab);
@@ -2978,10 +2979,12 @@ void ScGridWindow::Command( const CommandEvent& rCEvt )
sal_Bool bDone = false;
sal_Bool bEdit = pViewData->HasEditView(eWhich);
+ bool bSpellError = mpSpellCheckCxt->isMisspelled(nCellX, nCellY);
+
if ( !bEdit )
{
// Edit-Zelle mit Spelling-Errors ?
- if ( bMouse && GetEditUrlOrError( sal_True, aPosPixel ) )
+ if (bMouse && (GetEditUrlOrError(aPosPixel) || bSpellError))
{
// GetEditUrlOrError hat den Cursor schon bewegt
@@ -3015,7 +3018,7 @@ void ScGridWindow::Command( const CommandEvent& rCEvt )
// IsCursorAtWrongSpelledWord could be used for !bMouse
// if there was a corresponding ExecuteSpellPopup call
- if( pEditView->IsWrongSpelledWordAtPos( aMenuPos ) )
+ if (bSpellError)
{
// Wenn man unter OS/2 neben das Popupmenue klickt, kommt MouseButtonDown
// vor dem Ende des Menue-Execute, darum muss SetModified vorher kommen
@@ -5112,11 +5115,11 @@ void ScGridWindow::RFMouseMove( const MouseEvent& rMEvt, sal_Bool bUp )
bool ScGridWindow::GetEditUrl( const Point& rPos,
OUString* pName, OUString* pUrl, OUString* pTarget )
{
- return GetEditUrlOrError( false, rPos, pName, pUrl, pTarget );
+ return GetEditUrlOrError(rPos, pName, pUrl, pTarget);
}
-bool ScGridWindow::GetEditUrlOrError( bool bSpellErr, const Point& rPos,
- OUString* pName, OUString* pUrl, OUString* pTarget )
+bool ScGridWindow::GetEditUrlOrError(
+ const Point& rPos, OUString* pName, OUString* pUrl, OUString* pTarget )
{
//! nPosX/Y mit uebergeben?
SCsCOL nPosX;
@@ -5177,8 +5180,6 @@ bool ScGridWindow::GetEditUrlOrError( bool bSpellErr, const Point& rPos,
}
aDefault.Put( SvxAdjustItem( eSvxAdjust, EE_PARA_JUST ) );
aEngine.SetDefaults( aDefault );
- if (bSpellErr)
- aEngine.SetControlWord( aEngine.GetControlWord() | EE_CNTRL_ONLINESPELLING );
MapMode aEditMode = pViewData->GetLogicMode(eWhich); // ohne Drawing-Skalierung
Rectangle aLogicEdit = PixelToLogic( aEditRect, aEditMode );
@@ -5254,33 +5255,23 @@ bool ScGridWindow::GetEditUrlOrError( bool bSpellErr, const Point& rPos,
MapMode aOld = GetMapMode();
SetMapMode(aEditMode); // kein return mehr
- if (bSpellErr) // Spelling-Fehler suchen
- {
- bRet = aTempView.IsWrongSpelledWordAtPos( rPos );
- if ( bRet )
- pViewData->GetView()->SetCursor( nPosX, nPosY ); // Cursor setzen
- }
- else // URL suchen
+ const SvxFieldItem* pFieldItem = aTempView.GetFieldUnderMousePointer();
+ if (pFieldItem)
{
- const SvxFieldItem* pFieldItem = aTempView.GetFieldUnderMousePointer();
-
- if (pFieldItem)
+ const SvxFieldData* pField = pFieldItem->GetField();
+ if ( pField && pField->ISA(SvxURLField) )
{
- const SvxFieldData* pField = pFieldItem->GetField();
- if ( pField && pField->ISA(SvxURLField) )
+ if ( pName || pUrl || pTarget )
{
- if ( pName || pUrl || pTarget )
- {
- const SvxURLField* pURLField = (const SvxURLField*)pField;
- if (pName)
- *pName = pURLField->GetRepresentation();
- if (pUrl)
- *pUrl = pURLField->GetURL();
- if (pTarget)
- *pTarget = pURLField->GetTargetFrame();
- }
- bRet = sal_True;
+ const SvxURLField* pURLField = (const SvxURLField*)pField;
+ if (pName)
+ *pName = pURLField->GetRepresentation();
+ if (pUrl)
+ *pUrl = pURLField->GetURL();
+ if (pTarget)
+ *pTarget = pURLField->GetTargetFrame();
}
+ bRet = sal_True;
}
}