The pipette mechanism was broken: the created point was not dragged. (no

issue)
This commit is contained in:
Hombre 2016-03-13 18:15:48 +01:00
parent 13b49f8a54
commit af45865a2e
12 changed files with 38 additions and 19 deletions

View File

@ -623,6 +623,8 @@ void CropWindow::buttonRelease (int button, int num, int bstate, int x, int y)
if (state != SEditDrag3 && state != SEditPick3 && button == 3 && !(bstate & (GDK_SHIFT_MASK|GDK_CONTROL_MASK))) {
iarea->pipetteVal[0] = iarea->pipetteVal[1] = iarea->pipetteVal[2] = -1.f;
needRedraw = iarea->object == 1;
if (editSubscriber && editSubscriber->getEditingType() == ET_PIPETTE) {
editSubscriber->mouseOver(0);
}

View File

@ -405,8 +405,11 @@ bool CurveEditor::button1Pressed(const int modifierKey)
EditDataProvider* provider = getEditProvider();
if (provider->object) {
subGroup->pipetteButton1Pressed(provider, modifierKey);
remoteDrag = true;
remoteDrag = subGroup->pipetteButton1Pressed(provider, modifierKey);
}
if (remoteDrag) {
action = ES_ACTION_DRAGGING;
}
subGroup->refresh(this);

View File

@ -141,7 +141,7 @@ public:
virtual void stopNumericalAdjustment() = 0;
virtual void pipetteMouseOver(EditDataProvider *provider, int modifierKey) = 0;
virtual void pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) = 0;
virtual bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) = 0;
virtual void pipetteButton1Released(EditDataProvider *provider) = 0;
virtual void pipetteDrag(EditDataProvider *provider, int modifierKey) = 0;

View File

@ -468,13 +468,15 @@ void DiagonalCurveEditorSubGroup::pipetteMouseOver(EditDataProvider *provider, i
}
}
void DiagonalCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey)
bool DiagonalCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey)
{
CurveEditor *curveEditor = static_cast<DiagonalCurveEditor*>(parent->displayedCurve);
bool isDragging = false;
switch((DiagonalCurveType)(curveEditor->curveType->getSelected())) {
case (DCT_Spline):
customCurve->pipetteButton1Pressed(provider, modifierKey);
isDragging = customCurve->pipetteButton1Pressed(provider, modifierKey);
break;
case (DCT_Parametric):
@ -485,13 +487,15 @@ void DiagonalCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provid
break;
case (DCT_NURBS):
NURBSCurve->pipetteButton1Pressed(provider, modifierKey);
isDragging = NURBSCurve->pipetteButton1Pressed(provider, modifierKey);
break;
default: // (DCT_Linear, DCT_Unchanged)
// ... do nothing
break;
}
return isDragging;
}
void DiagonalCurveEditorSubGroup::pipetteButton1Released(EditDataProvider *provider)

View File

@ -83,7 +83,7 @@ public:
void refresh(CurveEditor *curveToRefresh);
void editModeSwitchedOff ();
void pipetteMouseOver(EditDataProvider *provider, int modifierKey);
void pipetteButton1Pressed(EditDataProvider *provider, int modifierKey);
bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey);
void pipetteButton1Released(EditDataProvider *provider);
void pipetteDrag(EditDataProvider *provider, int modifierKey);
void showCoordinateAdjuster(CoordinateProvider *provider);

View File

@ -216,13 +216,15 @@ void FlatCurveEditorSubGroup::pipetteMouseOver(EditDataProvider *provider, int m
}
}
void FlatCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey)
bool FlatCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey)
{
CurveEditor *curveEditor = static_cast<FlatCurveEditor*>(parent->displayedCurve);
bool isDragging = false;
switch((FlatCurveType)(curveEditor->curveType->getSelected())) {
case (FCT_MinMaxCPoints):
CPointsCurve->pipetteButton1Pressed(provider, modifierKey);
isDragging = CPointsCurve->pipetteButton1Pressed(provider, modifierKey);
CPointsCurve->setDirty(true);
break;
@ -230,6 +232,8 @@ void FlatCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provider,
// ... do nothing
break;
}
return isDragging;
}
void FlatCurveEditorSubGroup::pipetteButton1Released(EditDataProvider *provider)

View File

@ -54,7 +54,7 @@ public:
void refresh(CurveEditor *curveToRefresh);
void editModeSwitchedOff();
void pipetteMouseOver(EditDataProvider *provider, int modifierKey);
void pipetteButton1Pressed(EditDataProvider *provider, int modifierKey);
bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey);
void pipetteButton1Released(EditDataProvider *provider);
void pipetteDrag(EditDataProvider *provider, int modifierKey);
void showCoordinateAdjuster(CoordinateProvider *provider);

View File

@ -146,7 +146,7 @@ public:
virtual void reset (const std::vector<double> &resetCurve, double identityValue = 0.5) = 0;
virtual void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey) = 0;
virtual void pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) = 0;
virtual bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) = 0;
virtual void pipetteButton1Released(EditDataProvider *provider) = 0;
virtual void pipetteDrag(EditDataProvider *provider, int modifierKey) = 0;

View File

@ -1071,11 +1071,11 @@ void MyDiagonalCurve::pipetteMouseOver (CurveEditor *ce, EditDataProvider *provi
}
}
void MyDiagonalCurve::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey)
// returns true if a point is being dragged
bool MyDiagonalCurve::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey)
{
if (edited_point > 1) {
return;
return false;
}
int num = (int)curve.x.size();
@ -1086,7 +1086,7 @@ void MyDiagonalCurve::pipetteButton1Pressed(EditDataProvider *provider, int modi
double minDistanceX = double(MIN_DISTANCE) / double(graphW - 1);
if ((graphW < 0) || (graphH < 0)) {
return;
return false;
}
snapToElmt = -100;
@ -1141,7 +1141,11 @@ void MyDiagonalCurve::pipetteButton1Pressed(EditDataProvider *provider, int modi
lit_point = closest_point;
ugpX = curve.x.at(closest_point);
ugpY = curve.y.at(closest_point);
return true;
}
return false;
}
void MyDiagonalCurve::pipetteButton1Released(EditDataProvider *provider)

View File

@ -90,7 +90,7 @@ public:
void updateBackgroundHistogram (LUTu & hist);
void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey);
void pipetteButton1Pressed(EditDataProvider *provider, int modifierKey);
bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey);
void pipetteButton1Released(EditDataProvider *provider);
void pipetteDrag(EditDataProvider *provider, int modifierKey);

View File

@ -1288,10 +1288,11 @@ void MyFlatCurve::pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider,
}
}
void MyFlatCurve::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey)
// returns true if a point is being dragged
bool MyFlatCurve::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey)
{
if (edited_point > -1) {
return;
return false;
}
buttonPressed = true;
@ -1368,6 +1369,7 @@ void MyFlatCurve::pipetteButton1Pressed(EditDataProvider *provider, int modifier
break;
}
return true;
}
void MyFlatCurve::pipetteButton1Released(EditDataProvider *provider)

View File

@ -130,7 +130,7 @@ public:
//void updateBackgroundHistogram (unsigned int* hist);
void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey);
void pipetteButton1Pressed(EditDataProvider *provider, int modifierKey);
bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey);
void pipetteButton1Released(EditDataProvider *provider);
void pipetteDrag(EditDataProvider *provider, int modifierKey);