From e9b2b1ad7b98a6ac26ef1936c56fa1725f507f06 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Fri, 8 Aug 2025 17:01:50 +0200 Subject: [PATCH] app: add "gint old_index" argument to GimpContainer::reorder() --- app/actions/file-actions.c | 2 ++ app/actions/windows-actions.c | 4 +++- app/core/gimpcontainer.c | 23 +++++++++++++---------- app/core/gimpcontainer.h | 1 + app/core/gimpdrawablefilter.c | 6 +++++- app/core/gimpdrawablestack.c | 5 ++++- app/core/gimpfilterstack.c | 5 ++++- app/core/gimplayerstack.c | 5 ++++- app/core/gimplist.c | 5 ++++- app/core/gimpmarshal.list | 1 + app/core/gimptreeproxy.c | 2 ++ app/display/gimptoolwidgetgroup.c | 2 ++ app/menus/windows-menu.c | 2 ++ app/widgets/gimpcontainerview-cruft.c | 2 ++ app/widgets/gimptoolbutton.c | 2 ++ app/widgets/gimptoolpalette.c | 12 +++++++----- 16 files changed, 58 insertions(+), 21 deletions(-) diff --git a/app/actions/file-actions.c b/app/actions/file-actions.c index 2e2351d85d..f5ee9fdc31 100644 --- a/app/actions/file-actions.c +++ b/app/actions/file-actions.c @@ -59,6 +59,7 @@ static void file_actions_last_opened_update (GimpContainer *container, static void file_actions_last_opened_reorder (GimpContainer *container, GimpImagefile *unused1, gint unused2, + gint unused3, GimpActionGroup *group); static void file_actions_close_all_update (GimpContainer *images, GimpObject *unused, @@ -434,6 +435,7 @@ static void file_actions_last_opened_reorder (GimpContainer *container, GimpImagefile *unused1, gint unused2, + gint unused3, GimpActionGroup *group) { file_actions_last_opened_update (container, unused1, group); diff --git a/app/actions/windows-actions.c b/app/actions/windows-actions.c index 5e12ce460c..71a742bed7 100644 --- a/app/actions/windows-actions.c +++ b/app/actions/windows-actions.c @@ -59,7 +59,8 @@ static void windows_actions_display_remove (GimpContainer *conta GimpActionGroup *group); static void windows_actions_display_reorder (GimpContainer *container, GimpDisplay *display, - gint position, + gint old_index, + gint new_index, GimpActionGroup *group); static void windows_actions_image_notify (GimpDisplay *display, const GParamSpec *unused, @@ -336,6 +337,7 @@ windows_actions_display_remove (GimpContainer *container, static void windows_actions_display_reorder (GimpContainer *container, GimpDisplay *display, + gint old_index, gint new_index, GimpActionGroup *group) { diff --git a/app/core/gimpcontainer.c b/app/core/gimpcontainer.c index 9594d3dbb6..26b37a4c02 100644 --- a/app/core/gimpcontainer.c +++ b/app/core/gimpcontainer.c @@ -108,6 +108,7 @@ static void gimp_container_real_remove (GimpContainer *container, GimpObject *object); static void gimp_container_real_reorder (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index); static GType gimp_container_get_item_type (GListModel *list); @@ -172,9 +173,10 @@ gimp_container_class_init (GimpContainerClass *klass) G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GimpContainerClass, reorder), NULL, NULL, - gimp_marshal_VOID__OBJECT_INT, - G_TYPE_NONE, 2, + gimp_marshal_VOID__OBJECT_INT_INT, + G_TYPE_NONE, 3, GIMP_TYPE_OBJECT, + G_TYPE_INT, G_TYPE_INT); container_signals[FREEZE] = @@ -363,6 +365,7 @@ gimp_container_real_remove (GimpContainer *container, static void gimp_container_real_reorder (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index) { } @@ -834,7 +837,7 @@ gimp_container_reorder (GimpContainer *container, GimpObject *object, gint new_index) { - gint index; + gint old_index; g_return_val_if_fail (GIMP_IS_CONTAINER (container), FALSE); g_return_val_if_fail (object != NULL, FALSE); @@ -848,19 +851,19 @@ gimp_container_reorder (GimpContainer *container, if (new_index == -1) new_index = container->priv->n_children - 1; - index = gimp_container_get_child_index (container, object); + old_index = gimp_container_get_child_index (container, object); - if (index == -1) + if (old_index == -1) { g_warning ("%s: container %p does not contain object %p", G_STRFUNC, container, object); return FALSE; } - if (index != new_index) + if (old_index != new_index) { g_signal_emit (container, container_signals[REORDER], 0, - object, new_index); + object, old_index, new_index); if (container->priv->freeze_count == 0 && container->priv->suspend_items_changed == 0) @@ -868,9 +871,9 @@ gimp_container_reorder (GimpContainer *container, gint new_index = gimp_container_get_child_index (container, object); g_list_model_items_changed (G_LIST_MODEL (container), - MIN (index, new_index), - ABS (index - new_index) + 1, - ABS (index - new_index) + 1); + MIN (old_index, new_index), + ABS (old_index - new_index) + 1, + ABS (old_index - new_index) + 1); } } diff --git a/app/core/gimpcontainer.h b/app/core/gimpcontainer.h index b1040b92fc..8477071801 100644 --- a/app/core/gimpcontainer.h +++ b/app/core/gimpcontainer.h @@ -56,6 +56,7 @@ struct _GimpContainerClass GimpObject *object); void (* reorder) (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index); void (* freeze) (GimpContainer *container); void (* thaw) (GimpContainer *container); diff --git a/app/core/gimpdrawablefilter.c b/app/core/gimpdrawablefilter.c index 427ed11bf3..72a3e57528 100644 --- a/app/core/gimpdrawablefilter.c +++ b/app/core/gimpdrawablefilter.c @@ -173,6 +173,7 @@ static void gimp_drawable_filter_lock_alpha_changed (GimpLayer static void gimp_drawable_filter_reorder (GimpFilterStack *stack, GimpDrawableFilter *reordered_filter, + gint old_index, gint new_index, GimpDrawableFilter *filter); @@ -2015,6 +2016,7 @@ gimp_drawable_filter_lock_alpha_changed (GimpLayer *layer, static void gimp_drawable_filter_reorder (GimpFilterStack *stack, GimpDrawableFilter *reordered_filter, + gint old_index, gint new_index, GimpDrawableFilter *filter) { @@ -2032,6 +2034,8 @@ gimp_drawable_filter_reorder (GimpFilterStack *stack, * it's organized. */ GIMP_IS_DRAWABLE_FILTER (GIMP_LIST (stack)->queue->head->data)) - gimp_drawable_filter_sync_format (GIMP_LIST (stack)->queue->head->data); + { + gimp_drawable_filter_sync_format (GIMP_LIST (stack)->queue->head->data); + } } } diff --git a/app/core/gimpdrawablestack.c b/app/core/gimpdrawablestack.c index 6e9e07edfd..88a6d13d11 100644 --- a/app/core/gimpdrawablestack.c +++ b/app/core/gimpdrawablestack.c @@ -47,6 +47,7 @@ static void gimp_drawable_stack_remove (GimpContainer *container GimpObject *object); static void gimp_drawable_stack_reorder (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index); static void gimp_drawable_stack_drawable_update (GimpItem *item, @@ -142,11 +143,13 @@ gimp_drawable_stack_remove (GimpContainer *container, static void gimp_drawable_stack_reorder (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index) { GimpDrawableStack *stack = GIMP_DRAWABLE_STACK (container); - GIMP_CONTAINER_CLASS (parent_class)->reorder (container, object, new_index); + GIMP_CONTAINER_CLASS (parent_class)->reorder (container, object, + old_index, new_index); if (gimp_filter_get_active (GIMP_FILTER (object))) gimp_drawable_stack_drawable_active (GIMP_ITEM (object), stack); diff --git a/app/core/gimpfilterstack.c b/app/core/gimpfilterstack.c index 819b8e2d34..dfbb223405 100644 --- a/app/core/gimpfilterstack.c +++ b/app/core/gimpfilterstack.c @@ -40,6 +40,7 @@ static void gimp_filter_stack_remove (GimpContainer *container, GimpObject *object); static void gimp_filter_stack_reorder (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index); static void gimp_filter_stack_add_node (GimpFilterStack *stack, @@ -147,6 +148,7 @@ gimp_filter_stack_remove (GimpContainer *container, static void gimp_filter_stack_reorder (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index) { GimpFilterStack *stack = GIMP_FILTER_STACK (container); @@ -155,7 +157,8 @@ gimp_filter_stack_reorder (GimpContainer *container, if (stack->graph && gimp_filter_get_active (filter)) gimp_filter_stack_remove_node (stack, filter); - GIMP_CONTAINER_CLASS (parent_class)->reorder (container, object, new_index); + GIMP_CONTAINER_CLASS (parent_class)->reorder (container, object, + old_index, new_index); if (gimp_filter_get_active (filter)) { diff --git a/app/core/gimplayerstack.c b/app/core/gimplayerstack.c index 3a5eb8a61b..fce4b6b35b 100644 --- a/app/core/gimplayerstack.c +++ b/app/core/gimplayerstack.c @@ -39,6 +39,7 @@ static void gimp_layer_stack_remove (GimpContainer *container GimpObject *object); static void gimp_layer_stack_reorder (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index); static void gimp_layer_stack_layer_active (GimpLayer *layer, @@ -130,6 +131,7 @@ gimp_layer_stack_remove (GimpContainer *container, static void gimp_layer_stack_reorder (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index) { GimpLayerStack *stack = GIMP_LAYER_STACK (container); @@ -142,7 +144,8 @@ gimp_layer_stack_reorder (GimpContainer *container, if (update_backdrop) index = gimp_container_get_child_index (container, object); - GIMP_CONTAINER_CLASS (parent_class)->reorder (container, object, new_index); + GIMP_CONTAINER_CLASS (parent_class)->reorder (container, object, + old_index, new_index); if (update_backdrop) gimp_layer_stack_update_range (stack, index, new_index); diff --git a/app/core/gimplist.c b/app/core/gimplist.c index b886e0f7e6..358253bc63 100644 --- a/app/core/gimplist.c +++ b/app/core/gimplist.c @@ -61,6 +61,7 @@ static void gimp_list_remove (GimpContainer *conta GimpObject *object); static void gimp_list_reorder (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index); static void gimp_list_clear (GimpContainer *container); static gboolean gimp_list_have (GimpContainer *container, @@ -297,6 +298,7 @@ gimp_list_remove (GimpContainer *container, static void gimp_list_reorder (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index) { GimpList *list = GIMP_LIST (container); @@ -308,7 +310,8 @@ gimp_list_reorder (GimpContainer *container, else g_queue_push_nth (list->queue, object, new_index); - GIMP_CONTAINER_CLASS (parent_class)->reorder (container, object, new_index); + GIMP_CONTAINER_CLASS (parent_class)->reorder (container, object, + old_index, new_index); } static void diff --git a/app/core/gimpmarshal.list b/app/core/gimpmarshal.list index 096a7fb371..7410379b96 100644 --- a/app/core/gimpmarshal.list +++ b/app/core/gimpmarshal.list @@ -50,6 +50,7 @@ VOID: INT, INT, BOOLEAN, BOOLEAN VOID: INT, OBJECT VOID: OBJECT, BOOLEAN VOID: OBJECT, INT +VOID: OBJECT, INT, INT VOID: OBJECT, OBJECT VOID: OBJECT, POINTER VOID: OBJECT, STRING, STRING diff --git a/app/core/gimptreeproxy.c b/app/core/gimptreeproxy.c index fa0724be73..ca62504e19 100644 --- a/app/core/gimptreeproxy.c +++ b/app/core/gimptreeproxy.c @@ -66,6 +66,7 @@ static void gimp_tree_proxy_container_remove (GimpContainer *container, GimpTreeProxy *tree_proxy); static void gimp_tree_proxy_container_reorder (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index, GimpTreeProxy *tree_proxy); static void gimp_tree_proxy_container_freeze (GimpContainer *container, @@ -213,6 +214,7 @@ gimp_tree_proxy_container_remove (GimpContainer *container, static void gimp_tree_proxy_container_reorder (GimpContainer *container, GimpObject *object, + gint old_index, gint new_index, GimpTreeProxy *tree_proxy) { diff --git a/app/display/gimptoolwidgetgroup.c b/app/display/gimptoolwidgetgroup.c index 096a344ca3..98ffd1b293 100644 --- a/app/display/gimptoolwidgetgroup.c +++ b/app/display/gimptoolwidgetgroup.c @@ -99,6 +99,7 @@ static void gimp_tool_widget_group_children_remove (GimpContaine GimpToolWidgetGroup *group); static void gimp_tool_widget_group_children_reorder (GimpContainer *container, GimpToolWidget *child, + gint old_index, gint new_index, GimpToolWidgetGroup *group); @@ -513,6 +514,7 @@ gimp_tool_widget_group_children_remove (GimpContainer *container, static void gimp_tool_widget_group_children_reorder (GimpContainer *container, GimpToolWidget *child, + gint old_index, gint new_index, GimpToolWidgetGroup *group) { diff --git a/app/menus/windows-menu.c b/app/menus/windows-menu.c index b8e84fe59a..3479a8de93 100644 --- a/app/menus/windows-menu.c +++ b/app/menus/windows-menu.c @@ -57,6 +57,7 @@ static void windows_menu_display_remove (GimpContainer *con GimpUIManager *manager); static void windows_menu_display_reorder (GimpContainer *container, GimpDisplay *display, + gint old_index, gint new_index, GimpUIManager *manager); static void windows_menu_image_notify (GimpDisplay *display, @@ -175,6 +176,7 @@ windows_menu_display_remove (GimpContainer *container, static void windows_menu_display_reorder (GimpContainer *container, GimpDisplay *display, + gint old_index, gint new_index, GimpUIManager *manager) { diff --git a/app/widgets/gimpcontainerview-cruft.c b/app/widgets/gimpcontainerview-cruft.c index 56b6dedcd2..0a3fdc166f 100644 --- a/app/widgets/gimpcontainerview-cruft.c +++ b/app/widgets/gimpcontainerview-cruft.c @@ -56,6 +56,7 @@ static void gimp_container_view_remove (GimpContainerView *view, static void gimp_container_view_reorder (GimpContainerView *view, GimpViewable *viewable, + gint old_index, gint new_index, GimpContainer *container); @@ -355,6 +356,7 @@ gimp_container_view_remove (GimpContainerView *view, static void gimp_container_view_reorder (GimpContainerView *view, GimpViewable *viewable, + gint old_index, gint new_index, GimpContainer *container) { diff --git a/app/widgets/gimptoolbutton.c b/app/widgets/gimptoolbutton.c index b960660f64..8da644de77 100644 --- a/app/widgets/gimptoolbutton.c +++ b/app/widgets/gimptoolbutton.c @@ -133,6 +133,7 @@ static void gimp_tool_button_tool_remove (GimpContainer *c GimpToolButton *tool_button); static void gimp_tool_button_tool_reorder (GimpContainer *container, GimpToolInfo *tool_info, + gint old_index, gint new_index, GimpToolButton *tool_button); @@ -788,6 +789,7 @@ gimp_tool_button_tool_remove (GimpContainer *container, static void gimp_tool_button_tool_reorder (GimpContainer *container, GimpToolInfo *tool_info, + gint old_index, gint new_index, GimpToolButton *tool_button) { diff --git a/app/widgets/gimptoolpalette.c b/app/widgets/gimptoolpalette.c index 8df71390e8..30784dcc65 100644 --- a/app/widgets/gimptoolpalette.c +++ b/app/widgets/gimptoolpalette.c @@ -86,7 +86,8 @@ static void gimp_tool_palette_tool_remove (GimpContainer *containe GimpToolPalette *palette); static void gimp_tool_palette_tool_reorder (GimpContainer *container, GimpToolItem *tool_item, - gint index, + gint old_index, + gint new_index, GimpToolPalette *palette); static void gimp_tool_palette_add_button (GimpToolPalette *palette, @@ -430,7 +431,8 @@ gimp_tool_palette_tool_remove (GimpContainer *container, static void gimp_tool_palette_tool_reorder (GimpContainer *container, GimpToolItem *tool_item, - gint index, + gint old_index, + gint new_index, GimpToolPalette *palette) { GimpToolPalettePrivate *private = GET_PRIVATE (palette); @@ -440,9 +442,9 @@ gimp_tool_palette_tool_reorder (GimpContainer *container, if (tool_button) { - gtk_tool_item_group_set_item_position ( - GTK_TOOL_ITEM_GROUP (private->group), - GTK_TOOL_ITEM (tool_button), index); + gtk_tool_item_group_set_item_position + (GTK_TOOL_ITEM_GROUP (private->group), + GTK_TOOL_ITEM (tool_button), new_index); } }