Commit graph

25295 commits

Author SHA1 Message Date
Alx Sa
bb9d36d8ae dialogs, widgets: Check if animations are enabled...
...when setting animations for GtkStack.

Adds a check if gimp_widget_animation_enabled ()
is TRUE before setting an animation type in
gtk_stack_set_transition_type (). If it's FALSE,
then we turn off animations with
GTK_STACK_TRANSITION_TYPE_NONE.
This affects the Input Controller dialogue,
Preferences dialogue, and the Welcome
dialogue.
2025-07-17 20:56:16 +00:00
Michael Natterer
f1373373e6 app: in GimpRow, say e.g. "Rename Brush" instead of a generic
"Rename Item", using GimpViewableClass::default_name
2025-07-16 17:27:40 +02:00
Michael Natterer
df497b5ca6 app: move "default_name" from GimpItemClass to GimpViewableClass and
set default names for a lot of stuff. To be used by GimpRow soon.
2025-07-16 17:22:11 +02:00
Michael Natterer
b32ab62822 app: use G_DECLARE_DERIVABLE_TYPE() in GimpResource 2025-07-16 17:11:15 +02:00
Alx Sa
d51cdee779 paint: Use PROP_VIEW_ZOOM and PROP_VIEW_ROTATION
In ea8b9dc1, PROP_RADIUS was incorrectly used for the
view-zoom and view-rotation property IDs. This patch
removes the duplication and makes the IDs distinct.
2025-07-16 03:35:16 +00:00
Michael Natterer
03b9292d59 app: use g_set_object() in more set_property() implementations 2025-07-15 15:49:45 +02:00
Michael Natterer
bfaf6c5ce0 app: fix typo in GimpViewable: it's "pending" not "prending" 2025-07-15 15:34:24 +02:00
Michael Natterer
0682a19213 app: implement object renaming in GimpRow, using either F2 or long press 2025-07-15 12:27:44 +02:00
Michael Natterer
a91cfe07ac app: set GimpViewableClass::name-editable to TRUE in GimpControllerInfo 2025-07-15 12:12:35 +02:00
Michael Natterer
39228512ad app: use G_DECLARE_DERIVABLE_TYPE() in GimpGroupLayer 2025-07-15 12:10:51 +02:00
Ondřej Míchal
dabe921ba1 app: Change container pop-up view size predictably
Instead of a blind multiplication/division use known and well defined
increments that also have no chance of overflowing the minimum/maximum
allowed sizes.

Closes https://gitlab.gnome.org/Teams/GIMP/Design/gimp-ux/-/issues/509
2025-07-13 11:44:57 -04:00
Ondřej Míchal
3dd6272a1d app: Use correct maximum size for button viewables
Pop-up widgets tied to button viewables can have their previews go over
the original max value which officially is 192 ("gigantic"). When they
do and update their property with the number, a critical gets fired
regarding the maximum value being crossed over.

Closes #14337
2025-07-13 11:44:57 -04:00
Michael Natterer
57f21db59e app: use G_DECLARE_DERIVABLE_TYPE for GimpObject 2025-07-13 13:18:42 +02:00
Michael Natterer
14fb14effc app: #pragma once in app/tools 2025-07-13 09:26:04 +02:00
Michael Natterer
246f9d284f app, pdb, libgimp: use "#pragma once" instead of:
#ifndef __FOO_H__
 #define __FOO_H__

 /* declarations  */

 #endif /* __FOO_H__ */

And some cleanups while I saw the headers.
This is far from finished...
2025-07-13 03:21:37 +02:00
Michael Natterer
5a66ceda13 app: port GimpCircle and its subclasses to G_DECLARE_DERIVABLE_TYPE() 2025-07-12 20:03:34 +02:00
Michael Natterer
d2ca61d5e2 app: G_DECLARE_DERIVABLE_TYPE() in GimpFilter, GimpItem, GimpViewable,
plus somewhat related cleanup in the .c files
2025-07-12 19:08:30 +02:00
Michael Natterer
9359839e84 app, pdb: get rid of const object pointer in generated PDB code, and
adapt some core functions accordingly. Const object pointer make no
sense at all.
2025-07-12 18:54:20 +02:00
Michael Natterer
453e3a1004 app: remove GimpAdd,RemoveItemFunc from GimpItemTreeView and use
gimp_image_add,remove_item() instead
2025-07-12 17:45:05 +02:00
Michael Natterer
7e43c448ae app: add gimp_image_add,remove_item() which dispatches to the correct
layer, channel, path functions
2025-07-12 17:43:44 +02:00
Michael Natterer
a7881b6708 app: remove GimpGetContainerFunc from GimpItemTreeView and use
gimp_image_get_items() instead
2025-07-12 17:17:39 +02:00
Michael Natterer
42e070521c app: add gimp_image_get_items() which returns a GimpContainer based on
an item GType
2025-07-12 17:16:36 +02:00
Michael Natterer
4220657930 app: reorder functions in GimpImage so the item sets API is in the
middle of an unrelated function group
2025-07-12 17:04:36 +02:00
Michael Natterer
4e1c6e918b app: remove GimpGet,SetItemsFunc from GimpItemTreeView and use the
newly added gimp_image_set,get_items()
2025-07-12 16:37:18 +02:00
Michael Natterer
7887862b29 app: port GimpEditor to G_DECLARE_DERIVABLE_TYPE() and some other
cleanups
2025-07-12 16:01:50 +02:00
Michael Natterer
c880e5ac17 app: listen to icon-name changes in GimpRow 2025-07-12 15:03:34 +02:00
Michael Natterer
529db388c2 app: add GimpRow, a GtkListBoxRow subclass, that is going to be the
parent of all our future row widgets, Use it in GimpControllerList.
2025-07-12 14:03:14 +02:00
Michael Natterer
c5c503cd59 app: derive GimpControllerManager from GimpList and remove its own
GListModel implementation.
2025-07-12 12:43:09 +02:00
Michael Natterer
af20371f6b app: implement GListModel in GimpContainer, and add
G_DEFINE_AUTOPTR_CLEANUP_FUNC to GimpContainer and GimpList
2025-07-12 12:40:38 +02:00
Niels De Graef
b690e59dca app: Fix adding devices in gimpcontrollerlist 2025-07-12 12:00:30 +02:00
Michael Natterer
71bb54cb9a app: forgot an #include /o\ 2025-07-12 11:53:24 +02:00
Michael Natterer
e85d696cd9 app: forgot to commit the changes in app/display 2025-07-12 11:49:21 +02:00
Michael Natterer
af95e96963 app: move GimpControllerManager to its own files 2025-07-12 11:43:28 +02:00
Michael Natterer
905ccf2ea9 app: move GimpControllerCategory to its own files 2025-07-12 11:09:28 +02:00
Alx Sa
24e6aaea30 widgets: Reconnect style_updated() in DrawableTreeView
Resolves #14447
In addition to defining a style_updated () function, we also need
to attach it to signals whenever the theme or icon size changes.
2025-07-11 15:48:57 +00:00
Alx Sa
270a834598 core: Stop error in gimp_image_set_selected_items ()
Unlike gimp_image_get_selected_items (), we don't return
anything after calling the appropriate function inside
gimp_image_set_selected_items (). Thus, even if we match
the GType for the item, the g_return_if_reached () will always
run at the end of the function and throw an error.
This patch puts that statement in an else {} condition so it
only runs if the GType doesn't match a layer, channel, or path.
2025-07-11 03:50:44 +00:00
Michael Natterer
5060cc06dd app: move the g_set_str() hack to config-types.h 2025-07-10 23:58:43 +02:00
Jehan
a4a5b2e300 app: (temporarily) redefine g_set_str() to avoid bumping GLib requirement. 2025-07-10 23:51:37 +02:00
Michael Natterer
b61b3362ff app: fix wrong propery identifier of GimpFillEditor::use-custom-style
and fix some coding style issues
2025-07-10 23:31:08 +02:00
Niels De Graef
b144929476 app: Don't use g_type_class_get() yet
It's not available yet in Debian.
2025-07-10 09:54:17 +02:00
Niels De Graef
8013d1c013 app: Port controllers dialog to GtkListBox
This shouldn't be a real change in design, just moving away from
`GtkTreeView`.

Since we stopped relying on the underlying `GimpContainer` API, we can
now stop exposing it in the `GimpControllerManager` too.
2025-07-10 07:28:36 +02:00
Niels De Graef
b410dcdc03 app: Extend GimpControllerManager API
... and fix a bug related connecting to the wrong signal.
2025-07-10 07:23:48 +02:00
Alx Sa
2449d2f3ad paint, tools: Minor fixes to MyPaint Brushes code
* Anders Jonsson noticed a typo where the
'r' in "pressure" was left off in the Gain
parameter description
* Since 0.0 is an invalid value for the viewzoom
parameter in MyPaint, the cut off is adjusted
to be greater than 0, not greater than or
equal to 0.
* The default viewzoom value is set to 1.0f,
100%, rather than 0.0001, very zoomed out.
2025-07-10 01:39:36 +00:00
Niels De Graef
fcca547dd6 app: Expose Controller types as GListModel 2025-07-10 00:57:08 +02:00
Alx Sa
ea8b9dc13c core, paint, tools: Port to MyPaint Brushes2
This patch ports our MyPaint code to use the
MyPaintSurface2 API, allowing us to support
version 2 MyPaint Brushes correctly.
The API update lets us take into account
the zoom factor and rotation of the canvas
when drawing. It also adds a "Gain" option
to the GUI in order to control the strength
of the input's pressure (tablet or mouse).
As a caveat, this patch does not yet
implement spectral/pigment blending.
2025-07-09 22:14:42 +00:00
Alx Sa
5f65133e20 pdb: Set image file when using gimp-file-save
gimp_file_save () lets you save an image to
any supported file format, but it did not
update the GimpImage's file or exported
file accordingly. This patch adds code to
do just that, patterned after /app/file/file-save.c's
file_save ().
2025-07-08 14:06:00 +00:00
Niels De Graef
53750e2699 app: Make sure GimpControllerManager emits changes 2025-07-08 15:41:28 +02:00
Niels De Graef
441590ade1 app: Implement GListModel in GimpControllerManager
This'll help us later on to migrate `GimpControllerList` to more modern
widgetry.
2025-07-08 12:52:07 +02:00
Niels De Graef
fcdbd74071 app: Split off GimpControllerManager
Transform the `GimpControllerManager` so it encapsulates all the logic
related to managing all `GimpControllerInfo` objects, so we can pass
that object around, rather than dealing with the `Gimp` struct
everywhere and pretty hackishly retrieving the manager struct using
`g_object_get_data()`. By also making it a proper `GObject`, we can
later put even more logic onto it.
2025-07-08 12:52:04 +02:00
Michael Natterer
89ea91df96 app, libgimp*: more g_set_str() and some other stuff in the same
spirit
2025-07-08 00:37:26 +02:00