Commit 3f7b1182 authored by Michael Natterer's avatar Michael Natterer Committed by Michael Natterer

cursors/Makefile.am cursors/modifier-bad.png

2006-06-01  Michael Natterer  <mitch@gimp.org>

	* cursors/Makefile.am
	* cursors/modifier-bad.png
	* cursors/xbm/modifier-bad-mask.xbm
	* cursors/xbm/modifier-bad.xbm: new "bad" cursor
	modifier. Replaces the "bad" cursor.

	* cursors/gimp-tool-cursors.xcf: added it here too.

	* app/widgets/widgets-enums.h: added GIMP_CURSOR_MODIFIER_BAD.

	* app/widgets/gimpcursor.c: add the bad modifier. Leave the bad
	cursor there for now.

	* app/display/gimpdisplayshell-callbacks.c
	* app/tools/gimpaligntool.c
	* app/tools/gimpblendtool.c
	* app/tools/gimpbycolorselecttool.c
	* app/tools/gimpclonetool.c
	* app/tools/gimpcolortool.c
	* app/tools/gimpfliptool.c
	* app/tools/gimpiscissorstool.c
	* app/tools/gimpmovetool.c
	* app/tools/gimptransformtool.c
	* app/tools/gimpvectortool.c: use the modifier instead of the
	cursor. Fixes hotspot jumping when switching between normal and
	bad cursors. The changed cursor_update() functions even make more
	sense IMHO. Fixes bug #158407.
parent 6c25ae93
2006-06-01 Michael Natterer <mitch@gimp.org>
* cursors/Makefile.am
* cursors/modifier-bad.png
* cursors/xbm/modifier-bad-mask.xbm
* cursors/xbm/modifier-bad.xbm: new "bad" cursor
modifier. Replaces the "bad" cursor.
* cursors/gimp-tool-cursors.xcf: added it here too.
* app/widgets/widgets-enums.h: added GIMP_CURSOR_MODIFIER_BAD.
* app/widgets/gimpcursor.c: add the bad modifier. Leave the bad
cursor there for now.
* app/display/gimpdisplayshell-callbacks.c
* app/tools/gimpaligntool.c
* app/tools/gimpblendtool.c
* app/tools/gimpbycolorselecttool.c
* app/tools/gimpclonetool.c
* app/tools/gimpcolortool.c
* app/tools/gimpfliptool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimpmovetool.c
* app/tools/gimptransformtool.c
* app/tools/gimpvectortool.c: use the modifier instead of the
cursor. Fixes hotspot jumping when switching between normal and
bad cursors. The changed cursor_update() functions even make more
sense IMHO. Fixes bug #158407.
2006-06-01 Sven Neumann <sven@gimp.org>
Added basic framework for plug-ins to access the use_cpu_accel
......
......@@ -652,17 +652,17 @@ gimp_display_shell_canvas_tool_events (GtkWidget *canvas,
! gimp_tool_control_get_handle_empty_image (active_tool->control))
{
gimp_display_shell_set_cursor (shell,
GIMP_CURSOR_BAD,
GIMP_CURSOR_MOUSE,
gimp_tool_control_get_tool_cursor (active_tool->control),
GIMP_CURSOR_MODIFIER_NONE);
GIMP_CURSOR_MODIFIER_BAD);
}
}
else
{
gimp_display_shell_set_cursor (shell,
GIMP_CURSOR_BAD,
GIMP_CURSOR_MOUSE,
GIMP_TOOL_CURSOR_NONE,
GIMP_CURSOR_MODIFIER_NONE);
GIMP_CURSOR_MODIFIER_BAD);
}
shell->button_press_before_focus = TRUE;
......@@ -1342,17 +1342,17 @@ gimp_display_shell_canvas_tool_events (GtkWidget *canvas,
! gimp_tool_control_get_handle_empty_image (active_tool->control))
{
gimp_display_shell_set_cursor (shell,
GIMP_CURSOR_BAD,
GIMP_CURSOR_MOUSE,
gimp_tool_control_get_tool_cursor (active_tool->control),
GIMP_CURSOR_MODIFIER_NONE);
GIMP_CURSOR_MODIFIER_BAD);
}
}
else
{
gimp_display_shell_set_cursor (shell,
GIMP_CURSOR_BAD,
GIMP_CURSOR_MOUSE,
GIMP_TOOL_CURSOR_NONE,
GIMP_CURSOR_MODIFIER_NONE);
GIMP_CURSOR_MODIFIER_BAD);
}
}
......
......@@ -392,51 +392,52 @@ gimp_align_tool_cursor_update (GimpTool *tool,
GdkModifierType state,
GimpDisplay *display)
{
GimpAlignOptions *options = GIMP_ALIGN_OPTIONS (tool->tool_info->tool_options);
GimpCursorType cursor = GIMP_CURSOR_BAD;
GimpAlignOptions *options;
GimpCursorType cursor = GIMP_CURSOR_MOUSE;
GimpToolCursorType tool_cursor = GIMP_TOOL_CURSOR_MOVE;
GimpCursorModifier modifier = GIMP_CURSOR_MODIFIER_NONE;
options = GIMP_ALIGN_OPTIONS (tool->tool_info->tool_options);
if (options->align_type == GIMP_TRANSFORM_TYPE_PATH)
{
tool_cursor = GIMP_TOOL_CURSOR_PATHS;
modifier = GIMP_CURSOR_MODIFIER_MOVE;
if (gimp_draw_tool_on_vectors (GIMP_DRAW_TOOL (tool), display,
coords, 7, 7,
NULL, NULL, NULL, NULL, NULL, NULL))
{
cursor = GIMP_CURSOR_MOUSE;
tool_cursor = GIMP_TOOL_CURSOR_HAND;
modifier = GIMP_CURSOR_MODIFIER_MOVE;
}
else
{
modifier = GIMP_CURSOR_MODIFIER_BAD;
}
}
else
{
GimpLayer *layer;
GimpLayer *layer = gimp_image_pick_correlate_layer (display->image,
coords->x, coords->y);
if ((layer = gimp_image_pick_correlate_layer (display->image,
coords->x, coords->y)))
if (layer)
{
/* if there is a floating selection, and this aint it... */
if (gimp_image_floating_sel (display->image) &&
! gimp_layer_is_floating_sel (layer))
{
cursor = GIMP_CURSOR_MOUSE;
tool_cursor = GIMP_TOOL_CURSOR_MOVE;
modifier = GIMP_CURSOR_MODIFIER_ANCHOR;
modifier = GIMP_CURSOR_MODIFIER_ANCHOR;
}
else if (layer == gimp_image_get_active_layer (display->image))
else if (layer != gimp_image_get_active_layer (display->image))
{
cursor = GIMP_CURSOR_MOUSE;
}
else
{
cursor = GIMP_CURSOR_MOUSE;
tool_cursor = GIMP_TOOL_CURSOR_HAND;
modifier = GIMP_CURSOR_MODIFIER_MOVE;
}
}
else
{
modifier = GIMP_CURSOR_MODIFIER_BAD;
}
}
gimp_tool_control_set_cursor (tool->control, cursor);
......
......@@ -121,6 +121,8 @@ gimp_blend_tool_init (GimpBlendTool *blend_tool)
GimpTool *tool = GIMP_TOOL (blend_tool);
gimp_tool_control_set_scroll_lock (tool->control, TRUE);
gimp_tool_control_set_cursor (tool->control,
GIMP_CURSOR_MOUSE);
gimp_tool_control_set_tool_cursor (tool->control,
GIMP_TOOL_CURSOR_BLEND);
gimp_tool_control_set_action_value_1 (tool->control,
......@@ -276,10 +278,12 @@ gimp_blend_tool_cursor_update (GimpTool *tool,
{
case GIMP_INDEXED_IMAGE:
case GIMP_INDEXEDA_IMAGE:
gimp_tool_control_set_cursor (tool->control, GIMP_CURSOR_BAD);
gimp_tool_control_set_cursor_modifier (tool->control,
GIMP_CURSOR_MODIFIER_BAD);
break;
default:
gimp_tool_control_set_cursor (tool->control, GIMP_CURSOR_MOUSE);
gimp_tool_control_set_cursor_modifier (tool->control,
GIMP_CURSOR_MODIFIER_NONE);
break;
}
......
......@@ -100,6 +100,10 @@ gimp_by_color_select_tool_class_init (GimpByColorSelectToolClass *klass)
static void
gimp_by_color_select_tool_init (GimpByColorSelectTool *by_color_select)
{
GimpTool *tool = GIMP_TOOL (by_color_select);
gimp_tool_control_set_cursor (tool->control, GIMP_CURSOR_MOUSE);
by_color_select->x = 0;
by_color_select->y = 0;
}
......@@ -248,11 +252,13 @@ gimp_by_color_select_tool_cursor_update (GimpTool *tool,
if (! options->sample_merged &&
layer && layer != display->image->active_layer)
{
gimp_tool_control_set_cursor (tool->control, GIMP_CURSOR_BAD);
gimp_tool_control_set_cursor_modifier (tool->control,
GIMP_CURSOR_MODIFIER_BAD);
}
else
{
gimp_tool_control_set_cursor (tool->control, GIMP_CURSOR_MOUSE);
gimp_tool_control_set_cursor_modifier (tool->control,
GIMP_CURSOR_MODIFIER_NONE);
}
GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords, state, display);
......
......@@ -209,8 +209,9 @@ gimp_clone_tool_cursor_update (GimpTool *tool,
GdkModifierType state,
GimpDisplay *display)
{
GimpCloneOptions *options;
GimpCursorType ctype = GIMP_CURSOR_MOUSE;
GimpCloneOptions *options;
GimpCursorType cursor = GIMP_CURSOR_MOUSE;
GimpCursorModifier modifier = GIMP_CURSOR_MODIFIER_NONE;
options = GIMP_CLONE_OPTIONS (tool->tool_info->tool_options);
......@@ -224,18 +225,25 @@ gimp_clone_tool_cursor_update (GimpTool *tool,
if (gimp_channel_is_empty (selection) ||
gimp_pickable_get_opacity_at (GIMP_PICKABLE (selection),
coords->x, coords->y))
ctype = GIMP_CURSOR_MOUSE;
{
cursor = GIMP_CURSOR_MOUSE;
}
}
if (options->clone_type == GIMP_IMAGE_CLONE)
{
if ((state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) == GDK_CONTROL_MASK)
ctype = GIMP_CURSOR_CROSSHAIR_SMALL;
{
cursor = GIMP_CURSOR_CROSSHAIR_SMALL;
}
else if (! GIMP_CLONE (GIMP_PAINT_TOOL (tool)->core)->src_drawable)
ctype = GIMP_CURSOR_BAD;
{
modifier = GIMP_CURSOR_MODIFIER_BAD;
}
}
gimp_tool_control_set_cursor (tool->control, ctype);
gimp_tool_control_set_cursor (tool->control, cursor);
gimp_tool_control_set_cursor_modifier (tool->control, modifier);
GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords, state, display);
}
......
......@@ -504,8 +504,7 @@ gimp_color_tool_cursor_update (GimpTool *tool,
}
else
{
GimpCursorType cursor = GIMP_CURSOR_BAD;
GimpCursorModifier modifier = GIMP_CURSOR_MODIFIER_NONE;
GimpCursorModifier modifier = GIMP_CURSOR_MODIFIER_BAD;
if (coords->x > 0 && coords->x < display->image->width &&
coords->y > 0 && coords->y < display->image->height &&
......@@ -513,27 +512,26 @@ gimp_color_tool_cursor_update (GimpTool *tool,
(color_tool->options->sample_merged ||
gimp_image_coords_in_active_drawable (display->image, coords)))
{
cursor = GIMP_CURSOR_MOUSE;
}
switch (color_tool->pick_mode)
{
case GIMP_COLOR_PICK_MODE_NONE:
modifier = GIMP_CURSOR_MODIFIER_NONE;
break;
case GIMP_COLOR_PICK_MODE_FOREGROUND:
modifier = GIMP_CURSOR_MODIFIER_FOREGROUND;
break;
case GIMP_COLOR_PICK_MODE_BACKGROUND:
modifier = GIMP_CURSOR_MODIFIER_BACKGROUND;
break;
case GIMP_COLOR_PICK_MODE_PALETTE:
modifier = GIMP_CURSOR_MODIFIER_PLUS;
break;
switch (color_tool->pick_mode)
{
case GIMP_COLOR_PICK_MODE_NONE:
modifier = GIMP_CURSOR_MODIFIER_NONE;
break;
case GIMP_COLOR_PICK_MODE_FOREGROUND:
modifier = GIMP_CURSOR_MODIFIER_FOREGROUND;
break;
case GIMP_COLOR_PICK_MODE_BACKGROUND:
modifier = GIMP_CURSOR_MODIFIER_BACKGROUND;
break;
case GIMP_COLOR_PICK_MODE_PALETTE:
modifier = GIMP_CURSOR_MODIFIER_PLUS;
break;
}
}
gimp_tool_set_cursor (tool, display,
cursor, GIMP_TOOL_CURSOR_COLOR_PICKER,
GIMP_CURSOR_COLOR_PICKER,
GIMP_TOOL_CURSOR_COLOR_PICKER,
modifier);
}
......
......@@ -102,6 +102,8 @@ gimp_flip_tool_init (GimpFlipTool *flip_tool)
GimpTransformTool *transform_tool = GIMP_TRANSFORM_TOOL (flip_tool);
gimp_tool_control_set_snap_to (tool->control, FALSE);
gimp_tool_control_set_cursor (tool->control, GIMP_CURSOR_MOUSE);
gimp_tool_control_set_toggle_cursor (tool->control, GIMP_CURSOR_MOUSE);
gimp_tool_control_set_tool_cursor (tool->control,
GIMP_TOOL_CURSOR_FLIP_HORIZONTAL);
gimp_tool_control_set_toggle_tool_cursor (tool->control,
......@@ -147,8 +149,8 @@ gimp_flip_tool_cursor_update (GimpTool *tool,
GdkModifierType state,
GimpDisplay *display)
{
GimpFlipOptions *options;
gboolean bad_cursor = TRUE;
GimpFlipOptions *options;
GimpCursorModifier modifier = GIMP_CURSOR_MODIFIER_BAD;
options = GIMP_FLIP_OPTIONS (tool->tool_info->tool_options);
......@@ -161,23 +163,16 @@ gimp_flip_tool_cursor_update (GimpTool *tool,
gimp_pickable_get_opacity_at (GIMP_PICKABLE (selection),
coords->x, coords->y))
{
bad_cursor = FALSE;
modifier = GIMP_CURSOR_MODIFIER_NONE;
}
}
if (bad_cursor)
{
gimp_tool_control_set_cursor (tool->control, GIMP_CURSOR_BAD);
gimp_tool_control_set_toggle_cursor (tool->control, GIMP_CURSOR_BAD);
}
else
{
gimp_tool_control_set_cursor (tool->control, GIMP_CURSOR_MOUSE);
gimp_tool_control_set_toggle_cursor (tool->control, GIMP_CURSOR_MOUSE);
}
gimp_tool_control_set_cursor_modifier (tool->control, modifier);
gimp_tool_control_set_toggle_cursor_modifier (tool->control, modifier);
gimp_tool_control_set_toggled (tool->control,
options->flip_type == GIMP_ORIENTATION_VERTICAL);
options->flip_type ==
GIMP_ORIENTATION_VERTICAL);
GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords, state, display);
}
......
......@@ -979,29 +979,35 @@ gimp_iscissors_tool_cursor_update (GimpTool *tool,
GimpDisplay *display)
{
GimpIscissorsTool *iscissors = GIMP_ISCISSORS_TOOL (tool);
GimpCursorType cursor = GIMP_CURSOR_MOUSE;
GimpCursorModifier modifier = GIMP_CURSOR_MODIFIER_NONE;
switch (iscissors->op)
{
case ISCISSORS_OP_SELECT:
GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords, state, display);
GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords,
state, display);
return;
case ISCISSORS_OP_MOVE_POINT:
modifier = GIMP_CURSOR_MODIFIER_MOVE;
break;
case ISCISSORS_OP_ADD_POINT:
modifier = GIMP_CURSOR_MODIFIER_PLUS;
break;
case ISCISSORS_OP_IMPOSSIBLE:
cursor = GIMP_CURSOR_BAD;
modifier = GIMP_CURSOR_MODIFIER_BAD;
break;
default:
break;
}
gimp_tool_set_cursor (tool, display,
cursor, GIMP_TOOL_CURSOR_ISCISSORS, modifier);
GIMP_CURSOR_MOUSE,
GIMP_TOOL_CURSOR_ISCISSORS,
modifier);
}
......
......@@ -648,7 +648,7 @@ gimp_move_tool_cursor_update (GimpTool *tool,
GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (display->shell);
GimpMoveOptions *options = GIMP_MOVE_OPTIONS (tool->tool_info->tool_options);
GimpCursorType cursor = GIMP_CURSOR_BAD;
GimpCursorType cursor = GIMP_CURSOR_MOUSE;
GimpToolCursorType tool_cursor = GIMP_TOOL_CURSOR_MOVE;
GimpCursorModifier modifier = GIMP_CURSOR_MODIFIER_NONE;
......@@ -659,8 +659,8 @@ gimp_move_tool_cursor_update (GimpTool *tool,
if (options->move_current)
{
if (gimp_image_get_active_vectors (display->image))
cursor = GIMP_CURSOR_MOUSE;
if (! gimp_image_get_active_vectors (display->image))
modifier = GIMP_CURSOR_MODIFIER_BAD;
}
else
{
......@@ -668,9 +668,12 @@ gimp_move_tool_cursor_update (GimpTool *tool,
coords, 7, 7,
NULL, NULL, NULL, NULL, NULL, NULL))
{
cursor = GIMP_CURSOR_MOUSE;
tool_cursor = GIMP_TOOL_CURSOR_HAND;
}
else
{
modifier = GIMP_CURSOR_MODIFIER_BAD;
}
}
}
else if (options->move_type == GIMP_TRANSFORM_TYPE_SELECTION)
......@@ -678,13 +681,13 @@ gimp_move_tool_cursor_update (GimpTool *tool,
tool_cursor = GIMP_TOOL_CURSOR_RECT_SELECT;
modifier = GIMP_CURSOR_MODIFIER_MOVE;
if (! gimp_channel_is_empty (gimp_image_get_mask (display->image)))
cursor = GIMP_CURSOR_MOUSE;
if (gimp_channel_is_empty (gimp_image_get_mask (display->image)))
modifier = GIMP_CURSOR_MODIFIER_BAD;
}
else if (options->move_current)
{
if (gimp_image_active_drawable (display->image))
cursor = GIMP_CURSOR_MOUSE;
if (! gimp_image_active_drawable (display->image))
modifier = GIMP_CURSOR_MODIFIER_BAD;
}
else
{
......@@ -700,7 +703,6 @@ gimp_move_tool_cursor_update (GimpTool *tool,
FUNSCALEX (shell, snap_distance),
FUNSCALEY (shell, snap_distance))))
{
cursor = GIMP_CURSOR_MOUSE;
tool_cursor = GIMP_TOOL_CURSOR_HAND;
modifier = GIMP_CURSOR_MODIFIER_MOVE;
}
......@@ -711,21 +713,19 @@ gimp_move_tool_cursor_update (GimpTool *tool,
if (gimp_image_floating_sel (display->image) &&
! gimp_layer_is_floating_sel (layer))
{
cursor = GIMP_CURSOR_MOUSE;
tool_cursor = GIMP_TOOL_CURSOR_MOVE;
modifier = GIMP_CURSOR_MODIFIER_ANCHOR;
}
else if (layer == gimp_image_get_active_layer (display->image))
{
cursor = GIMP_CURSOR_MOUSE;
}
else
else if (layer != gimp_image_get_active_layer (display->image))
{
cursor = GIMP_CURSOR_MOUSE;
tool_cursor = GIMP_TOOL_CURSOR_HAND;
modifier = GIMP_CURSOR_MODIFIER_MOVE;
}
}
else
{
modifier = GIMP_CURSOR_MODIFIER_BAD;
}
}
gimp_tool_control_set_cursor (tool->control, cursor);
......
......@@ -209,8 +209,9 @@ gimp_clone_tool_cursor_update (GimpTool *tool,
GdkModifierType state,
GimpDisplay *display)
{
GimpCloneOptions *options;
GimpCursorType ctype = GIMP_CURSOR_MOUSE;
GimpCloneOptions *options;
GimpCursorType cursor = GIMP_CURSOR_MOUSE;
GimpCursorModifier modifier = GIMP_CURSOR_MODIFIER_NONE;
options = GIMP_CLONE_OPTIONS (tool->tool_info->tool_options);
......@@ -224,18 +225,25 @@ gimp_clone_tool_cursor_update (GimpTool *tool,
if (gimp_channel_is_empty (selection) ||
gimp_pickable_get_opacity_at (GIMP_PICKABLE (selection),
coords->x, coords->y))
ctype = GIMP_CURSOR_MOUSE;
{
cursor = GIMP_CURSOR_MOUSE;
}
}
if (options->clone_type == GIMP_IMAGE_CLONE)
{
if ((state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) == GDK_CONTROL_MASK)
ctype = GIMP_CURSOR_CROSSHAIR_SMALL;
{
cursor = GIMP_CURSOR_CROSSHAIR_SMALL;
}
else if (! GIMP_CLONE (GIMP_PAINT_TOOL (tool)->core)->src_drawable)
ctype = GIMP_CURSOR_BAD;
{
modifier = GIMP_CURSOR_MODIFIER_BAD;
}
}
gimp_tool_control_set_cursor (tool->control, ctype);
gimp_tool_control_set_cursor (tool->control, cursor);
gimp_tool_control_set_cursor_modifier (tool->control, modifier);
GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords, state, display);
}
......
......@@ -643,16 +643,15 @@ gimp_transform_tool_cursor_update (GimpTool *tool,
break;
case GIMP_TRANSFORM_TYPE_PATH:
if (gimp_image_get_active_vectors (display->image))
cursor = GIMP_CURSOR_MOUSE;
else
cursor = GIMP_CURSOR_BAD;
if (! gimp_image_get_active_vectors (display->image))
modifier = GIMP_CURSOR_MODIFIER_BAD;
break;
}
if (tr_tool->use_center && tr_tool->function == TRANSFORM_HANDLE_CENTER)
{
modifier = GIMP_CURSOR_MODIFIER_MOVE;
if (modifier != GIMP_CURSOR_MODIFIER_BAD)
modifier = GIMP_CURSOR_MODIFIER_MOVE;
}
gimp_tool_control_set_cursor (tool->control, cursor);
......
......@@ -187,6 +187,7 @@ gimp_vector_tool_init (GimpVectorTool *vector_tool)
gimp_tool_control_set_handle_empty_image (tool->control, TRUE);
gimp_tool_control_set_motion_mode (tool->control,
GIMP_MOTION_MODE_COMPRESS);
gimp_tool_control_set_cursor (tool->control, GIMP_CURSOR_MOUSE);
gimp_tool_control_set_tool_cursor (tool->control,
GIMP_TOOL_CURSOR_PATHS);
......@@ -1211,13 +1212,8 @@ gimp_vector_tool_cursor_update (GimpTool *tool,
GimpDisplay *display)
{
GimpVectorTool *vector_tool = GIMP_VECTOR_TOOL (tool);
GimpCursorType cursor;
GimpToolCursorType tool_cursor;
GimpCursorModifier cmodifier;
cursor = GIMP_CURSOR_MOUSE;
tool_cursor = GIMP_TOOL_CURSOR_PATHS;
cmodifier = GIMP_CURSOR_MODIFIER_NONE;
GimpToolCursorType tool_cursor = GIMP_TOOL_CURSOR_PATHS;
GimpCursorModifier modifier = GIMP_CURSOR_MODIFIER_NONE;
switch (vector_tool->function)
{
......@@ -1227,68 +1223,67 @@ gimp_vector_tool_cursor_update (GimpTool *tool,
case VECTORS_CREATE_VECTOR:
case VECTORS_CREATE_STROKE:
cmodifier = GIMP_CURSOR_MODIFIER_CONTROL;
modifier = GIMP_CURSOR_MODIFIER_CONTROL;
break;
case VECTORS_ADD_ANCHOR:
case VECTORS_INSERT_ANCHOR:
tool_cursor = GIMP_TOOL_CURSOR_PATHS_ANCHOR;
cmodifier = GIMP_CURSOR_MODIFIER_PLUS;
modifier = GIMP_CURSOR_MODIFIER_PLUS;
break;
case VECTORS_DELETE_ANCHOR:
tool_cursor = GIMP_TOOL_CURSOR_PATHS_ANCHOR;
cmodifier = GIMP_CURSOR_MODIFIER_MINUS;
modifier = GIMP_CURSOR_MODIFIER_MINUS;
break;
case VECTORS_DELETE_SEGMENT:
tool_cursor = GIMP_TOOL_CURSOR_PATHS_SEGMENT;
cmodifier = GIMP_CURSOR_MODIFIER_MINUS;
modifier = GIMP_CURSOR_MODIFIER_MINUS;
break;
case VECTORS_MOVE_HANDLE:
tool_cursor = GIMP_TOOL_CURSOR_PATHS_CONTROL;
cmodifier = GIMP_CURSOR_MODIFIER_MOVE;
modifier = GIMP_CURSOR_MODIFIER_MOVE;
break;
case VECTORS_CONVERT_EDGE:
tool_cursor = GIMP_TOOL_CURSOR_PATHS_CONTROL;
cmodifier = GIMP_CURSOR_MODIFIER_MINUS;
modifier = GIMP_CURSOR_MODIFIER_MINUS;
break;
case VECTORS_MOVE_ANCHOR:
tool_cursor = GIMP_TOOL_CURSOR_PATHS_ANCHOR;
cmodifier = GIMP_CURSOR_MODIFIER_MOVE;
modifier = GIMP_CURSOR_MODIFIER_MOVE;
break;
case VECTORS_MOVE_CURVE:
tool_cursor = GIMP_TOOL_CURSOR_PATHS_SEGMENT;
cmodifier = GIMP_CURSOR_MODIFIER_MOVE;
modifier = GIMP_CURSOR_MODIFIER_MOVE;
break;
case VECTORS_MOVE_STROKE:
case VECTORS_MOVE_VECTORS:
cmodifier = GIMP_CURSOR_MODIFIER_MOVE;
modifier = GIMP_CURSOR_MODIFIER_MOVE;
break;
case VECTORS_MOVE_ANCHORSET:
tool_cursor = GIMP_TOOL_CURSOR_PATHS_ANCHOR;
cmodifier = GIMP_CURSOR_MODIFIER_MOVE;
modifier = GIMP_CURSOR_MODIFIER_MOVE;
break;
case VECTORS_CONNECT_STROKES:
tool_cursor = GIMP_TOOL_CURSOR_PATHS_SEGMENT;
cmodifier = GIMP_CURSOR_MODIFIER_JOIN;
modifier = GIMP_CURSOR_MODIFIER_JOIN;
break;
default:
cursor = GIMP_CURSOR_BAD;
modifier = GIMP_CURSOR_MODIFIER_BAD;
break;
}
gimp_tool_control_set_cursor (tool->control, cursor);
gimp_tool_control_set_tool_cursor (tool->control, tool_cursor);
gimp_tool_control_set_cursor_modifier (tool->control, cmodifier);
gimp_tool_control_set_cursor_modifier (tool->control, modifier);
GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords, state, display);
}
......
......@@ -112,6 +112,8 @@
#include "cursors/xbm/tool-hand-mask.xbm"
/* cursor modifiers */
#include "cursors/xbm/modifier-bad.xbm"
#include "cursors/xbm/modifier-bad-mask.xbm"
#include "cursors/xbm/modifier-plus.xbm"
#include "cursors/xbm/modifier-plus-mask.xbm"
#include "cursors/xbm/modifier-minus.xbm"
......@@ -426,6 +428,12 @@ static GimpCursor gimp_cursor_modifiers[] =
0, 0,
NULL, NULL, NULL, NULL
},
{
modifier_bad_bits, modifier_bad_mask_bits,
modifier_bad_width, modifier_bad_height,
0, 0,
modifier_bad, NULL, NULL, NULL
},
{
modifier_plus_bits, modifier_plus_mask_bits,
modifier_plus_width, modifier_plus_height,
......
......@@ -256,6 +256,7 @@ typedef enum /*< skip >*/
typedef enum /*< skip >*/
{
GIMP_CURSOR_MODIFIER_NONE,
GIMP_CURSOR_MODIFIER_BAD,
GIMP_CURSOR_MODIFIER_PLUS,
GIMP_CURSOR_MODIFIER_MINUS,
GIMP_CURSOR_MODIFIER_INTERSECT,
......
......@@ -10,6 +10,7 @@ CURSOR_IMAGES = \
cursor-zoom.png \
\
modifier-anchor.png \
modifier-bad.png \
modifier-background.png \
modifier-control.png \
modifier-foreground.png \
......@@ -76,6 +77,8 @@ EXTRA_DIST = \
xbm/cursor-color-picker.xbm \
xbm/cursor-color-picker-mask.xbm \
\
xbm/modifier-bad.xbm \
xbm/modifier-bad-mask.xbm \
xbm/modifier-plus.xbm \
xbm/modifier-plus-mask.xbm \
xbm/modifier-minus.xbm \
......
#define modifier_bad_mask_width 32
#define modifier_bad_mask_height 32
static unsigned char modifier_bad_mask_bits[] = {
0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xe0, 0x7f,
0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0xf0, 0xfe, 0x00, 0x00, 0xf0, 0xff,
0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xf0, 0xf7, 0x00, 0x00, 0xe0, 0x7f,
0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x0f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
#define modifier_bad_width 32
#define modifier_bad_height 32
static unsigned char modifier_bad_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0xc0, 0x3f,
0x00, 0x00, 0xc0, 0x38, 0x00, 0x00, 0x60, 0x7c, 0x00, 0x00, 0x60, 0x6e,
0x00, 0x00, 0x60, 0x67, 0x00, 0x00, 0xe0, 0x63, 0x00, 0x00, 0xc0, 0x31,
0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment