[TechDraw] Multiselection mode implementation
This commit is contained in:
@@ -32,6 +32,10 @@
|
||||
|
||||
#include <App/Application.h>
|
||||
|
||||
#include <Gui/Selection.h>
|
||||
|
||||
#include <Mod/TechDraw/App/DrawView.h>
|
||||
|
||||
#include "QGIPrimPath.h"
|
||||
#include "PreferencesGui.h"
|
||||
#include "QGIView.h"
|
||||
@@ -55,6 +59,7 @@ QGIPrimPath::QGIPrimPath():
|
||||
setAcceptHoverEvents(true);
|
||||
|
||||
isHighlighted = false;
|
||||
multiselectActivated = false;
|
||||
|
||||
m_colOverride = false;
|
||||
m_colNormal = getNormalColor();
|
||||
@@ -259,6 +264,50 @@ Qt::PenCapStyle QGIPrimPath::prefCapStyle()
|
||||
return result;
|
||||
}
|
||||
|
||||
void QGIPrimPath::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
Qt::KeyboardModifiers originalModifiers = event->modifiers();
|
||||
if (event->button()&Qt::LeftButton) {
|
||||
multiselectActivated = false;
|
||||
}
|
||||
|
||||
if (event->button() == Qt::LeftButton
|
||||
&& multiselectEligible()
|
||||
&& PreferencesGui::multiSelection()) {
|
||||
|
||||
auto parent = dynamic_cast<QGIView *>(parentItem());
|
||||
if (parent) {
|
||||
std::vector<Gui::SelectionObject> selection = Gui::Selection().getSelectionEx();
|
||||
if (selection.size() == 1
|
||||
&& selection.front().getObject() == parent->getViewObject()) {
|
||||
|
||||
multiselectActivated = true;
|
||||
event->setModifiers(originalModifiers | Qt::ControlModifier);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QGraphicsPathItem::mousePressEvent(event);
|
||||
|
||||
event->setModifiers(originalModifiers);
|
||||
}
|
||||
|
||||
void QGIPrimPath::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
Qt::KeyboardModifiers originalModifiers = event->modifiers();
|
||||
if ((event->button()&Qt::LeftButton) && multiselectActivated) {
|
||||
if (PreferencesGui::multiSelection()) {
|
||||
event->setModifiers(originalModifiers | Qt::ControlModifier);
|
||||
}
|
||||
|
||||
multiselectActivated = false;
|
||||
}
|
||||
|
||||
QGraphicsPathItem::mouseReleaseEvent(event);
|
||||
|
||||
event->setModifiers(originalModifiers);
|
||||
}
|
||||
|
||||
void QGIPrimPath::setFill(QColor c, Qt::BrushStyle s) {
|
||||
setFillColor(c);
|
||||
m_fillNormal = s;
|
||||
|
||||
Reference in New Issue
Block a user