[gthumb] sharpen tool: center the preview after activation
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] sharpen tool: center the preview after activation
- Date: Sun, 16 Sep 2012 17:53:07 +0000 (UTC)
commit e01685a03953a71fe17d0a267522320bbf7aa790
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sun Sep 16 16:55:55 2012 +0200
sharpen tool: center the preview after activation
extensions/file_tools/gth-file-tool-sharpen.c | 24 ++++++++++++++++++++++++
gthumb/gth-image-viewer.c | 17 +++++++++++++++++
gthumb/gth-image-viewer.h | 1 +
3 files changed, 42 insertions(+), 0 deletions(-)
---
diff --git a/extensions/file_tools/gth-file-tool-sharpen.c b/extensions/file_tools/gth-file-tool-sharpen.c
index d5872a2..6b20b0a 100644
--- a/extensions/file_tools/gth-file-tool-sharpen.c
+++ b/extensions/file_tools/gth-file-tool-sharpen.c
@@ -47,6 +47,7 @@ struct _GthFileToolSharpenPrivate {
GthTask *pixbuf_task;
guint apply_event;
gboolean show_preview;
+ gboolean first_allocation;
};
@@ -213,6 +214,9 @@ apply_cb (gpointer user_data)
w = MIN (gtk_adjustment_get_page_size (preview->hadj), cairo_image_surface_get_width (self->priv->source));
h = MIN (gtk_adjustment_get_page_size (preview->vadj), cairo_image_surface_get_height (self->priv->source));
+ if ((w < 0) || (h < 0))
+ return FALSE;
+
cairo_surface_destroy (self->priv->destination);
self->priv->destination = _cairo_image_surface_copy (self->priv->source);
@@ -267,6 +271,21 @@ preview_checkbutton_toggled_cb (GtkToggleButton *toggle_button,
}
+static void
+preview_size_allocate_cb (GtkWidget *widget,
+ GdkRectangle *allocation,
+ gpointer user_data)
+{
+ GthFileToolSharpen *self = user_data;
+
+ if (! self->priv->first_allocation)
+ return;
+ self->priv->first_allocation = FALSE;
+
+ gth_image_viewer_scroll_to_center (GTH_IMAGE_VIEWER (self->priv->preview));
+}
+
+
static GtkWidget *
gth_file_tool_sharpen_get_options (GthFileTool *base)
{
@@ -293,6 +312,7 @@ gth_file_tool_sharpen_get_options (GthFileTool *base)
return NULL;
self->priv->destination = NULL;
+ self->priv->first_allocation = TRUE;
self->priv->builder = _gtk_builder_new_from_file ("sharpen-options.ui", "file_tools");
options = _gtk_builder_get_widget (self->priv->builder, "options");
@@ -358,6 +378,10 @@ gth_file_tool_sharpen_get_options (GthFileTool *base)
"clicked",
G_CALLBACK (preview_checkbutton_toggled_cb),
self);
+ g_signal_connect_after (self->priv->preview,
+ "size-allocate",
+ G_CALLBACK (preview_size_allocate_cb),
+ self);
return options;
}
diff --git a/gthumb/gth-image-viewer.c b/gthumb/gth-image-viewer.c
index 4ab7859..4327774 100644
--- a/gthumb/gth-image-viewer.c
+++ b/gthumb/gth-image-viewer.c
@@ -2293,6 +2293,23 @@ gth_image_viewer_scroll_to (GthImageViewer *self,
void
+gth_image_viewer_scroll_to_center (GthImageViewer *self)
+{
+ int zoomed_width;
+ int zoomed_height;
+ int visible_width;
+ int visible_height;
+
+ _gth_image_viewer_get_zoomed_size (self, &zoomed_width, &zoomed_height);
+ _gth_image_viewer_get_visible_area_size (self, &visible_width, &visible_height);
+
+ gth_image_viewer_scroll_to (self,
+ (zoomed_width - visible_width) / 2,
+ (zoomed_height - visible_height) / 2);
+}
+
+
+void
gth_image_viewer_scroll_step_x (GthImageViewer *self,
gboolean increment)
{
diff --git a/gthumb/gth-image-viewer.h b/gthumb/gth-image-viewer.h
index 2dae86e..8100235 100644
--- a/gthumb/gth-image-viewer.h
+++ b/gthumb/gth-image-viewer.h
@@ -252,6 +252,7 @@ void gth_image_viewer_set_tool (GthImageViewer
void gth_image_viewer_scroll_to (GthImageViewer *viewer,
int x_offset,
int y_offset);
+void gth_image_viewer_scroll_to_center (GthImageViewer *viewer);
void gth_image_viewer_scroll_step_x (GthImageViewer *viewer,
gboolean increment);
void gth_image_viewer_scroll_step_y (GthImageViewer *viewer,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]