Commit Graph

257 Commits

Author SHA1 Message Date
40743c90a2 widgets: Fix out of bounds zoom in gradient editor
When zooming using scroll events it is possible to zoom out of gradient
bounds because the check for out of bounds zoom happens with the zoom
value before the delta is applied. The correct way is to limit the zoom
value after the delta is applied.
2022-08-06 16:28:50 +00:00
ae3c4c3577 widgets: Implement zoom focus in gradient editor
Zoom focus centers the point that we're zooming into at the location of
the mouse pointer.

Default zoom focus value is 0.5 which results in previous behavior.
2022-08-06 16:28:50 +00:00
8d0e6efa10 widgets: Reset view_last_x whevener gradient editor leaves focus 2022-08-06 16:28:50 +00:00
ecb2009960 widgets: Implement support for zoom by pitch in gradient editor 2022-08-06 16:28:50 +00:00
62490218ee widgets: Fix support for smooth scrolling in gradient editor
Smooth scrolling requires that we keep the scroll (or zoom, as is in
this case) state as a floating-point number. The scroll deltas are often
less than one, thus storing scroll state as an integer will effectively
ignore most of the scroll events.
2022-08-06 16:28:50 +00:00
67fd1f0c52 app: Popup menu at pointer in GimpEditor
Rather than trying to fix up our own heuristics using a
`GtkMenuPositionFunc`, use the API that GTK provides to have popup
nicely placed near the pointer, which also has the benefit of nicely
integrating with GDK backends such as Wayland.
2021-12-13 20:56:54 +01:00
94043529c8 Issue #2938: Painting on indexed images counter-intuitive.
When loading indexed images, the image type is not obvious at all
(basically only reference is in the title bar). The main issue is that
if you don't realize it when editing, GIMP appear broken when the
expected colors don't appear on canvas.
Commit e48c239459 was a first step by showing various color widgets with
out-of-gamut warnings contextually. This additional commits will also
allows color selection for painting tools (i.e. foreground and
background colors) to be done within the image palette by default. This
way, the fact that this image impose working with limited color palette
is obvious as soon as you try to edit colors.
2019-03-18 12:06:11 +01:00
b140b283dc app: rename enum GimpColorPickMode to GimpColorPickTarget
This is just some preparation for fixing issue #1805, but actually
"target" is a much better name so I went the full way and also changed
GUI labels and the color picker tool options config property
accordingly.

If anyone notices at all, how horrible is it to lose your saved pick
target...
2018-07-15 14:32:53 +02:00
5f700549e7 Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
80997a8646 Remove most GTK_ADJUSTMENT() and (GtkAdjutment *) casts
they are obsolete in GTK+ 3.x because GtkAdjustment cannot be passed
around as GtkObject any longer, GtkObject is gone.
2018-06-24 18:15:16 +02:00
b8e75a0201 app: more GimpGradientEditor cleanup
Let the split and replicate segments dialogs keep their own data and
don't use GimpGradientEditor struct members. Remove redundant members
and indent the struct.
2018-06-24 16:24:16 +02:00
025a13b519 app: peek/poke much less in GimpGradientEditor internals
Add gimp_gradient_editor_get_selection() and set_selection()
and use them in gradient-editor-commands.c
2018-06-24 15:58:59 +02:00
558641fe6c app: move the gradient editor color dialog code to GimpGradientEditor
Same as previous commits.
2018-06-21 17:23:09 +02:00
02b6ff24da app: make gimp_gradient_editor_update() private 2018-06-21 13:57:39 +02:00
ffcd2a0366 app: undeprecate GimpGradientEditor, fix scrolling and drawing 2018-06-14 00:48:27 +02:00
2dd2f1509b Enable and fix smooth scrolling and zooming
- Fix gimp_scroll_adjustment_values() for smooth scroll events
- Set GDK_SMOOTH_SCROLL_MASK on all widgets where we set GDK_SCROLL_MASK
- Add GIMP_ZOOM_SMOOTH to enum GimpZoomType
- Add "gdouble delta" to gimp_zoom_model_step()
- Change the meaning of the "scale" parameter to "scale or delta" in
  all functions that take GimpZoomType and a scale factor.
2018-05-20 21:06:34 +02:00
fa3abc957b app: set GDK_SCROLL_MASK on widgets that need scroll events 2018-05-20 21:06:34 +02:00
aa96d9629e app: port GimpGradientEditor to GtkSyleContext 2018-05-20 21:06:29 +02:00
691069947f app: port to GtkWidget::draw() and s/GtkObject/GtkAdjustment/ 2018-05-20 21:06:26 +02:00
bf49b47620 Bug 795207 - Add color space to blend(gradient) tool options
First WIP commit, adds:

- enum GimpGradientBlendColorSpace { RGB_PERCEPTUAL, RGB_LINEAR }
- linear blending mode for gradient segments
- tool options GUI for the blend and paint tools which use gradients
2018-04-13 22:33:16 +02:00
bebdcbe0bf app: change enum GimpColorPickState to { START, UPDATE, END }
It used to be { NEW, UPDATE } but that didn't allow to distinguish the
final END update, which we will soon need for automatic color history
updating. Make sure all places that handle motion events on colors
(pick from canvas, gradient editor) correctly send and handle END
events.
2014-11-28 12:00:53 +01:00
908f727f0a Chain up unconditionally in GObject::constructed()
It's supported since GLib 2.28.
2012-11-12 21:51:22 +01:00
867da8f293 app: add gimp_context_get_foreground,background_pixel()
which takes a Babl format to convert from/to.
Include <gegl.h> in a million places.
2012-05-02 17:50:41 +02:00
a38faefba7 app: use toggle_behavior_mask not CONTROL to trigger zoom-on-scroll 2011-10-07 00:00:42 +02:00
1bff8224ad app: use the toggle_behavior_mask instead of CONTROL to pick BG
And don't use gimp_get_mod_separator().
2011-10-07 00:00:42 +02:00
f1d4dde36a libgimpwidgets: add gdk_event_triggers_context_menu() to gimp3migration.[ch]
and remove gimp_button_event_triggers_context_menu() again. Update
all callers to use the new function.
2011-10-02 16:23:59 +02:00
16817c666f libgimpwidgets: add gtk_scrollbar_new() to gimp3migration.[ch]
and use it all over the place.
2011-10-02 14:36:41 +02:00
3e336199b9 app: use gtk_box_new() 2011-09-30 11:29:11 +02:00
d92cd2f6c8 Add gimp_button_event_triggers_context_menu() and use it
instead of checking for event->button == 3, so context menus
work correctly on the Mac. Didn't change the image menu yet
because thet requires some more refactoring.
2011-09-19 00:47:23 +02:00
ab0b88b5db app: replace the last GtkObject members by GtkAdjustment
Also get rid of some unneeded GTK_ADJUSTMENT() casts and replace some
local GtkObject veriables by GtkAdjustment.
2011-05-15 17:00:41 +02:00
fdde231869 app: use gtk_widget_get_allocation() instead of gdk_drawable_get_size() 2011-03-17 15:09:19 +01:00
202124c438 app: implement GObject::constructed() instead of ::constructor() 2011-01-14 09:38:46 +01:00
0f0da4c712 app: various gradient editor changes and fixes
- return TRUE from event handlers if we handled the event
- remove the "instant update" toggle and feature
- move the color area left of the labels now that the toggle is gone
2011-01-07 15:09:17 +01:00
b69eea8cd6 app: implement GObject::dispose() instead of GtkObject::destroy() 2010-10-15 14:08:36 +02:00
7175f3e883 Some more changes to build with GSEAL_ENABLE
- use more GTK+ accessors instead of struct members
- remove quite some #undef GSEAL_ENABLE from completely ported files
2010-01-15 15:35:03 +01:00
1a23b9ecf2 Build with GSEAL_ENABLE and #undef it where accessors are missing 2009-10-17 20:20:39 +02:00
45e89543d1 use GtkAdjustment's accessors.
2009-03-23  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpgradienteditor.c: use GtkAdjustment's accessors.


svn path=/trunk/; revision=28210
2009-03-22 23:24:45 +00:00
d85fb156b5 app/widgets/gimpblobeditor.c app/widgets/gimpbrushselect.c
2009-03-22  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpblobeditor.c
	* app/widgets/gimpbrushselect.c
	* app/widgets/gimpcolorbar.c
	* app/widgets/gimpcolordialog.c
	* app/widgets/gimpcolorframe.c
	* app/widgets/gimpcontainergridview.c
	* app/widgets/gimpcontainerpopup.c
	* app/widgets/gimpcontainertreeview.c
	* app/widgets/gimpcontrollereditor.c
	* app/widgets/gimpcontrollerlist.c
	* app/widgets/gimpcursor.c
	* app/widgets/gimpcurveview.c
	* app/widgets/gimpdasheditor.c
	* app/widgets/gimpdialogfactory.c
	* app/widgets/gimpdnd-xds.c
	* app/widgets/gimpdockable.c
	* app/widgets/gimperrordialog.c
	* app/widgets/gimpfgbgeditor.c
	* app/widgets/gimpfgbgview.c
	* app/widgets/gimpfiledialog.c
	* app/widgets/gimpfontselect.c
	* app/widgets/gimpgradienteditor.c
	* app/widgets/gimpgradientselect.c
	* app/widgets/gimphandlebar.c
	* app/widgets/gimphistogrambox.c
	* app/widgets/gimphistogramview.c
	* app/widgets/gimpmessagedialog.c
	* app/widgets/gimpnavigationview.c
	* app/widgets/gimppaletteselect.c
	* app/widgets/gimppaletteview.c
	* app/widgets/gimppatternselect.c
	* app/widgets/gimpprogressbox.c
	* app/widgets/gimpprogressdialog.c
	* app/widgets/gimpscalebutton.c
	* app/widgets/gimpselectiondata.c
	* app/widgets/gimpsessioninfo.c
	* app/widgets/gimpsettingsbox.c
	* app/widgets/gimpstrokeeditor.c
	* app/widgets/gimptexteditor.c
	* app/widgets/gimptoolbox.c
	* app/widgets/gimpuimanager.c
	* app/widgets/gimpview-popup.c
	* app/widgets/gimpview.c
	* app/widgets/gimpviewabledialog.c
	* app/widgets/gimpwidgets-utils.c: use accessors for various
	members of GTK+ structures that don't exist any longer when
	GSEAL_ENABLE is defined.


svn path=/trunk/; revision=28193
2009-03-22 16:35:53 +00:00
d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
2009-01-17  Michael Natterer  <mitch@gimp.org>

	* all files with a GPL header and all COPYING files:

	Change licence to GPLv3 (and to LGPLv3 for libgimp).

	Cleaned up some copyright headers and regenerated the parsers in
	the ImageMap plugin.


svn path=/trunk/; revision=27913
2009-01-17 22:28:01 +00:00
8c6a7e8843 use pointer coordinates from the passed event instead of calling
2008-10-20  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpgradienteditor.c (view_events) 
(control_events):
	use pointer coordinates from the passed event instead of calling
	gtk_widget_get_pointer().


svn path=/trunk/; revision=27340
2008-10-20 13:31:59 +00:00
6aa62a907b app/dialogs/channel-options-dialog.c app/dialogs/palette-import-dialog.c
2008-06-29  Michael Natterer  <mitch@gimp.org>

	* app/dialogs/channel-options-dialog.c
	* app/dialogs/palette-import-dialog.c
	* app/display/gimpdisplayshell-callbacks.c
	* app/display/gimpnavigationeditor.c
	* app/tools/gimpbrightnesscontrasttool.c
	* app/tools/gimpcolorbalancetool.c
	* app/tools/gimpcolorizetool.c
	* app/tools/gimphuesaturationtool.c
	* app/tools/gimplevelstool.c
	* app/tools/gimpposterizetool.c
	* app/widgets/gimpbrusheditor.c
	* app/widgets/gimpbrushfactoryview.c
	* app/widgets/gimpbrushselect.c
	* app/widgets/gimpcolormapeditor.c
	* app/widgets/gimpcontainertreeview-dnd.c
	* app/widgets/gimpgradienteditor.c
	* app/widgets/gimphistogrambox.c
	* app/widgets/gimppaletteeditor.c
	* app/widgets/gimpscalebutton.c: replace adjustment->value by
	gtk_adjustment_get_value (adjustment).


svn path=/trunk/; revision=26019
2008-06-29 13:41:24 +00:00
f53ed53cdb app/widgets/gimpactionview.c app/widgets/gimpblobeditor.c
2008-06-28  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpactionview.c
	* app/widgets/gimpblobeditor.c
	* app/widgets/gimpbrushfactoryview.c
	* app/widgets/gimpbrushselect.c
	* app/widgets/gimpcellrendererdashes.c
	* app/widgets/gimpcellrendererviewable.c
	* app/widgets/gimpcolorbar.c
	* app/widgets/gimpcoloreditor.c
	* app/widgets/gimpcolorframe.c
	* app/widgets/gimpcomponenteditor.c
	* app/widgets/gimpcontainerbox.c
	* app/widgets/gimpcontainergridview.c
	* app/widgets/gimpcontainerpopup.c
	* app/widgets/gimpcontainertreeview.c
	* app/widgets/gimpcurveview.c
	* app/widgets/gimpdasheditor.c
	* app/widgets/gimpdatafactoryview.c
	* app/widgets/gimpdock.c
	* app/widgets/gimpdockable.c
	* app/widgets/gimpdockseparator.c
	* app/widgets/gimpfgbgeditor.c
	* app/widgets/gimpfgbgview.c
	* app/widgets/gimpgradienteditor.c
	* app/widgets/gimphandlebar.c
	* app/widgets/gimphistogrambox.c
	* app/widgets/gimphistogramview.c
	* app/widgets/gimpitemtreeview.c
	* app/widgets/gimpmenudock.c
	* app/widgets/gimpmessagebox.c
	* app/widgets/gimppaletteview.c
	* app/widgets/gimpscalebutton.c
	* app/widgets/gimpsessioninfo-book.c
	* app/widgets/gimpsessioninfo-dock.c
	* app/widgets/gimpsettingseditor.c
	* app/widgets/gimpstrokeeditor.c
	* app/widgets/gimptemplateeditor.c
	* app/widgets/gimptemplateview.c
	* app/widgets/gimpthumbbox.c
	* app/widgets/gimptoolbox.c
	* app/widgets/gimptooloptionseditor.c
	* app/widgets/gimptoolview.c
	* app/widgets/gimpuimanager.c
	* app/widgets/gimpviewabledialog.c
	* app/widgets/gimpviewrenderervectors.c
	* app/widgets/gimpwidgets-utils.c: use accessors instead of
	accessing members of GTK+ widgets directly.


svn path=/trunk/; revision=26008
2008-06-28 15:50:27 +00:00
45b5ffb7cf don't rely on the pointer position in the GdkEventMotion struct, query the
2007-12-18  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpgradienteditor.c: don't rely on the pointer
	position in the GdkEventMotion struct, query the pointer instead.

svn path=/trunk/; revision=24395
2007-12-18 17:51:32 +00:00
b36f958a29 use Cairo to draw the controls.
2007-11-05  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpgradienteditor.[ch]: use Cairo to draw the 
controls.


svn path=/trunk/; revision=24069
2007-11-05 20:11:16 +00:00
8f377f2748 app/widgets/gimpgradienteditor.c use gdk_event_request_motions() to handle
2007-11-04  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpgradienteditor.c
	* app/widgets/gimpnavigationview.c: use
	gdk_event_request_motions() to handle motion hint events.


svn path=/trunk/; revision=24052
2007-11-04 13:12:04 +00:00
24a8095025 Make the height of the previews in data editors configurable. Fixes bug
2007-03-17  Michael Natterer  <mitch@gimp.org>

	Make the height of the previews in data editors configurable.
	Fixes bug #337757.

	* app/widgets/gimpdataeditor.[ch]: add member "view" which needs
	to be set by subclasses. Add style property "minimal-height" which
	defaults to 96. Add style_set() implementation which sets
	editor->view's height to the configured value.

	* app/widgets/gimpbrusheditor.[ch]
	* app/widgets/gimpgradienteditor.[ch]
	* app/widgets/gimppaletteeditor.[ch]: use data_editor->view for
	storing the view widget and removed own view members. Remove
	separate #defines for the view's default width and height, it's
	width follows the dialog anyway.

	* themes/Default/gtkrc: document the default value of 96.

	* themes/Small/gtkrc: set it to 64.


svn path=/trunk/; revision=22137
2007-03-17 18:20:19 +00:00
fc761f6ed5 remove enum GimpColorPickMode...
2007-02-07  Michael Natterer  <mitch@gimp.org>

	* app/tools/tools-enums.[ch]: remove enum GimpColorPickMode...

	* app/widgets/widgets-enums.[ch]: ...and add it here.

	* app/widgets/gimpgradienteditor.c: merge separate functions for
	picking FG and BG colors and update the new color area from the
	merged function.


svn path=/trunk/; revision=21863
2007-02-07 17:53:16 +00:00
d6ee118027 applied patch from Joao S. O. Bueno Calligaris which adds a preview for
2007-02-07  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpgradienteditor.[ch]: applied patch from Joao
	S. O. Bueno Calligaris which adds a preview for the color the
	cursor is currently hovering and reduces excess precision when
	displaying color components and gradient positions (bug #400907).


svn path=/trunk/; revision=21858
2007-02-07 13:50:08 +00:00
41237259c9 In all files, changed the standard copyright notice to say "GIMP - The GNU
2006-12-09  Sven Neumann  <sven@gimp.org>

        * In all files, changed the standard copyright notice to say
        "GIMP - The GNU Image Manipulation Program".
2006-12-09 21:33:38 +00:00
223a578b35 libgimpwidgets/gimpresolutionentry.c fix typo in a function name.
2006-11-25  Simon Budig  <simon@gimp.org>

	* libgimpwidgets/gimpresolutionentry.c
	* libgimpwidgets/gimpwidgets.def: fix typo in a function name.

	* app/widgets/gimpgradienteditor.c
	* app/widgets/gimppaletteeditor.c
	* app/actions/gradient-editor-actions.c
	* app/actions/palette-editor-actions.c: handle all enum values
	and use sane ones.

	* app/widgets/gimpcontrollerinfo.c: fix a warning.
2006-11-25 00:13:08 +00:00