gimp/app
Jehan d3458a82d0 Issue #7023: icon size selection on GIMP 2.99.
This kinda reverts commit 6aebd30de1 ("app: remove
icon sizing preferences"), except that the code base is different enough since
this old commit was mainly for GIMP 2.10.x.
In any case, after initially thinking that GTK+3 handling for high density
display would be enough, we finally decide that adding back a Preferences-wide
setting for overriding the theme-set icon size is a good idea (additionally to
GTK+3 automatic support).

The base idea for removing the feature was that GTK+3 has high density display
support, through the "scale factor". Typically a high density display will
normally be set as using a ×2 scale factor so all icons will be double size.
Unfortunately it turns out it's not enough.

For instance, on very small screen estate, even with a scale factor of 1, if the
theme sets 24px toolbox icons, it may still take too much space.
Oppositely on huge screens, even with ×2 factor scale detected by the OS, the
icons may still feel too small (this is possibly what happens with #7023).

Furthermore there is also a matter of taste. Some people like small icons even
when they have the space. Others may want bigger icons, easy to click on.

Finally you can like a theme for its color scheme for instance, but it may not
have the icon size you want. Right now, we'd need to duplicate every theme in
small or bigger size. Instead of doing so, let's just have this global setting
overriding the theme rules.

Comparison with the 2.10 implementation:

- We still provide 4 sizes: small, medium, large and huge.
- We don't have the "Guess ideal size" setting anymore. Instead this is now a
  mix of the GTK+3 scale factor logic and the theme-set or custom size. I.e.
  that on a high density display with ×2 scale factor, we could have toolbox
  icons up to 96 pixels (48×2)!
- We now try to have less custom code in widgets as we append the CSS rules to
  the theme (similar to what we were already doing for dark theme or icon
  variants). What happens in widget code is mostly to connect to changes in
  themes and redraw the widgets which need to be.
- The custom size will now affect: toolbox icons, the FG/BG editor widget (in
  both the toolbox and the color dockable), dockable tab icons, the main
  dockable buttons, eye and lock header icons in item tree views, eye and lock
  cell icons in the item lists.

There are still a bunch of areas where it is not taken into account, such as
plug-ins, and various dialogs, but even in custom-made interface in dockables.
Ultimately it might be interesting to have a way to sync more buttons and
widgets to a global size settings.

Lastly, I fixed a bunch of existing bugs where we were updating icon sizes with
gtk_image_set_from_icon_name() using the const icon name taken from
gtk_image_get_icon_name(). As this was reusing the same string pointer, we were
ending with freeing the icon name.
2022-09-28 21:11:58 +02:00
..
actions app: new "tools-paint-select-pixel-size-set" action. 2022-08-17 14:20:18 +02:00
config Issue #7023: icon size selection on GIMP 2.99. 2022-09-28 21:11:58 +02:00
core meson: fix warnings of deprecated features. 2022-08-31 01:29:37 +02:00
dialogs Issue #7023: icon size selection on GIMP 2.99. 2022-09-28 21:11:58 +02:00
display meson: fix warnings of deprecated features. 2022-08-31 01:29:37 +02:00
file app: missing space in the string. 2022-03-24 21:49:27 +01:00
file-data app: fix resource leak warnings caught by static analysis. 2021-11-08 22:37:13 -05:00
gegl meson: fix warnings of deprecated features. 2022-08-31 01:29:37 +02:00
gui Issue #7023: icon size selection on GIMP 2.99. 2022-09-28 21:11:58 +02:00
menus Issue #8124: plug-in localization now totally moved plug-in side. 2022-07-05 12:22:32 +02:00
operations meson: fix warnings of deprecated features. 2022-08-31 01:29:37 +02:00
paint meson: fix warnings of deprecated features. 2022-08-31 01:29:37 +02:00
pdb core: Add simulation intent and BPC to GimpImage 2022-08-13 19:39:47 +00:00
plug-in meson: fix warnings of deprecated features. 2022-08-31 01:29:37 +02:00
propgui app, libgimpwidgets: move gimp_prop_spin_scale_new() and… 2022-02-19 00:14:44 +01:00
tests meson: fix warnings of deprecated features. 2022-08-31 01:29:37 +02:00
text meson: fix warnings of deprecated features. 2022-08-31 01:29:37 +02:00
tools meson: fix warnings of deprecated features. 2022-08-31 01:29:37 +02:00
vectors app: fix leaked queue created at init() (as reported by Massimo). 2021-08-16 12:16:52 +02:00
widgets Issue #7023: icon size selection on GIMP 2.99. 2022-09-28 21:11:58 +02:00
xcf app: Save simulation intent and bpc in XCF file 2022-08-20 22:31:07 +00:00
.gitignore Move git-version.h to the toplevel also in .gitignore 2018-01-29 20:26:18 +01:00
Makefile.am Fix reference from gimp_param_spec_duplicate to gimp_config_param_spec_duplicate 2020-01-17 11:17:03 +01:00
about.h Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
app.c app: reload plug-ins when language changes between runs. 2022-07-06 19:33:00 +02:00
app.h app: when called with --quit, GIMP exit code will report batch failure. 2022-04-16 02:30:46 +02:00
errors.c app: NULL log domain is not a bug. 2020-09-22 17:59:41 +02:00
errors.h Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
gimp-debug.c Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
gimp-debug.h Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
gimp-intl.h Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
gimp-log.c app: add gimp_log_{set,remove}_handler() 2020-08-02 11:01:59 +03:00
gimp-log.h app: add gimp_log_{set,remove}_handler() 2020-08-02 11:01:59 +03:00
gimp-priorities.h app: fix image-window UI-manager update while a projection is being rendered 2019-03-30 19:31:23 -04:00
gimp-update.c gimp-updates: fix update checks on macOS 2022-09-06 21:29:18 +01:00
gimp-update.h app: now store the last run version in the core config. 2022-02-22 12:23:46 +01:00
gimp-version.c app: only check gimp-release once. 2022-06-08 20:59:09 +02:00
gimp-version.h app: allow to disable the new version check altogether through a key… 2022-06-06 01:09:08 +02:00
gimpcore.def Issue #8124: plug-in localization now totally moved plug-in side. 2022-07-05 12:22:32 +02:00
git-version.h.in app: revert `#pragma once` to macro guards in meson build. 2019-09-19 13:31:22 +02:00
language.c app: allows for empty string as language. 2022-07-07 22:13:28 +02:00
language.h app: reload plug-ins when language changes between runs. 2022-07-06 19:33:00 +02:00
main.c macos: support for homebrew build 2022-07-27 17:06:21 +00:00
meson.build Cleanup meson symlinks 2022-08-31 13:10:13 +00:00
sanity.c app, configure, meson: depend on GEGL-0.4.38 2022-07-13 23:31:24 +02:00
sanity.h Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
signals.c app, macOS: Remove crash handling conflict 2022-06-25 17:46:19 +00:00
signals.h Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
tests.c app, libgimp, libgimpwidgets: fix "Application icon missing" in tests. 2021-12-23 13:39:43 +01:00
tests.h Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
unique.c Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
unique.h Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00