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
This commit is contained in:
Ondřej Míchal 2025-06-25 21:55:10 +03:00
parent 01fcc2d7f4
commit 086539f2ae
4 changed files with 9 additions and 8 deletions

View file

@ -32,6 +32,7 @@
#include "core/gimpcontext.h" #include "core/gimpcontext.h"
#include "core/gimpcontainer.h" #include "core/gimpcontainer.h"
#include "core/gimpviewable.h" #include "core/gimpviewable.h"
#include "core/gimp-utils.h"
#include "gimpcontainerbox.h" #include "gimpcontainerbox.h"
#include "gimpcontainereditor.h" #include "gimpcontainereditor.h"
@ -213,7 +214,7 @@ gimp_container_popup_set_view_type (GimpContainerPopup *popup,
} }
} }
gint GimpViewSize
gimp_container_popup_get_view_size (GimpContainerPopup *popup) gimp_container_popup_get_view_size (GimpContainerPopup *popup)
{ {
g_return_val_if_fail (GIMP_IS_CONTAINER_POPUP (popup), GIMP_VIEW_SIZE_SMALL); g_return_val_if_fail (GIMP_IS_CONTAINER_POPUP (popup), GIMP_VIEW_SIZE_SMALL);
@ -223,7 +224,7 @@ gimp_container_popup_get_view_size (GimpContainerPopup *popup)
void void
gimp_container_popup_set_view_size (GimpContainerPopup *popup, gimp_container_popup_set_view_size (GimpContainerPopup *popup,
gint view_size) GimpViewSize view_size)
{ {
GtkWidget *scrolled_win; GtkWidget *scrolled_win;
GtkWidget *viewport; GtkWidget *viewport;
@ -366,7 +367,7 @@ gimp_container_popup_smaller_clicked (GtkWidget *button,
view_size = gimp_container_view_get_view_size (popup->editor->view, NULL); view_size = gimp_container_view_get_view_size (popup->editor->view, NULL);
gimp_container_popup_set_view_size (popup, view_size * 0.8); gimp_container_popup_set_view_size (popup, gimp_view_size_get_smaller (view_size));
} }
static void static void
@ -377,7 +378,7 @@ gimp_container_popup_larger_clicked (GtkWidget *button,
view_size = gimp_container_view_get_view_size (popup->editor->view, NULL); view_size = gimp_container_view_get_view_size (popup->editor->view, NULL);
gimp_container_popup_set_view_size (popup, view_size * 1.2); gimp_container_popup_set_view_size (popup, gimp_view_size_get_larger (view_size));
} }
static void static void

View file

@ -80,9 +80,9 @@ GimpViewType gimp_container_popup_get_view_type (GimpContainerPopup *popup);
void gimp_container_popup_set_view_type (GimpContainerPopup *popup, void gimp_container_popup_set_view_type (GimpContainerPopup *popup,
GimpViewType view_type); GimpViewType view_type);
gint gimp_container_popup_get_view_size (GimpContainerPopup *popup); GimpViewSize gimp_container_popup_get_view_size (GimpContainerPopup *popup);
void gimp_container_popup_set_view_size (GimpContainerPopup *popup, void gimp_container_popup_set_view_size (GimpContainerPopup *popup,
gint view_size); GimpViewSize view_size);
#endif /* __GIMP_CONTAINER_POPUP_H__ */ #endif /* __GIMP_CONTAINER_POPUP_H__ */

View file

@ -351,7 +351,7 @@ gimp_viewable_button_get_view_size (GimpViewableButton *button)
void void
gimp_viewable_button_set_view_size (GimpViewableButton *button, gimp_viewable_button_set_view_size (GimpViewableButton *button,
gint view_size) GimpViewSize view_size)
{ {
g_return_if_fail (GIMP_IS_VIEWABLE_BUTTON (button)); g_return_if_fail (GIMP_IS_VIEWABLE_BUTTON (button));

View file

@ -78,7 +78,7 @@ void gimp_viewable_button_set_view_type (GimpViewableButton *button,
gint gimp_viewable_button_get_view_size (GimpViewableButton *button); gint gimp_viewable_button_get_view_size (GimpViewableButton *button);
void gimp_viewable_button_set_view_size (GimpViewableButton *button, void gimp_viewable_button_set_view_size (GimpViewableButton *button,
gint view_size); GimpViewSize view_size);
#endif /* __GIMP_VIEWABLE_BUTTON_H__ */ #endif /* __GIMP_VIEWABLE_BUTTON_H__ */