Michael Natterer
eb9fefe505
app; move GimpTransformTool's shutdown code to control(HALT)
...
and remove gimp_transform_tool_halt(), including all the duplicated
parent class shutdown code.
2011-04-01 22:56:33 +02:00
Michael Natterer
8a69d4f639
app: fix GimpCanvasProgress' position, extents, and drawing, gah...
2011-04-01 22:56:33 +02:00
Michael Natterer
c48c77b2e0
app: NULLify GimpRectangleOptions widget pointers upon destruction
...
so the NULL checks in GimpRectangleTool work no matter what the
shutdown order is.
2011-04-01 22:56:33 +02:00
Michael Natterer
0c7cd5b8a1
app: GimpPaintTool: don't call paint_core_paint(FINISH) in control(HALT)
...
because that simply can't happen (we call paint(FINISH) in
button_release() already and press and release are always paired. Only
call paint_core_cleanup() in control(HALT).
2011-04-01 22:56:32 +02:00
Michael Natterer
e1bc19faf6
app: make state checks on tool much more strict
...
so wrong calls will run into precondition checks and warnings. This is
optional, but currently enabled, to reduce the risk of introducing
permanent new warnings for 2.8. See STRICT_TOOL_CHECKS in gimptool.h.
2011-04-01 22:56:32 +02:00
Michael Muré
24c117082f
gimp:cage-transform : prepare optimisation for when the Gegl bug #645810 is solved
2011-03-31 23:00:23 +02:00
Michael Natterer
e4daf561ac
app: return TRUE after handling double and triple click tool events
...
so we don't redundantly update the cursor again.
2011-03-31 10:21:55 +02:00
Michael Natterer
6a046d09e4
app: GimpBrushTool: don't split brush setting in two callbacks
...
The need to both connect() and connect_after() to "set-brush" is gone
because XOR drawing is gone.
2011-03-30 23:38:14 +02:00
Michael Natterer
0db785c36a
app: don't call control_activate()/control_halt() in GimpRectangleTool
...
Instead, call it in all implementors.
2011-03-30 22:13:31 +02:00
Michael Natterer
884e4868a4
app: fix calls to control_activate() and control_halt() in GimpIScissorsTool
2011-03-30 21:48:37 +02:00
Michael Natterer
55f80cd758
app: fix GimpForegroundSelectTool pen cursor drawing
...
It seems some of the junk removed in the last commit did have a
purpose :) Also use a tool progress because it's the result of a
canvas interaction.
2011-03-30 21:24:04 +02:00
Michael Natterer
cc63337be5
app: simplify gimp_foreground_select_tool_oper_update() a lot
...
by removing tons of cruft. Fixes both status messages and tool drawing
with multiple displays.
2011-03-30 20:39:00 +02:00
Michael Natterer
92d7c7d8d9
app: change about dialog role from "about-dialog" to "gimp-about"
2011-03-30 20:20:47 +02:00
Enrico Schröder
074e2c088a
app: GimpRectangleTool: Rounding error when moving/resizing with keyboard
...
Fix for bug #653186 : When a rectangle selection is created or moved by
mouse at certain zoom-levels (200%, 400%, 800%), its coordinates can
become exactly .500. By then using the keyboard to move/resize in
steps of one pixel, a rounding error occurs in
gimp_rectangle_tool_update_int_rect(). This leads to the coordinate
either not beeing changed at all or changed by 2 pixels at a time. The
patch changes the function from using RINT() to ROUND() for the
calculations, which prevents the rounding error from happening.
2011-03-30 19:45:46 +02:00
Enrico Schröder
aae8787ee3
app: SIOX: algorithm ignores color sensitivity changes
...
Fix for bug #627062 : When changing the color sensitivity settings of
the Foreground Selection Tool, the SIOX algorithm gets called with
refinement=SIOX_REFINEMENT_CHANGE_SENSITIVITY, which then triggers
refinement=SIOX_REFINEMENT_RECALCULATE. However, there is no
implementation for RECALCULATE so the change is ignored. The patch
sets refinement to SIOX_REFINEMENT_ADD_FOREGROUND and _ADD_BACKGROUND
which triggers a complete recalculation.
2011-03-30 19:35:38 +02:00
Michael Natterer
2e406872c4
app: GimpBrushTool: don't set a BAD cursor permanently
...
by chaining up after setting it. Instead, don't set it and call
gimp_tool_set_cursor() directly when there is no brush or no dynamics.
2011-03-30 19:18:29 +02:00
Michael Natterer
96c8c35575
app: GimpFreeSelectTool: remove if (tool->display != display) checks
...
This can't happen in motion() and release() because they won't be
called if we didn't activate the tool.
2011-03-30 19:01:11 +02:00
Michael Natterer
9755d7d06c
app: GimpForegroundSelectTool: call control_activate() unconditionally
2011-03-30 15:05:33 +02:00
Michael Natterer
3d2fb51a63
app: GimpEditSelectionTool: call control_halt() in button_release()
...
Just for consistency, the tool is destroyed at the end of
button_release() anyway.
2011-03-30 12:08:38 +02:00
Michael Natterer
6899b0bf60
app: GimpCageTool: go to deform mode only if the user clicked the first handle
...
and not if it was only moved.
2011-03-30 11:51:51 +02:00
Michael Natterer
f585788e46
app: tool control cleanup in GimpCageTool
...
Don't call tool_control functions twice in init(). Call activate() and
halt() only on button_press() and button_release() to indicate that
the tool wants motion events.
2011-03-30 11:48:05 +02:00
Michael Natterer
28c48b1857
app: GimpBrightnessContrastTool: don't call gimp_tool_control_pause()/resume()
...
It must not be called directly, and is entirely useless here anyway.
2011-03-30 11:44:12 +02:00
Michael Natterer
d92b22c567
app: #include "widgets-types.h" so the GDK_KEY_foo defines are there
2011-03-29 22:39:34 +02:00
Michael Natterer
1cdaa2846f
app: some forgotten s/GDK_foo/GDK_KEY_foo/
2011-03-29 18:53:02 +02:00
Michael Natterer
7c60bb5181
app: use more of the new GDK_KEY_foo key names
...
and move the compat defines from display-enums.h to widgets-enums.h
2011-03-29 17:24:08 +02:00
Michael Natterer
2468f9fd55
app: cancel the align tool on Escape, and some more cleanup
2011-03-29 15:16:17 +02:00
Michael Natterer
bb5dea615b
app: some more cleanup and namespacing in GimpAlignTool
2011-03-29 14:32:00 +02:00
Michael Natterer
0c8ff468f6
app: remove empty GimpTool::initialize() impl from GimpAlignTool
2011-03-29 14:00:10 +02:00
Michael Natterer
f7bb4afbd8
app: add gimp_image_pick_layer_by_bounds() and use it in GimpAlignTool
...
Also do some refactoring in the align tool, like adding
gimp_align_tool_halt() and using it to shut down the tool.
2011-03-29 13:58:23 +02:00
Michael Natterer
08e409d6e3
app: move the GimpAlignTool options GUI to GimpAlignOptions
...
which fixes a major uglyness, it should have always been there.
Also fixes warnins on quit if the align tool is active.
2011-03-29 13:26:18 +02:00
Michael Natterer
c38eb0df4a
app: core-enums.h: fix type macros of the align type enums
2011-03-29 12:45:54 +02:00
Michael Natterer
f32e285ea3
app: more cleanup in GimpMeasureTool
...
- highlight the active point while dragging
- make sure the tool is only active while dragging
- misc formatting cleanup
2011-03-29 09:16:22 +02:00
Michael Natterer
f59eeb95e7
app: remove GimpMeasureTool:active_handle and use the existing :point
...
Also don't re-find the active point in button_press().
2011-03-29 08:52:09 +02:00
Mikael Magnusson
afb68c1cea
app: fix return value from NULL to FALSE
2011-03-29 00:23:27 +02:00
Michael Natterer
2b9b737686
app: add gimp_measure_tool_oper_update() which should have always been there
...
and add the stuff that should not be done in cursor_update(). Also add
highlighting of the currently hovered handle.
2011-03-28 20:44:30 +02:00
Michael Natterer
44a6e4f07a
app: use gimp_canvas_item_hit() in GimpMeasureTool
2011-03-28 20:13:18 +02:00
Michael Natterer
365902b582
app: use gimp_canvas_item_hit() in gimp_transform_tool_oper_update()
...
so all the extents calculation and parameter passing is not
duplicated for the first time \o/
2011-03-28 18:55:08 +02:00
Michael Natterer
e03a25caeb
app: add virtual function gboolean GimpCanvasItem::hit()
...
and implement it for GimpCanvasHandle and GimpCanvasGroup.
2011-03-28 18:54:02 +02:00
Michael Natterer
b529d556fa
app: add and use more GimpCanvasItem setters
2011-03-28 15:15:43 +02:00
Michael Natterer
d96091d514
app: port GimpMagnifyTool away from draw_tool_pause()/resume()
2011-03-28 12:22:29 +02:00
Michael Natterer
accc12a3ca
app: change GimpCanvasItem setters to take GimpCanvasItem*
...
not GimpCanvasLine* etc. We keep them around as items, and their
constructors return items, and it's getting more code anyway when
porting away from pause/resume, so let's keep the casting minimal at
least.
2011-03-28 12:20:36 +02:00
Michael Natterer
aa5d2f8082
app: port GimpBlendTool to pause()/resume()-less drawing
...
Instead, keep around the created GimpCanvasItems, and update them when
the blend coordiates change. Add setters to GipmCanvasLine and
GimpCanvasHandle which take care of calling begin_change() and
end_change() on the items around the change, so thes invalidate
properly.
2011-03-28 11:08:40 +02:00
Michael Natterer
1c0fe73da4
app: gimp_transform_tool_draw(): initialize the array of handles to NULL
...
And update/improve some comments in the entire file.
2011-03-28 10:16:00 +02:00
Michael Natterer
20bed2c609
app: add gimp_draw_tool_add_transform_preview() and use it
2011-03-28 02:18:00 +02:00
Michael Natterer
fd80b90cf0
app: more minor GimpTransformTool cleanup
2011-03-28 02:10:33 +02:00
Michael Natterer
9f6b60c29d
app: draw the perspective clone handles only when they can be used
2011-03-28 01:27:02 +02:00
Michael Natterer
4097825f3c
app: some more code removal and cleanup in the transform classes
2011-03-28 01:20:47 +02:00
Michael Natterer
dde7d6c0ee
app: remove lots of junk from GimpPerspectiveCloneTool
...
This is an evil transform tool copy, so do the same changes here.
2011-03-28 01:20:47 +02:00
Michael Natterer
babc2186c5
app: move the enum of indexes into the trans_info array to the .c files
...
and turn #defines from 0 to N into enums.
2011-03-28 00:50:46 +02:00
Michael Natterer
06e0183f96
app: right-align the perspective matrix labels with the right API
...
Use gtk_misc_set_alignment() instead of gtk_label_set_justify().
2011-03-28 00:39:39 +02:00
Michael Natterer
d36887644d
app: highlight the active transform tool handle
2011-03-28 00:13:14 +02:00
Michael Natterer
32f240fa4a
app: prepare GimpTransformTool for highlighting the handles
2011-03-27 23:57:12 +02:00
Michael Natterer
18929f0865
app: lay out the GimpTransformOptions GUI more uniformly
2011-03-27 23:18:28 +02:00
Michael Natterer
8512675088
app: rename GimpTransformTool::recalc() to ::recalc_matrix()
2011-03-27 23:12:11 +02:00
Michael Natterer
fb2ba3f289
app: remove display parameters from all virtual GimpTransformTool functions
2011-03-27 22:39:31 +02:00
Michael Natterer
eb4f01039a
app: add utility function gimp_transform_polygon_is_convex()
...
and use it in GimpTransformTool and GimpCanvasTransformPreview.
2011-03-27 22:04:33 +02:00
Michael Natterer
caa8cdd4c1
app: add gimp_transform_options_show_preview()
...
which returns whether or not to show a transform preview. Also clean
up gimp_transform_tool_draw() a bit and add a stroke group for the
center handle.
2011-03-27 21:49:34 +02:00
Michael Natterer
8a09fd1f34
app: refactor GimpCanvasTransformPreview to not know GimpTransformTool any more
...
Instead, add drawable, transform, x1, y1 etc. properties. This is
cleaner and has the nice side effect of not leaving artifacts, because
the changed state of the transform tool doesn't affect the extents
calculation any longer.
2011-03-27 21:19:38 +02:00
Michael Natterer
6fe9430cab
app: remove members "type" and "direction" from GimpTransformTool
...
and use the stuff from GimpTransformOptions directly. The copied
values were only there because of XOR drawing. Also did some more
cleanup and junk removal.
2011-03-27 17:38:49 +02:00
Michael Natterer
1d9f95ac98
app: code cleanup and streamlining in GimpCanvasTransformPreview
2011-03-27 16:54:21 +02:00
Michael Natterer
92aeeadecf
app: remove unused macros from gimpdrawable-transform.c
2011-03-27 16:53:48 +02:00
Michael Natterer
f09be52c1b
app: turn the transform preview into a GimpCanvasItem
...
And remove all the complicated handling code entirely. This makes
GimpTransformTool a lot less complex. As a nice side effect, the
preview is now always 100% in sync with the grid and handles.
2011-03-27 16:40:41 +02:00
Michael Natterer
cf28e07b64
app: move enum TransformAction from tools-enums.h to gimptransformtool.h
...
Moving it to tools-enums.h was a mistake, it's actually supposed to be
a private enum, accessible only by subclasses. And it's ugly.
2011-03-26 22:32:35 +01:00
Michael Natterer
f632c4a8aa
app: transform the transform grid lines on the fly
...
which is much less code than keeping the transformed lines around.
2011-03-26 22:14:07 +01:00
Michael Natterer
74f276fe4f
app: make sure GimpTransformTool draws correctly after options changes
2011-03-26 21:53:06 +01:00
Michael Natterer
deafe3d341
app: remove some entirely useless members from GimpTransformTool
2011-03-26 20:40:35 +01:00
Michael Natterer
6c524ea1db
app: GimpSessionInfo: use brute force to position dialogs
...
Window managers are such a crap. So on top of all friendly hinting and
geometry setting, simply use gtk_window_move() whenever a session
managed GtkDialog is shown. It should be very hard to ignore that, but
of course the WM has the last word no matter how hard we try.
Note: this code should be more complex and the signal connection
should happen in GimpDialogFactory. Left it in GimpSessionInfo for now
until it got a bit of testing.
2011-03-26 19:47:44 +01:00
Michael Natterer
c629cbeb89
app: some formatting cleanup in GimpDialogFactory
2011-03-26 19:32:59 +01:00
Michael Natterer
6606d10be1
app: gimp_transform_tool_transform(): don't unref NULL orig_tiles
2011-03-26 18:57:31 +01:00
Michael Natterer
ae72971866
app: pass the orig_tiles and their offset to GimpTransformTool::transform()
...
instead of keeping them around as members. This is another artifact
from ancient times. Also get rid of some more legacy junk
code. Disable more code in GimpTransformToolUndo but keep it around
even though it does nothing at the moment.
2011-03-26 18:45:58 +01:00
Michael Natterer
88ee23aa29
app: move some of the new tile offset variables to local scopes
2011-03-26 18:37:34 +01:00
Michael Natterer
047d31fa68
app: gimp_drawable_transform: place new the tiles at offset_x, offset_y
...
and not at offset_y, offset_y (typo).
2011-03-26 16:50:38 +01:00
Michael Natterer
bc8d5f84d6
app: remove the "offset" API from TileManager
...
It made the transform code hard to read and never belonged into the
tile manager anyway. It's a simple pixel buffer that should not know
about any position in an image. Instead, pass around the offsets of
tile managers explicitly, so everything is less obscure for the price
of having more parameters. This will also help replacing TileManagers
with GeglBuffers.
2011-03-26 08:30:15 +01:00
Mukund Sivaraman
41ab7d8e10
Remove broken include
2011-03-26 10:55:21 +05:30
Michael Natterer
6ec5190da2
app: remove unused files base/tile-manager-crop.[ch]
2011-03-26 00:10:19 +01:00
Michael Natterer
9424d42d36
pdb: apply recent fixes to the deprecated transform procedures
...
Don't transform the tiles of group layers, use the item transform API
instead. Go the same code path if there is no selection.
2011-03-25 22:35:46 +01:00
Michael Natterer
1a359a138d
pdb: don't recommend deprecated replacement procedures for deprecated procedures
2011-03-25 22:03:14 +01:00
Michael Natterer
4d7dbe233d
pdb: do the same optimization as in the transform tool in the commit below
2011-03-25 21:57:56 +01:00
Michael Natterer
3ed87015a6
app: if there is no selection, don't cut/transform/paste in the transform tool
...
instead, take the easy path that simply calls gimp_item_transform()
and does exactly the same, just less weird.
2011-03-25 21:50:58 +01:00
Michael Natterer
bef6d5716a
app: use a tool progress for GimpTransformTool
2011-03-25 21:35:19 +01:00
Michael Natterer
f078a7416c
app: remove some junk from GimpTransformTool
...
which was there for the purpose of transfomring the same buffer
multiple times (which would be nice but is broken and disabled for
ages). Also remove some junk that was there for unknown reasons, this
tool has a long history.
2011-03-25 21:32:08 +01:00
Michael Natterer
a5549ece52
app: don't pause/resume the shell (and the active tool) around expose()
...
This was only there to make sure XOR drawing works, and is now
complete overhead since cairo drawing is done *in* expose, and not in
some hack around it.
2011-03-25 21:28:21 +01:00
Michael Natterer
6fdcc5f465
app: add a progress indicator for cage transform
...
- add a double "progress" property to GimpOperationCageTransform
and update it every 20 rows
- connect to the notify::progress in the tool and display a tool
progress
2011-03-25 15:41:53 +01:00
Michael Natterer
41b905baa8
app: make GimpTool implement the GimpProgress interface properly
...
and remove the previously added quick hack. Change the cage progress
code to standard progress code, and use the tool progress also in
blend.
2011-03-25 10:55:07 +01:00
Michael Natterer
8daee72518
app: various GimpCageTool fixes
...
- completely halt the tool before starting it
- bail out on options changes when the tool is not active
- initialy set the mode to CAGE_CHANGE
- indentation, formatting, various small cleanups
2011-03-25 10:18:56 +01:00
Michael Natterer
e9dd30127a
app: add an on-canvas progress facility to GimpTool
...
and use it in GimpCageTool.
2011-03-25 09:48:26 +01:00
Michael Natterer
927ce61ce1
app: use a data delete dialog in the tool options' preset delete menu
2011-03-24 21:54:40 +01:00
Michael Natterer
920d1a42e9
app: move the GimpData delete confirm dialog to its own files
2011-03-24 21:46:40 +01:00
Michael Natterer
afa8a416c9
app: don't crash if GimpBrushTool has no dynamics to paint a brush outline
...
Also, set the BAD cursor when there isn't both brush and dynamics
available.
2011-03-24 20:21:57 +01:00
Michael Muré
8b87e633b3
gimp:cage-transform : iterate over y then x, to follow memory organisation
2011-03-24 19:57:47 +01:00
Michael Muré
b6ef32f580
gimp:cage-transform : when pre-filling the buffer, do a check if the pixel is
...
inside of the bounding box before computing if it's inside the cage
2011-03-24 19:38:14 +01:00
Michael Muré
635d1ba37d
gimp:cage-transform : fusion of two loop that didn't need to be seperate
2011-03-24 19:13:39 +01:00
Michael Muré
b87e5c10b3
gimp:cagetransform : move a call to babl_format_n outside of loops
2011-03-24 19:00:45 +01:00
Mikael Magnusson
5a5f47d903
cagetool: move malloc out of inner loop
2011-03-24 17:02:57 +01:00
Michael Natterer
b590804212
app: move GimpFilteredContainer's match logic to a utility function
2011-03-24 13:10:43 +01:00
Michael Natterer
aec66d0c26
app: make GimpTaggedContainer properly memory manage the filter list
...
instead of leaking it. Also make the fact that tags in the list can
validly be NULL obvious by adding utility functions
gimp_tag_or_null_ref/unref().
2011-03-24 12:28:45 +01:00
Michael Natterer
7eda388fec
app: fix possible GimpTagEntry crash by keeping the query idle ID around
...
Remove it in gimp_tag_query_dispose().
2011-03-24 09:55:32 +01:00
Michael Natterer
ac7aab2376
app: forgot to remove member GimpTaggedContainer:src_container
2011-03-24 09:43:21 +01:00
Michael Natterer
d64eae8c4e
app: use gimp_tagged_has_tag() instead of imlementing the same
...
and some general cleanup.
2011-03-24 09:17:44 +01:00
Michael Natterer
39d2067058
app: add gimp_tagged_has_tag(), and some cleanup in GimpTagged
2011-03-24 09:17:39 +01:00