mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-04 01:43:24 +00:00
app: add gimp_drawable_raise,lower_filter()
and move code there from gimpitemtreeview.c
This commit is contained in:
parent
fb199fba34
commit
a790dc3253
3 changed files with 108 additions and 61 deletions
|
@ -143,6 +143,81 @@ gimp_drawable_has_filter (GimpDrawable *drawable,
|
|||
return filter_exists;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gimp_drawable_raise_filter (GimpDrawable *drawable,
|
||||
GimpFilter *filter)
|
||||
{
|
||||
gint index;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), FALSE);
|
||||
g_return_val_if_fail (GIMP_IS_DRAWABLE_FILTER (filter), FALSE);
|
||||
g_return_val_if_fail (gimp_drawable_has_filter (drawable, filter), FALSE);
|
||||
|
||||
if (gimp_drawable_filter_get_mask (GIMP_DRAWABLE_FILTER (filter)) == NULL)
|
||||
return FALSE;
|
||||
|
||||
index = gimp_container_get_child_index (drawable->private->filter_stack,
|
||||
GIMP_OBJECT (filter));
|
||||
index--;
|
||||
|
||||
if (index >= 0)
|
||||
{
|
||||
gimp_image_undo_push_filter_reorder (gimp_item_get_image (GIMP_ITEM (drawable)),
|
||||
_("Reorder filter"),
|
||||
drawable,
|
||||
GIMP_DRAWABLE_FILTER (filter));
|
||||
|
||||
gimp_container_reorder (drawable->private->filter_stack,
|
||||
GIMP_OBJECT (filter), index);
|
||||
|
||||
gimp_item_refresh_filters (GIMP_ITEM (drawable));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gimp_drawable_lower_filter (GimpDrawable *drawable,
|
||||
GimpFilter *filter)
|
||||
{
|
||||
gint index;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), FALSE);
|
||||
g_return_val_if_fail (GIMP_IS_DRAWABLE_FILTER (filter), FALSE);
|
||||
g_return_val_if_fail (gimp_drawable_has_filter (drawable, filter), FALSE);
|
||||
|
||||
if (gimp_drawable_filter_get_mask (GIMP_DRAWABLE_FILTER (filter)) == NULL)
|
||||
return FALSE;
|
||||
|
||||
index = gimp_container_get_child_index (drawable->private->filter_stack,
|
||||
GIMP_OBJECT (filter));
|
||||
index++;
|
||||
|
||||
if (index < gimp_container_get_n_children (drawable->private->filter_stack))
|
||||
{
|
||||
/* Don't rearrange filters with floating selection */
|
||||
if (! GIMP_IS_DRAWABLE_FILTER (gimp_container_get_child_by_index (drawable->private->filter_stack,
|
||||
index)))
|
||||
return FALSE;
|
||||
|
||||
gimp_image_undo_push_filter_reorder (gimp_item_get_image (GIMP_ITEM (drawable)),
|
||||
_("Reorder filter"),
|
||||
drawable,
|
||||
GIMP_DRAWABLE_FILTER (filter));
|
||||
|
||||
gimp_container_reorder (drawable->private->filter_stack,
|
||||
GIMP_OBJECT (filter), index);
|
||||
|
||||
gimp_item_refresh_filters (GIMP_ITEM (drawable));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
gimp_drawable_merge_filters (GimpDrawable *drawable)
|
||||
{
|
||||
|
|
|
@ -42,6 +42,11 @@ void gimp_drawable_clear_filters (GimpDrawable *drawable);
|
|||
gboolean gimp_drawable_has_filter (GimpDrawable *drawable,
|
||||
GimpFilter *filter);
|
||||
|
||||
gboolean gimp_drawable_raise_filter (GimpDrawable *drawable,
|
||||
GimpFilter *filter);
|
||||
gboolean gimp_drawable_lower_filter (GimpDrawable *drawable,
|
||||
GimpFilter *filter);
|
||||
|
||||
void gimp_drawable_merge_filters (GimpDrawable *drawable);
|
||||
gboolean gimp_drawable_merge_filter (GimpDrawable *drawable,
|
||||
GimpFilter *filter,
|
||||
|
|
|
@ -2710,10 +2710,8 @@ gimp_item_tree_view_effects_raise_clicked (GtkWidget *widget,
|
|||
GimpItemTreeView *view)
|
||||
{
|
||||
GimpImage *image = view->priv->image;
|
||||
GimpDrawable *drawable = NULL;
|
||||
|
||||
if (! view->priv->effects_filter ||
|
||||
! GIMP_IS_DRAWABLE_FILTER (view->priv->effects_filter))
|
||||
if (! GIMP_IS_DRAWABLE_FILTER (view->priv->effects_filter))
|
||||
return;
|
||||
|
||||
if (gimp_drawable_filter_get_mask (view->priv->effects_filter) == NULL)
|
||||
|
@ -2723,36 +2721,24 @@ gimp_item_tree_view_effects_raise_clicked (GtkWidget *widget,
|
|||
return;
|
||||
}
|
||||
|
||||
drawable = gimp_drawable_filter_get_drawable (view->priv->effects_filter);
|
||||
if (drawable)
|
||||
if (gimp_drawable_raise_filter (view->priv->effects_drawable,
|
||||
GIMP_FILTER (view->priv->effects_filter)))
|
||||
{
|
||||
GimpContainer *filters;
|
||||
gint index;
|
||||
|
||||
filters = gimp_drawable_get_filters (drawable);
|
||||
|
||||
index = gimp_container_get_child_index (filters,
|
||||
GIMP_OBJECT (view->priv->effects_filter));
|
||||
index--;
|
||||
|
||||
if (index >= 0)
|
||||
{
|
||||
gimp_image_undo_push_filter_reorder (image, _("Reorder filter"),
|
||||
drawable,
|
||||
view->priv->effects_filter);
|
||||
|
||||
gimp_container_reorder (filters, GIMP_OBJECT (view->priv->effects_filter),
|
||||
index);
|
||||
|
||||
if (gtk_widget_get_sensitive (view->priv->effects_edit_button))
|
||||
{
|
||||
GimpContainer *container;
|
||||
gint index;
|
||||
|
||||
container =
|
||||
gimp_drawable_get_filters (GIMP_DRAWABLE (view->priv->effects_drawable));
|
||||
|
||||
index = gimp_container_get_child_index (container,
|
||||
GIMP_OBJECT (view->priv->effects_filter));
|
||||
|
||||
gtk_widget_set_sensitive (view->priv->effects_lower_button, TRUE);
|
||||
if (index == 0)
|
||||
gtk_widget_set_sensitive (view->priv->effects_raise_button, FALSE);
|
||||
}
|
||||
|
||||
gimp_item_refresh_filters (GIMP_ITEM (view->priv->effects_drawable));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2761,10 +2747,8 @@ gimp_item_tree_view_effects_lower_clicked (GtkWidget *widget,
|
|||
GimpItemTreeView *view)
|
||||
{
|
||||
GimpImage *image = view->priv->image;
|
||||
GimpDrawable *drawable = NULL;
|
||||
|
||||
if (! view->priv->effects_filter ||
|
||||
! GIMP_IS_DRAWABLE_FILTER (view->priv->effects_filter))
|
||||
if (! GIMP_IS_DRAWABLE_FILTER (view->priv->effects_filter))
|
||||
return;
|
||||
|
||||
if (gimp_drawable_filter_get_mask (view->priv->effects_filter) == NULL)
|
||||
|
@ -2774,40 +2758,23 @@ gimp_item_tree_view_effects_lower_clicked (GtkWidget *widget,
|
|||
return;
|
||||
}
|
||||
|
||||
drawable = gimp_drawable_filter_get_drawable (view->priv->effects_filter);
|
||||
if (drawable)
|
||||
if (gimp_drawable_lower_filter (view->priv->effects_drawable,
|
||||
GIMP_FILTER (view->priv->effects_filter)))
|
||||
{
|
||||
GimpContainer *filters;
|
||||
gint index;
|
||||
|
||||
filters = gimp_drawable_get_filters (drawable);
|
||||
|
||||
index = gimp_container_get_child_index (filters,
|
||||
GIMP_OBJECT (view->priv->effects_filter));
|
||||
index++;
|
||||
|
||||
if (index < gimp_container_get_n_children (filters))
|
||||
{
|
||||
/* Don't rearrange filters with floating selection */
|
||||
if (! GIMP_IS_DRAWABLE_FILTER (
|
||||
gimp_container_get_child_by_index (filters, index)))
|
||||
return;
|
||||
|
||||
gimp_image_undo_push_filter_reorder (image, _("Reorder filter"),
|
||||
drawable,
|
||||
view->priv->effects_filter);
|
||||
|
||||
gimp_container_reorder (filters, GIMP_OBJECT (view->priv->effects_filter),
|
||||
index);
|
||||
|
||||
if (gtk_widget_get_sensitive (view->priv->effects_edit_button))
|
||||
{
|
||||
gtk_widget_set_sensitive (view->priv->effects_raise_button, TRUE);
|
||||
if (index == gimp_container_get_n_children (filters) - 1)
|
||||
gtk_widget_set_sensitive (view->priv->effects_lower_button, FALSE);
|
||||
}
|
||||
GimpContainer *container;
|
||||
gint index;
|
||||
|
||||
gimp_item_refresh_filters (GIMP_ITEM (drawable));
|
||||
container =
|
||||
gimp_drawable_get_filters (GIMP_DRAWABLE (view->priv->effects_drawable));
|
||||
|
||||
index = gimp_container_get_child_index (container,
|
||||
GIMP_OBJECT (view->priv->effects_filter));
|
||||
|
||||
gtk_widget_set_sensitive (view->priv->effects_raise_button, TRUE);
|
||||
if (index == gimp_container_get_n_children (container) - 1)
|
||||
gtk_widget_set_sensitive (view->priv->effects_lower_button, FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue