mirror of https://github.com/GNOME/gimp.git
app: more "select-item" signal handlers changed to "select-items" ones.
This commit is contained in:
parent
4b681eb448
commit
2a404cb41d
|
@ -62,8 +62,8 @@ static void layer_add_mask_dialog_response (GtkWidget *di
|
|||
gint response_id,
|
||||
LayerAddMaskDialog *private);
|
||||
static gboolean layer_add_mask_dialog_channel_selected (GimpContainerView *view,
|
||||
GimpViewable *viewable,
|
||||
gpointer insert_data,
|
||||
GList *viewables,
|
||||
GList *paths,
|
||||
LayerAddMaskDialog *dialog);
|
||||
|
||||
|
||||
|
@ -165,7 +165,7 @@ layer_add_mask_dialog_new (GList *layers,
|
|||
GIMP_ADD_MASK_CHANNEL, TRUE);
|
||||
gtk_widget_show (combo);
|
||||
|
||||
g_signal_connect (combo, "select-item",
|
||||
g_signal_connect (combo, "select-items",
|
||||
G_CALLBACK (layer_add_mask_dialog_channel_selected),
|
||||
private);
|
||||
|
||||
|
@ -231,11 +231,13 @@ layer_add_mask_dialog_response (GtkWidget *dialog,
|
|||
|
||||
static gboolean
|
||||
layer_add_mask_dialog_channel_selected (GimpContainerView *view,
|
||||
GimpViewable *viewable,
|
||||
gpointer insert_data,
|
||||
GList *viewables,
|
||||
GList *paths,
|
||||
LayerAddMaskDialog *private)
|
||||
{
|
||||
private->channel = GIMP_CHANNEL (viewable);
|
||||
g_return_val_if_fail (g_list_length (viewables) < 2, FALSE);
|
||||
|
||||
private->channel = viewables? GIMP_CHANNEL (viewables->data) : NULL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -514,20 +514,24 @@ prefs_path_reset (GtkWidget *widget,
|
|||
gimp_config_reset_property (config, writable_property);
|
||||
}
|
||||
|
||||
static void
|
||||
static gboolean
|
||||
prefs_template_select_callback (GimpContainerView *view,
|
||||
GimpTemplate *template,
|
||||
gpointer insert_data,
|
||||
GList *templates,
|
||||
GList *paths,
|
||||
GimpTemplate *edit_template)
|
||||
{
|
||||
if (template)
|
||||
g_return_val_if_fail (g_list_length (templates) < 2, FALSE);
|
||||
|
||||
if (templates)
|
||||
{
|
||||
/* make sure the resolution values are copied first (see bug #546924) */
|
||||
gimp_config_sync (G_OBJECT (template), G_OBJECT (edit_template),
|
||||
gimp_config_sync (G_OBJECT (templates->data), G_OBJECT (edit_template),
|
||||
GIMP_TEMPLATE_PARAM_COPY_FIRST);
|
||||
gimp_config_sync (G_OBJECT (template), G_OBJECT (edit_template),
|
||||
gimp_config_sync (G_OBJECT (templates->data), G_OBJECT (edit_template),
|
||||
0);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1795,9 +1799,9 @@ prefs_dialog_new (Gimp *gimp,
|
|||
_("_Template:"), 0.0, 0.5,
|
||||
combo, 1);
|
||||
|
||||
gimp_container_view_select_item (GIMP_CONTAINER_VIEW (combo), NULL);
|
||||
gimp_container_view_select_items (GIMP_CONTAINER_VIEW (combo), NULL);
|
||||
|
||||
g_signal_connect (combo, "select-item",
|
||||
g_signal_connect (combo, "select-items",
|
||||
G_CALLBACK (prefs_template_select_callback),
|
||||
core_config->default_image);
|
||||
}
|
||||
|
|
|
@ -403,7 +403,29 @@ gimp_container_combo_box_select_items (GimpContainerView *view,
|
|||
|
||||
if (viewables)
|
||||
{
|
||||
gimp_container_view_item_selected (view, viewables->data);
|
||||
GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (view));
|
||||
GtkTreeIter iter;
|
||||
gboolean iter_valid;
|
||||
|
||||
for (iter_valid = gtk_tree_model_get_iter_first (model, &iter);
|
||||
iter_valid;
|
||||
iter_valid = gtk_tree_model_iter_next (model, &iter))
|
||||
{
|
||||
GimpViewRenderer *renderer;
|
||||
|
||||
gtk_tree_model_get (model, &iter,
|
||||
GIMP_CONTAINER_TREE_STORE_COLUMN_RENDERER, &renderer,
|
||||
-1);
|
||||
|
||||
if (renderer->viewable == viewables->data)
|
||||
{
|
||||
gtk_combo_box_set_active_iter (combo_box, &iter);
|
||||
g_object_unref (renderer);
|
||||
|
||||
break;
|
||||
}
|
||||
g_object_unref (renderer);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -399,7 +399,7 @@ gimp_container_view_real_set_container (GimpContainerView *view,
|
|||
if (private->context)
|
||||
gimp_container_view_disconnect_context (view);
|
||||
|
||||
gimp_container_view_select_item (view, NULL);
|
||||
gimp_container_view_select_items (view, NULL);
|
||||
|
||||
/* freeze/thaw is only supported for the toplevel container */
|
||||
g_signal_handlers_disconnect_by_func (private->container,
|
||||
|
@ -651,26 +651,25 @@ gimp_container_view_select_items (GimpContainerView *view,
|
|||
return success;
|
||||
}
|
||||
|
||||
/* Mostly a convenience function calling the more generic
|
||||
* gimp_container_view_select_items().
|
||||
* This is to be used when you want to select one viewable only (or
|
||||
* because the container this is called from only handles single
|
||||
* selection anyway).
|
||||
*/
|
||||
gboolean
|
||||
gimp_container_view_select_item (GimpContainerView *view,
|
||||
GimpViewable *viewable)
|
||||
{
|
||||
GimpContainerViewPrivate *private;
|
||||
gboolean success = FALSE;
|
||||
gpointer insert_data;
|
||||
GList *viewables = NULL;
|
||||
gboolean success;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_CONTAINER_VIEW (view), FALSE);
|
||||
g_return_val_if_fail (viewable == NULL || GIMP_IS_VIEWABLE (viewable), FALSE);
|
||||
if (viewable)
|
||||
viewables = g_list_prepend (viewables, viewable);
|
||||
|
||||
private = GIMP_CONTAINER_VIEW_GET_PRIVATE (view);
|
||||
success = gimp_container_view_select_items (view, viewables);
|
||||
|
||||
if (gimp_container_frozen (private->container))
|
||||
return TRUE;
|
||||
|
||||
insert_data = g_hash_table_lookup (private->item_hash, viewable);
|
||||
|
||||
g_signal_emit (view, view_signals[SELECT_ITEM], 0,
|
||||
viewable, insert_data, &success);
|
||||
g_list_free (viewables);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
|
|
@ -2036,15 +2036,13 @@ gimp_item_tree_view_row_expanded (GtkTreeView *tree_view,
|
|||
GimpItemTreeView *item_view)
|
||||
{
|
||||
GimpItemTreeViewClass *item_view_class;
|
||||
GimpItem *active_item;
|
||||
GList *selected_items;
|
||||
GList *list;
|
||||
|
||||
item_view_class = GIMP_ITEM_TREE_VIEW_GET_CLASS (item_view);
|
||||
active_item = item_view_class->get_active_item (item_view->priv->image);
|
||||
selected_items = item_view_class->get_selected_items (item_view->priv->image);
|
||||
|
||||
/* don't select the item while it is being inserted */
|
||||
if (active_item &&
|
||||
gimp_container_view_lookup (GIMP_CONTAINER_VIEW (item_view),
|
||||
GIMP_VIEWABLE (active_item)))
|
||||
if (selected_items)
|
||||
{
|
||||
GimpViewRenderer *renderer;
|
||||
GimpItem *expanded_item;
|
||||
|
@ -2055,14 +2053,22 @@ gimp_item_tree_view_row_expanded (GtkTreeView *tree_view,
|
|||
expanded_item = GIMP_ITEM (renderer->viewable);
|
||||
g_object_unref (renderer);
|
||||
|
||||
/* select the active item only if it was made visible by expanding
|
||||
* its immediate parent. See bug #666561.
|
||||
*/
|
||||
if (gimp_item_get_parent (active_item) == expanded_item)
|
||||
for (list = selected_items; list; list = list->next)
|
||||
{
|
||||
gimp_container_view_select_item (GIMP_CONTAINER_VIEW (item_view),
|
||||
GIMP_VIEWABLE (active_item));
|
||||
/* don't select an item while it is being inserted */
|
||||
if (! gimp_container_view_lookup (GIMP_CONTAINER_VIEW (item_view),
|
||||
list->data))
|
||||
return;
|
||||
|
||||
/* select items only if they were made visible by expanding
|
||||
* their immediate parent. See bug #666561.
|
||||
*/
|
||||
if (gimp_item_get_parent (list->data) != expanded_item)
|
||||
return;
|
||||
}
|
||||
|
||||
gimp_container_view_select_items (GIMP_CONTAINER_VIEW (item_view),
|
||||
selected_items);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -968,5 +968,5 @@ gimp_settings_box_unset (GimpSettingsBox *box)
|
|||
|
||||
private = GET_PRIVATE (box);
|
||||
|
||||
gimp_container_view_select_item (GIMP_CONTAINER_VIEW (private->combo), NULL);
|
||||
gimp_container_view_select_items (GIMP_CONTAINER_VIEW (private->combo), NULL);
|
||||
}
|
||||
|
|
|
@ -387,7 +387,7 @@ gimp_tool_editor_drop_viewables (GimpContainerTreeView *tree_view,
|
|||
drop_pos);
|
||||
|
||||
if (src_viewables)
|
||||
gimp_container_view_select_item (container_view, src_viewables->data);
|
||||
gimp_container_view_select_items (container_view, src_viewables);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -72,9 +72,9 @@ static void gimp_undo_editor_undo_event (GimpImage *image,
|
|||
GimpUndo *undo,
|
||||
GimpUndoEditor *editor);
|
||||
|
||||
static void gimp_undo_editor_select_item (GimpContainerView *view,
|
||||
GimpUndo *undo,
|
||||
gpointer insert_data,
|
||||
static gboolean gimp_undo_editor_select_items (GimpContainerView *view,
|
||||
GList *undos,
|
||||
GList *paths,
|
||||
GimpUndoEditor *editor);
|
||||
|
||||
|
||||
|
@ -138,8 +138,8 @@ gimp_undo_editor_constructed (GObject *object)
|
|||
gtk_box_pack_start (GTK_BOX (undo_editor), undo_editor->view, TRUE, TRUE, 0);
|
||||
gtk_widget_show (undo_editor->view);
|
||||
|
||||
g_signal_connect (undo_editor->view, "select-item",
|
||||
G_CALLBACK (gimp_undo_editor_select_item),
|
||||
g_signal_connect (undo_editor->view, "select-items",
|
||||
G_CALLBACK (gimp_undo_editor_select_items),
|
||||
undo_editor);
|
||||
|
||||
undo_editor->undo_button =
|
||||
|
@ -299,7 +299,7 @@ gimp_undo_editor_fill (GimpUndoEditor *editor)
|
|||
top_undo_item = gimp_undo_stack_peek (undo_stack);
|
||||
|
||||
g_signal_handlers_block_by_func (editor->view,
|
||||
gimp_undo_editor_select_item,
|
||||
gimp_undo_editor_select_items,
|
||||
editor);
|
||||
|
||||
/* select the current state of the image */
|
||||
|
@ -317,7 +317,7 @@ gimp_undo_editor_fill (GimpUndoEditor *editor)
|
|||
}
|
||||
|
||||
g_signal_handlers_unblock_by_func (editor->view,
|
||||
gimp_undo_editor_select_item,
|
||||
gimp_undo_editor_select_items,
|
||||
editor);
|
||||
}
|
||||
|
||||
|
@ -347,7 +347,7 @@ gimp_undo_editor_undo_event (GimpImage *image,
|
|||
{
|
||||
case GIMP_UNDO_EVENT_UNDO_PUSHED:
|
||||
g_signal_handlers_block_by_func (editor->view,
|
||||
gimp_undo_editor_select_item,
|
||||
gimp_undo_editor_select_items,
|
||||
editor);
|
||||
|
||||
gimp_container_insert (editor->container, GIMP_OBJECT (undo), -1);
|
||||
|
@ -356,7 +356,7 @@ gimp_undo_editor_undo_event (GimpImage *image,
|
|||
gimp_undo_create_preview (undo, editor->context, FALSE);
|
||||
|
||||
g_signal_handlers_unblock_by_func (editor->view,
|
||||
gimp_undo_editor_select_item,
|
||||
gimp_undo_editor_select_items,
|
||||
editor);
|
||||
break;
|
||||
|
||||
|
@ -368,7 +368,7 @@ gimp_undo_editor_undo_event (GimpImage *image,
|
|||
case GIMP_UNDO_EVENT_UNDO:
|
||||
case GIMP_UNDO_EVENT_REDO:
|
||||
g_signal_handlers_block_by_func (editor->view,
|
||||
gimp_undo_editor_select_item,
|
||||
gimp_undo_editor_select_items,
|
||||
editor);
|
||||
|
||||
if (top_undo_item)
|
||||
|
@ -385,7 +385,7 @@ gimp_undo_editor_undo_event (GimpImage *image,
|
|||
}
|
||||
|
||||
g_signal_handlers_unblock_by_func (editor->view,
|
||||
gimp_undo_editor_select_item,
|
||||
gimp_undo_editor_select_items,
|
||||
editor);
|
||||
break;
|
||||
|
||||
|
@ -404,19 +404,24 @@ gimp_undo_editor_undo_event (GimpImage *image,
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_undo_editor_select_item (GimpContainerView *view,
|
||||
GimpUndo *undo,
|
||||
gpointer insert_data,
|
||||
GimpUndoEditor *editor)
|
||||
static gboolean
|
||||
gimp_undo_editor_select_items (GimpContainerView *view,
|
||||
GList *undos,
|
||||
GList *paths,
|
||||
GimpUndoEditor *editor)
|
||||
{
|
||||
GimpImage *image = GIMP_IMAGE_EDITOR (editor)->image;
|
||||
GimpUndoStack *undo_stack = gimp_image_get_undo_stack (image);
|
||||
GimpUndoStack *redo_stack = gimp_image_get_redo_stack (image);
|
||||
GimpUndo *top_undo_item;
|
||||
GimpUndo *undo;
|
||||
|
||||
if (! undo)
|
||||
return;
|
||||
g_return_val_if_fail (g_list_length (undos) < 2, FALSE);
|
||||
|
||||
if (! undos)
|
||||
return TRUE;
|
||||
|
||||
undo = undos->data;
|
||||
|
||||
top_undo_item = gimp_undo_stack_peek (undo_stack);
|
||||
|
||||
|
@ -460,4 +465,6 @@ gimp_undo_editor_select_item (GimpContainerView *view,
|
|||
}
|
||||
|
||||
gimp_image_flush (image);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue