37#include <boost/operators.hpp>
58 , m_moveShortcutsHelper(this)
60 setObjectName(
"tool_move");
70 specialSpacer->setObjectName(
"SpecialSpacer");
71 specialSpacer->setFixedSize(0, 0);
118 const bool canUseSelectionMode =
121 !
selection->selectedExactRect().isEmpty();
123 if (canUseSelectionMode) {
159 const bool canUseSelectionMode =
162 !
selection->selectedExactRect().isEmpty();
197 bool isMoveSelection =
false;
198 if (canUseSelectionMode) {
207 connect(moveStrategy,
208 SIGNAL(sigHandlesRectCalculated(
const QRect&)),
210 connect(moveStrategy,
211 SIGNAL(sigStrokeStartedEmpty()),
214 strategy = moveStrategy;
215 isMoveSelection =
true;
216 nodes = {paintLayer};
230 connect(moveStrategy,
231 SIGNAL(sigHandlesRectCalculated(
const QRect&)),
233 connect(moveStrategy,
234 SIGNAL(sigStrokeStartedEmpty()),
236 connect(moveStrategy,
240 strategy = moveStrategy;
245 KConfigGroup group = KSharedConfig::openConfig()->group(
toolId());
246 const bool forceLodMode = group.readEntry(
"forceLodMode",
false);
260 if (!isMoveSelection) {
289 if (showCoordinates && showFloatingMessage) {
293 i18nc(
"floating message in move tool",
294 "X: %1 px, Y: %2 px",
295 QLocale().toString(currentTopLeft.x()),
296 QLocale().toString(currentTopLeft.y())),
305 bool strokeEnded =
false;
321 if (lastState && *lastState == *newState)
return;
341 i18nc(
"floating message in move tool",
342 "Selected area has no pixels"),
356 if (nodes.isEmpty()) {
367 if (!
image())
return;
378 const QPoint offset =
379 direction ==
Up ? QPoint( 0, -moveStep) :
380 direction ==
Down ? QPoint( 0, moveStep) :
381 direction ==
Left ? QPoint(-moveStep, 0) :
382 QPoint( moveStep, 0) ;
438 QPainterPath handles;
566 qobject_cast<KisCanvas2*>(
canvas())->updateCanvas();
582 qobject_cast<KisCanvas2*>(
canvas())->updateCanvas();
608 qobject_cast<KisCanvas2*>(
canvas())->updateCanvas();
639 qobject_cast<KisCanvas2*>(
canvas())->updateCanvas();
713 qobject_cast<KisCanvas2*>(
canvas())->updateCanvas();
733 if (modifiers & Qt::ShiftModifier) {
738 if (modifiers & Qt::AltModifier) {
739 const qreal SCALE_FACTOR = .2;
740 move = SCALE_FACTOR * move;
803 SIGNAL(sigCalculationFinished(
const QRect&)),
832 actions << actionRegistry->
makeQAction(
"movetool-show-coordinates",
this);
QAction * makeQAction(const QString &name, QObject *parent=0)
static KisActionRegistry * instance()
void cancelUpdateStream()
void startUpdateStream(KisStrokesFacade *strokesFacade, KisStrokeId strokeId)
KisViewManager * viewManager() const
bool cancelStroke(KisStrokeId id) override
void addJob(KisStrokeId id, KisStrokeJobData *data) override
KisStrokeId startStroke(KisStrokeStrategy *strokeStrategy) override
QRect bounds() const override
void addSpontaneousJob(KisSpontaneousJob *spontaneousJob)
void endStroke(KisStrokeId id) override
KisNodeList selectedNodes
KisNodeList selectNodesToProcess() const
The KisResourcesSnapshot class takes a snapshot of the various resources like colors and settings use...
KisSelectionSP activeSelection() const
void addUniqueConnection(Sender sender, Signal signal, Receiver receiver, Method method)
void addConnection(Sender sender, Signal signal, Receiver receiver, Method method, Qt::ConnectionType type=Qt::AutoConnection)
void setForceLodModeIfPossible(bool forceLodModeIfPossible)
Qt::KeyboardModifiers modifiers() const
#define KIS_SAFE_ASSERT_RECOVER(cond)
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
PointType snapToClosestAxis(PointType P)
bool compareListsUnordered(const QList< T > &a, const QList< T > &b)
bool isEditable(bool checkVisibility=true) const