[gimp] Bug 776503 - brightness-contrast in split preview mode changes...
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] Bug 776503 - brightness-contrast in split preview mode changes...
- Date: Mon, 26 Dec 2016 16:51:36 +0000 (UTC)
commit 9d4fad1f18968b67a0c78886aa4d4c2366a5ddbf
Author: Michael Natterer <mitch gimp org>
Date: Mon Dec 26 17:50:11 2016 +0100
Bug 776503 - brightness-contrast in split preview mode changes...
...parameters of the tool
Take GimpFilterTool's split preview guide into account when starting a
drag to change the tool's parameters.
app/tools/gimpbrightnesscontrasttool.c | 76 ++++++++++++++++++++++----------
app/tools/gimpbrightnesscontrasttool.h | 1 +
2 files changed, 54 insertions(+), 23 deletions(-)
---
diff --git a/app/tools/gimpbrightnesscontrasttool.c b/app/tools/gimpbrightnesscontrasttool.c
index 8c50854..3b39a55 100644
--- a/app/tools/gimpbrightnesscontrasttool.c
+++ b/app/tools/gimpbrightnesscontrasttool.c
@@ -184,21 +184,33 @@ gimp_brightness_contrast_tool_button_press (GimpTool *tool,
GimpDisplay *display)
{
GimpBrightnessContrastTool *bc_tool = GIMP_BRIGHTNESS_CONTRAST_TOOL (tool);
- gdouble brightness;
- gdouble contrast;
- g_object_get (GIMP_FILTER_TOOL (tool)->config,
- "brightness", &brightness,
- "contrast", &contrast,
- NULL);
+ bc_tool->dragging = ! gimp_filter_tool_on_guide (GIMP_FILTER_TOOL (tool),
+ coords, display);
- bc_tool->x = coords->x - contrast * 127.0;
- bc_tool->y = coords->y + brightness * 127.0;
- bc_tool->dx = contrast * 127.0;
- bc_tool->dy = - brightness * 127.0;
+ if (! bc_tool->dragging)
+ {
+ GIMP_TOOL_CLASS (parent_class)->button_press (tool, coords, time, state,
+ press_type, display);
+ }
+ else
+ {
+ gdouble brightness;
+ gdouble contrast;
+
+ g_object_get (GIMP_FILTER_TOOL (tool)->config,
+ "brightness", &brightness,
+ "contrast", &contrast,
+ NULL);
- gimp_tool_control_activate (tool->control);
- tool->display = display;
+ bc_tool->x = coords->x - contrast * 127.0;
+ bc_tool->y = coords->y + brightness * 127.0;
+ bc_tool->dx = contrast * 127.0;
+ bc_tool->dy = - brightness * 127.0;
+
+ gimp_tool_control_activate (tool->control);
+ tool->display = display;
+ }
}
static void
@@ -211,13 +223,23 @@ gimp_brightness_contrast_tool_button_release (GimpTool *tool,
{
GimpBrightnessContrastTool *bc_tool = GIMP_BRIGHTNESS_CONTRAST_TOOL (tool);
- gimp_tool_control_halt (tool->control);
+ if (! bc_tool->dragging)
+ {
+ GIMP_TOOL_CLASS (parent_class)->button_release (tool, coords, time, state,
+ release_type, display);
+ }
+ else
+ {
+ bc_tool->dragging = FALSE;
+
+ gimp_tool_control_halt (tool->control);
- if (bc_tool->dx == 0 && bc_tool->dy == 0)
- return;
+ if (bc_tool->dx == 0 && bc_tool->dy == 0)
+ return;
- if (release_type == GIMP_BUTTON_RELEASE_CANCEL)
- gimp_config_reset (GIMP_CONFIG (GIMP_FILTER_TOOL (tool)->config));
+ if (release_type == GIMP_BUTTON_RELEASE_CANCEL)
+ gimp_config_reset (GIMP_CONFIG (GIMP_FILTER_TOOL (tool)->config));
+ }
}
static void
@@ -229,13 +251,21 @@ gimp_brightness_contrast_tool_motion (GimpTool *tool,
{
GimpBrightnessContrastTool *bc_tool = GIMP_BRIGHTNESS_CONTRAST_TOOL (tool);
- bc_tool->dx = (coords->x - bc_tool->x);
- bc_tool->dy = - (coords->y - bc_tool->y);
+ if (! bc_tool->dragging)
+ {
+ GIMP_TOOL_CLASS (parent_class)->motion (tool, coords, time, state,
+ display);
+ }
+ else
+ {
+ bc_tool->dx = (coords->x - bc_tool->x);
+ bc_tool->dy = - (coords->y - bc_tool->y);
- g_object_set (GIMP_FILTER_TOOL (tool)->config,
- "brightness", CLAMP (bc_tool->dy, -127.0, 127.0) / 127.0,
- "contrast", CLAMP (bc_tool->dx, -127.0, 127.0) / 127.0,
- NULL);
+ g_object_set (GIMP_FILTER_TOOL (tool)->config,
+ "brightness", CLAMP (bc_tool->dy, -127.0, 127.0) / 127.0,
+ "contrast", CLAMP (bc_tool->dx, -127.0, 127.0) / 127.0,
+ NULL);
+ }
}
diff --git a/app/tools/gimpbrightnesscontrasttool.h b/app/tools/gimpbrightnesscontrasttool.h
index acabd6b..b97bf3b 100644
--- a/app/tools/gimpbrightnesscontrasttool.h
+++ b/app/tools/gimpbrightnesscontrasttool.h
@@ -37,6 +37,7 @@ struct _GimpBrightnessContrastTool
{
GimpFilterTool parent_instance;
+ gboolean dragging;
gdouble x, y;
gdouble dx, dy;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]