diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index dd7dac228..b43e9177e 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -51,11 +51,11 @@ bool LinEqSolve(int nDim, double* pfMatr, double* pfVect, double* pfSolution) for(k = 0; k < (nDim - 1); k++) { // base row of matrix // search of line with max element - fMaxElem = fabsf( pfMatr[k * nDim + k] ); + fMaxElem = fabs( pfMatr[k * nDim + k] ); m = k; for (i = k + 1; i < nDim; i++) { - if(fMaxElem < fabsf(pfMatr[i * nDim + k]) ) { + if(fMaxElem < fabs(pfMatr[i * nDim + k]) ) { fMaxElem = pfMatr[i * nDim + k]; m = i; } diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index a1e2c7c40..7a7ec2a9e 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -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); } diff --git a/rtgui/curveeditor.cc b/rtgui/curveeditor.cc index 8ad521d06..c9d02d9a3 100644 --- a/rtgui/curveeditor.cc +++ b/rtgui/curveeditor.cc @@ -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); diff --git a/rtgui/curveeditorgroup.h b/rtgui/curveeditorgroup.h index d659dcf2e..cc989468d 100644 --- a/rtgui/curveeditorgroup.h +++ b/rtgui/curveeditorgroup.h @@ -142,7 +142,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; diff --git a/rtgui/diagonalcurveeditorsubgroup.cc b/rtgui/diagonalcurveeditorsubgroup.cc index ff4e2e5ab..2917fd030 100644 --- a/rtgui/diagonalcurveeditorsubgroup.cc +++ b/rtgui/diagonalcurveeditorsubgroup.cc @@ -463,13 +463,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(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): @@ -480,13 +482,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) diff --git a/rtgui/diagonalcurveeditorsubgroup.h b/rtgui/diagonalcurveeditorsubgroup.h index e33edfeaf..1e3c3bf13 100644 --- a/rtgui/diagonalcurveeditorsubgroup.h +++ b/rtgui/diagonalcurveeditorsubgroup.h @@ -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); diff --git a/rtgui/exportpanel.cc b/rtgui/exportpanel.cc index 02265b260..e466c7b07 100644 --- a/rtgui/exportpanel.cc +++ b/rtgui/exportpanel.cc @@ -151,14 +151,14 @@ ExportPanel::ExportPanel () : listener (NULL) MaxWidth->set_max_width_chars(5); MaxWidth->set_increments (1, 100); MaxWidth->set_value (options.fastexport_resize_width); - MaxWidth->set_range (32, 3000); + MaxWidth->set_range (32, 10000); MaxHeight->set_digits (0); MaxHeight->set_width_chars(5); MaxHeight->set_max_width_chars(5); MaxHeight->set_increments (1, 100); MaxHeight->set_value (options.fastexport_resize_height); - MaxHeight->set_range (32, 3000); + MaxHeight->set_range (32, 10000); // Buttons btnFastExport = Gtk::manage ( new Gtk::Button () ); diff --git a/rtgui/flatcurveeditorsubgroup.cc b/rtgui/flatcurveeditorsubgroup.cc index 4c8388d36..81c5773a4 100644 --- a/rtgui/flatcurveeditorsubgroup.cc +++ b/rtgui/flatcurveeditorsubgroup.cc @@ -210,13 +210,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(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; @@ -224,6 +226,8 @@ void FlatCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provider, // ... do nothing break; } + + return isDragging; } void FlatCurveEditorSubGroup::pipetteButton1Released(EditDataProvider *provider) diff --git a/rtgui/flatcurveeditorsubgroup.h b/rtgui/flatcurveeditorsubgroup.h index 5ec3846d9..0dc040cfe 100644 --- a/rtgui/flatcurveeditorsubgroup.h +++ b/rtgui/flatcurveeditorsubgroup.h @@ -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); diff --git a/rtgui/mycurve.h b/rtgui/mycurve.h index 02a5a253c..40f9d545a 100644 --- a/rtgui/mycurve.h +++ b/rtgui/mycurve.h @@ -135,7 +135,7 @@ public: virtual void reset (const std::vector &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; diff --git a/rtgui/mydiagonalcurve.cc b/rtgui/mydiagonalcurve.cc index 67a2a27ac..845fc97dd 100644 --- a/rtgui/mydiagonalcurve.cc +++ b/rtgui/mydiagonalcurve.cc @@ -1059,11 +1059,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(); @@ -1074,7 +1074,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; @@ -1129,7 +1129,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) diff --git a/rtgui/mydiagonalcurve.h b/rtgui/mydiagonalcurve.h index 51c4358f7..cf8a1efee 100644 --- a/rtgui/mydiagonalcurve.h +++ b/rtgui/mydiagonalcurve.h @@ -91,7 +91,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); diff --git a/rtgui/myflatcurve.cc b/rtgui/myflatcurve.cc index f96081377..7911ac279 100644 --- a/rtgui/myflatcurve.cc +++ b/rtgui/myflatcurve.cc @@ -1273,10 +1273,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; @@ -1353,6 +1354,7 @@ void MyFlatCurve::pipetteButton1Pressed(EditDataProvider *provider, int modifier break; } + return true; } void MyFlatCurve::pipetteButton1Released(EditDataProvider *provider) diff --git a/rtgui/myflatcurve.h b/rtgui/myflatcurve.h index 587e700de..65a1e2230 100644 --- a/rtgui/myflatcurve.h +++ b/rtgui/myflatcurve.h @@ -131,7 +131,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);