/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
FuEditGluePoints::FuEditGluePoints (
ViewShell& rViewSh,
::sd::Window* pWin,
::sd::View* pView,
SdDrawDocument& rDoc,
SfxRequest& rReq)
: FuDraw(rViewSh, pWin, pView, rDoc, rReq) //Add Shift+UP/DOWN/LEFT/RIGHT key to move the position of insert point, //and SHIFT+ENTER key to decide the position and draw the new insert point
,bBeginInsertPoint(false),
oldPoint(0,0)
{
}
if (eHit == SdrHitKind::NONE)
{ // click on position: deselect
mpView->UnmarkAllObj();
}
}
mpWindow->ReleaseMouse();
return bReturn;
}
/** * Process keyboard input * @returns sal_True if a KeyEvent is being processed, sal_False otherwise
*/ bool FuEditGluePoints::KeyInput(const KeyEvent& rKEvt)
{
mpView->SetActualWin( mpWindow->GetOutDev() );
//Add Shift+UP/DOWN/LEFT/RIGHT key to move the position of insert point, //and SHIFT+ENTER key to decide the position and draw the new insert point
bool bReturn = false;
switch (rKEvt.GetKeyCode().GetCode())
{ case KEY_UP: case KEY_DOWN: case KEY_LEFT: case KEY_RIGHT:
{ if(rKEvt.GetKeyCode().IsShift()&& mpView->IsInsGluePointMode() ){
::tools::Long nX = 0;
::tools::Long nY = 0;
sal_uInt16 nCode = rKEvt.GetKeyCode().GetCode(); if (nCode == KEY_UP)
{ // scroll up
nX = 0;
nY =-1;
} elseif (nCode == KEY_DOWN)
{ // scroll down
nX = 0;
nY = 1;
} elseif (nCode == KEY_LEFT)
{ // scroll left
nX =-1;
nY = 0;
} elseif (nCode == KEY_RIGHT)
{ // scroll right
nX = 1;
nY = 0;
}
Point centerPoint;
::tools::Rectangle rect = mpView->GetMarkedObjRect();
centerPoint = mpWindow->LogicToPixel(rect.Center());
Point aPoint = bBeginInsertPoint? oldPoint:centerPoint;
Point ePoint = aPoint + Point(nX,nY);
mpWindow->SetPointerPosPixel(ePoint); //simulate mouse move action
MouseEvent eMevt(ePoint, 1, MouseEventModifiers::DRAGMOVE, MOUSE_LEFT, 0);
MouseMove(eMevt);
oldPoint = ePoint;
bBeginInsertPoint = true;
bReturn = true;
}
} break; case KEY_RETURN: if(rKEvt.GetKeyCode().IsShift() && mpView->IsInsGluePointMode() )
{ if(bBeginInsertPoint)
{
mpWindow->SetPointerPosPixel(oldPoint); //simulate mouse button down action
MouseEvent aMevt(oldPoint, 1,
MouseEventModifiers::SIMPLEMOVE | MouseEventModifiers::DRAGMOVE,
MOUSE_LEFT, KEY_SHIFT); // MT IA2: Not used? // sal_uInt16 ubuttons = aMevt.GetButtons(); // sal_uInt16 uMod = aMevt.GetModifier();
MouseButtonDown(aMevt);
mpWindow->CaptureMouse(); //simulate mouse button up action
MouseEvent rMEvt(oldPoint+Point(0,0), 1,
MouseEventModifiers::SIMPLEMOVE | MouseEventModifiers::ENTERWINDOW,
MOUSE_LEFT, KEY_SHIFT);
MouseButtonUp(rMEvt);
bReturn= true;
}
} break;
}
if(!bReturn)
bReturn = FuDraw::KeyInput(rKEvt);
return bReturn;
}
//Add Shift+UP/DOWN/LEFT/RIGHT key to move the position of insert point, and //SHIFT+ENTER key to decide the position and draw the new insert point void FuEditGluePoints::ForcePointer(const MouseEvent* pMEvt)
{ if(bBeginInsertPoint && pMEvt)
{
MouseEvent aMEvt(pMEvt->GetPosPixel(), pMEvt->GetClicks(),
pMEvt->GetMode(), pMEvt->GetButtons(), pMEvt->GetModifier() & ~KEY_SHIFT);
FuDraw::ForcePointer(&aMEvt);
} else
{
FuDraw::ForcePointer(pMEvt);
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.