2007-11-04 Martin Nordholts <martinn@svn.gnome.org>
Do not do shell darkening while GimpRectangleTool rectangles are
being rubber-banded.
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_button_press)
(gimp_rectangle_tool_button_release): Maintain a variable keeping
track of if the rectangle is being rubber banded or not.
(gimp_rectangle_tool_update_highlight): Do not set a shell
highligt if the rectangle is being rubber-banded.
(gimp_rectangle_tool_rubber_banding_func): New helper function.
svn path=/trunk/; revision=24059
2007-11-04 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c: Consistently use the name
`rect_tool' instead of `rectangle' or `rectangle_tool' for
pointers to GimpRectangleTool.
svn path=/trunk/; revision=24054
2007-11-04 Martin Nordholts <martinn@svn.gnome.org>
Put GimpRectangleTool handles on the outside of the rectangle when
it has a small width or height. Some polishing left to do but the
base functionality works nicely.
* app/tools/gimpdrawtool.[ch] (gimp_draw_tool_draw_corner): Add a
put_outside boolean parameter that if true draws the handles on
the outside of the rectangle.
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_update_handle_sizes)
(gimp_rectangle_tool_coord_on_handle)
(gimp_rectangle_tool_draw): Take into account if the rectangle is
in narrow-mode or not.
svn path=/trunk/; revision=24053
2007-10-31 Michael Natterer <mitch@gimp.org>
* app/tools/gimprectangletool.c: some general indentation, spacing
and coding style convention paranoia cleanups.
(gimp_rectangle_tool_get_constraints): set all return values also
when bailing out early to avoid valgrind warnings about
uninitialized memory.
svn path=/trunk/; revision=24009
2007-10-26 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c (struct GimpRectangleToolPrivate):
Renamed handle_[wh] to corner_handle_[wh] since that are the
appropriate names.
svn path=/trunk/; revision=23960
2007-10-26 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c (gimp_rectangle_tool_oper_update):
Use new helper functions to decide if the cursor is on a
handle (or outside of the rectangle + handle bounds) to ease the
introduction of having handles on the outside of the pending
rectangle.
(gimp_rectangle_tool_coord_outside)
(gimp_rectangle_tool_coord_on_handle): New helper functions.
svn path=/trunk/; revision=23959
2007-10-16 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/gimppropwidgets.c (gimp_prop_size_entry_new):
honor the "show-pixels" and "show-percent" properties of the unit
param spec.
* app/tools/gimprectangletool.c (gimp_rectangle_tool_start): set
the image's width/height on the size entries so the percent unit
works correctly.
svn path=/trunk/; revision=23852
2007-10-15 Michael Natterer <mitch@gimp.org>
* app/tools/gimprectangleoptions.[ch]: added the x and y size
entries to the GimpRectangleOptionPrivate struct.
* app/tools/gimprectangletool.c (gimp_rectangle_tool_start): set
the image's resolution on the x, y, width and height size entries.
svn path=/trunk/; revision=23829
2007-10-14 Michael Natterer <mitch@gimp.org>
* app/tools/gimprectangleoptions.[ch]: renamed properties x0 and
y0 to x and y. Also reordered all property code to be in the same
order and added some empty lines to group the properties.
* app/tools/gimprectangletool.c: changed accordingly.
svn path=/trunk/; revision=23822
2007-10-14 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/gimppropwidgets.[ch] (gimp_prop_size_entry_new):
added parameter "gboolean property_is_pixel" which indicates that
the stored property value is always in pixels and not in the
selected unit.
* app/tools/gimptextoptions.c
* app/widgets/gimpstrokeeditor.c: pass FALSE to keep the old
behavior.
* app/tools/gimprectangleoptions.c (gimp_rectangle_options_gui):
added property "fixed-unit" which is used for all fixed values
now. Perhaps we need separate units for width/height/size. Enable
the unit menu on the "Width" and "Height" size entries of the
"Fixed" section and configure them to store the value in
pixels. This was the easy part, some other widgets still need unit
support.
* app/tools/gimprectangletool.c (gimp_rectangle_tool_start): set
the image's resolution on the size entries changed above.
svn path=/trunk/; revision=23821
2007-10-14 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_options_notify): When Fixed: Size/Aspect
ratio numbers are swapped and the Fixed:-rule is active, swap
width and height on any pending rectangle. Fixed bug #479999.
svn path=/trunk/; revision=23818
2007-10-13 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_apply_aspect): Use ROUND() not round().
svn path=/trunk/; revision=23816
2007-10-13 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_apply_aspect): Use round() when solving the
aspect ratio equations as this produces more accurate results.
svn path=/trunk/; revision=23811
2007-09-22 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_set_constraint): Enforce constraints of any
pending rectangle when setting a constraint.
svn path=/trunk/; revision=23615
2007-09-01 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimpcroptool.c
(gimp_crop_tool_update_default_fixed_ratio_options):
Generalize the default Fixed: Aspect ratio option setting code
so that it can later be used for Fixed: Size as well, and move
it to
* app/tools/gimprectangletool.[ch]
(gimp_rectangle_tool_pending_size_set)
(gimp_rectangle_tool_constraint_size_set): and use these two new
functions instead.
svn path=/trunk/; revision=23435
2007-08-21 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_update_with_coord): Don't adjust the
rectangle shape if it is is merely being moved.
svn path=/trunk/; revision=23343
2007-08-18 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c: Don't make
GIMP_RECTANGLE_CONSTRAIN_NONE into GIMP_RECTANGLE_CONSTRAIN_IMAGE,
and restructure the code a bit in the rectagle adjusting functions
so that they can handle the _NONE constraint. The effect of this
change is that rectangle tools no longer are constrained when
using fixed-rules.
svn path=/trunk/; revision=23319
2007-08-18 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_button_press): Clear highlight in previously
active shell when changing active shell.
svn path=/trunk/; revision=23318
2007-08-17 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimpcroptool.c
(gimp_crop_tool_constructor): Connect to the "image-changed"
signal of GimpContext and update default aspect when image
changes (fixes bug #417166), by using
(gimp_crop_tool_update_default_fixed_ratio_options): which is a
new function that does this. This function is called whenever it
is time to update defualts.
* app/tools/gimprectangletool.[ch]: Made
gimp_rectangle_tool_get_constraint part of the rectangle tool API.
svn path=/trunk/; revision=23312
2007-08-11 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_update_handle_sizes): Update handle sizes
based on the shell-visible part of the rectangle.
(gimp_rectangle_tool_start, gimp_rectangle_tool_halt):
Connect/disconnect to the "scrolled" signal of the shell and
update handle sizes.
svn path=/trunk/; revision=23204
2007-08-11 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_button_release): Halt the tool on cancel if a
rectangle has not previously been created.
svn path=/trunk/; revision=23202
2007-08-11 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_update_highlight): Renamed from
gimp_rectangle_tool_set_highlight
(gimp_rectangle_tool_button_release): Add call to
gimp_rectangle_tool_update_highlight to keep highlight in sync
when a crop rectangle is cancelled.
svn path=/trunk/; revision=23201
2007-08-10 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimpcroptool.c (gimp_crop_tool_button_release): Set
default 'Fixed: Aspect ratio' values to the size of the pending
crop rectangle. Fixes bug #355545.
* app/tools/gimprectangletool.[ch]
(gimp_rectangle_tool_get_rectangle_size): New helper function.
svn path=/trunk/; revision=23194
2007-08-08 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangleoptions.[ch]: Use separate
desired-fixed-size-width/height properties for Fixed: Size instead
of sharing properties with Fixed: Width/Height.
* app/tools/gimprectangletool.c: Use the two new properties for
Fixed: Size.
svn path=/trunk/; revision=23140
2007-08-05 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c (gimp_rectangle_tool_motion): When
a new rectangle is created and Fixed: Size is used, set rectangle
function to RECT_MOVING.
svn path=/trunk/; revision=23117
2007-08-04 Martin Nordholts <martinn@svn.gnome.org>
Update rectangle tool options to bring it closer to the spec. The
major change is the use of a 'Fixed:' check box and a 'Aspect
ratio/Width/Height/Size' combo box. The check box is togglable
with Shift while rubber-banding.
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_active_modifier_key): Set other side also
when Shift is released.
(gimp_rectangle_tool_update_options): Don't supress updates of
tool options on fixed width/height/size
(gimp_rectangle_tool_apply_fixed_height)
(gimp_rectangle_tool_update_with_coord)
(gimp_rectangle_tool_handle_general_clamping): Use new tool option
interface and members.
* app/tools/gimprectangleoptions.[ch]
(gimp_rectangle_options_iface_base_init)
(gimp_rectangle_options_install_properties)
(gimp_rectangle_options_(get|set)_property): Remove and add
relevant properties.
(gimp_rectangle_options_private_finalize): Unref the new widgets
used in tool options.
(gimp_rectangle_options_fixed_rule_changed): New, update tool
options depending on current option state.
(gimp_rectangle_options_gui): Modified according to change log
entry summary.
(gimp_rectangle_options_unparent_fixed_rule_widgets): New helper.
(gimp_rectangle_options_fixed_rule_active): New, clients should
use this to find out if a certain fixed-mode is active.
* app/tools/tools-enums.[ch]: Added GimpRectangleToolFixedRule.
svn path=/trunk/; revision=23114
2007-08-04 Martin Nordholts <martinn@svn.gnome.org>
Don't apply fixed aspect on pending rectangles that are not being
rubber-banded, when this is changed in the rectangle tool options.
* app/tools/gimprectangletool.c (gimp_rectangle_tool_options_notify):
Don't synthesize motion for fixed aspect ratio options changes
* app/tools/gimprectangleoptions.c (gimp_rectangle_options_gui): Removed
callback to
(gimp_rectangle_options_notify_aspect): which is not needed any more,
and hence is removed.
svn path=/trunk/; revision=23113
2007-07-15 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c (struct
_GimpRectangleToolPrivate): Added members to keep track of for
what shell scale the handle sizes were calculated. This is
necessary so that in
(gimp_rectangle_tool_control): we only update the handle sizes
when the zoom level has changed. We must test this, because the
tool is also paused/resumed when highlightning is on, and we don't
want to update handle sizes just because highlightning happends to
be on.
(gimp_rectangle_tool_scale_has_changed): Added helper function.
svn path=/trunk/; revision=22933
2007-07-14 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_set_highlight): Check agains tool->display,
this check was lost when this function was moved out of
gimp_rectangle_tool_configure.
svn path=/trunk/; revision=22931
2007-07-14 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c (gimp_rectangle_tool_control):
Also update rectangle handle sizes when canvas zoom is
changed. (Forgot that in previous commit.)
svn path=/trunk/; revision=22930
2007-07-14 Martin Nordholts <martinn@svn.gnome.org>
Made the rectangle tool handles not resize during rectangle
manipulation, as outlined in the spec, by separating highlight
updating and handle size updating calls.
* app/tools/gimprectangletool.c (gimp_rectangle_tool_configure):
Renamed to
(gimp_rectangle_tool_update_handle_sizes): and moved
gimp_rectangle_tool_set_highlight out of it. These two are now
called independantly.
svn path=/trunk/; revision=22929
2007-07-14 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c (gimp_rectangle_tool_clamp_width)
(gimp_rectangle_tool_clamp_height): Fixed crash when creating a
rectangle with constraints outside of canvas bounds.
svn path=/trunk/; revision=22928
2007-07-13 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_button_release): Don't execute selection if a
dead area is clicked.
svn path=/trunk/; revision=22927
2007-07-13 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_active_modifier_key): Update handle sizes and
highlight area also when Ctrl is released.
svn path=/trunk/; revision=22926
2007-07-11 Martin Nordholts <martinn@svn.gnome.org>
* app/tools/gimprectangletool.c: Removed bitfieldized values from
the SideToResize enum, they are irrelevant. Also renamed
HANDLE_SIZE to MAX_HANDLE_SIZE.
svn path=/trunk/; revision=22909
2007-07-08 Martin Nordholts <martinn@svn.gnome.org>
Completely rewrote logic in gimp_rectangle_tool_motion, in effect
also fixing bug #353936 and bug #398188. The general strategy now
is to have specialized functions doing one thing, and one thing
only.
The patch also makes adjusting the rectangle through the keyboard
and through the rectangle tool options follow tool options.
* app/tools/gimprectangletool.c (gimp_rectangle_tool_motion):
Completely refactored.
(gimp_rectangle_tool_active_modifier_key):
(gimp_rectangle_tool_update_options): Submit to tool options.
(gimp_rectangle_tool_apply_coord)
(gimp_rectangle_tool_clamp)
(gimp_rectangle_tool_clamp_width)
(gimp_rectangle_tool_clamp_height)
(gimp_rectangle_tool_keep_inside)
(gimp_rectangle_tool_keep_inside_horizontally)
(gimp_rectangle_tool_keep_inside_vertically)
(gimp_rectangle_tool_apply_fixed_width)
(gimp_rectangle_tool_apply_fixed_height)
(gimp_rectangle_tool_apply_aspect)
(gimp_rectangle_tool_update_with_coord)
(gimp_rectangle_tool_get_constraints)
(gimp_rectangle_tool_handle_general_clamping): The new specialized
functions.
svn path=/trunk/; revision=22903
2007-07-05 Sven Neumann <sven@gimp.org>
* app/tools/gimpdrawtool.c (gimp_draw_tool_draw_corner): changed
the highlighting of the side handles to follow changes in the
specification.
* app/tools/gimprectangletool.c (gimp_rectangle_tool_draw): cosmetics.
svn path=/trunk/; revision=22867
2007-06-30 Martin Nordholts <martinn@svn.gnome.org>
Started taking GimpRectangleTool towards the new specification.
The side handles now have the same width and height as the
corresponding corner handles, and the size of the side handles do
not span across the whole rectangle. Side handles also have a
limited mimimum size, just as corner handles.
* app/tools/gimprectangletool.c (gimp_rectangle_tool_oper_update,
gimp_rectangle_tool_draw, gimp_rectangle_tool_configure,
gimp_rectangle_tool_get_anchor): Changed accordingly.
* app/tools/gimpdrawtool.c (gimp_draw_tool_draw_corner): Changed
accordingly.
svn path=/trunk/; revision=22856
2007-06-29 Martin Nordholts <martinn@svn.gnome.org>
Made GimpRectangleTools remember where the "other side" is when
fixed-center is turned on, and reset the "other side" to that position
when fixed-center is turned off again. Fixes bug 398183.
* app/tools/gimprectangletool.c
(gimp_rectangle_tool_button_press): Remember "other side".
(gimp_rectangle_tool_active_modifier_key): When fixed-center is turned
off, reset "other side".
(gimp_rectangle_tool_get_other_side)
(gimp_rectangle_tool_get_other_side_coord)
(gimp_rectangle_tool_set_other_side_coord): New functions.
svn path=/trunk/; revision=22854