[gimp] Bug 734573 - Zoom to selection



commit 91fbc3af014378a5ac50d37bd3c19d1e7c1a543c
Author: Michael Natterer <mitch gimp org>
Date:   Sun Oct 18 15:26:17 2015 +0200

    Bug 734573 - Zoom to selection
    
    Implement View -> Zoom -> Zoom to Selection using
    gimp_display_shell_scale_to_rectangle()

 app/actions/view-actions.c  |    7 +++++++
 app/actions/view-commands.c |   19 +++++++++++++++++++
 app/actions/view-commands.h |    2 ++
 app/widgets/gimphelp-ids.h  |    1 +
 menus/image-menu.xml.in     |    1 +
 5 files changed, 30 insertions(+), 0 deletions(-)
---
diff --git a/app/actions/view-actions.c b/app/actions/view-actions.c
index 06bfcd5..6efcd9d 100644
--- a/app/actions/view-actions.c
+++ b/app/actions/view-actions.c
@@ -98,6 +98,12 @@ static const GimpActionEntry view_actions[] =
     G_CALLBACK (view_zoom_fill_cmd_callback),
     GIMP_HELP_VIEW_ZOOM_FILL },
 
+  { "view-zoom-selection", "gimp-selection",
+    NC_("view-action", "Zoom to _Selection"), NULL,
+    NC_("view-action", "Adjust the zoom ratio so that the selection fills the window"),
+    G_CALLBACK (view_zoom_selection_cmd_callback),
+    GIMP_HELP_VIEW_ZOOM_SELECTION },
+
   { "view-zoom-revert", NULL,
     NC_("view-action", "Re_vert Zoom"), "grave",
     NC_("view-action", "Restore the previous zoom level"),
@@ -692,6 +698,7 @@ view_actions_update (GimpActionGroup *group,
 
   SET_SENSITIVE ("view-zoom-fit-in",     image);
   SET_SENSITIVE ("view-zoom-fill",       image);
+  SET_SENSITIVE ("view-zoom-selection",  image);
   SET_SENSITIVE ("view-zoom-revert",     image);
 
   SET_SENSITIVE ("view-zoom-16-1",       image);
diff --git a/app/actions/view-commands.c b/app/actions/view-commands.c
index 921cdfd..8662696 100644
--- a/app/actions/view-commands.c
+++ b/app/actions/view-commands.c
@@ -135,6 +135,25 @@ view_zoom_fill_cmd_callback (GtkAction *action,
 }
 
 void
+view_zoom_selection_cmd_callback (GtkAction *action,
+                                  gpointer   data)
+{
+  GimpDisplay *display;
+  GimpImage   *image;
+  gint         x, y, width, height;
+  return_if_no_display (display, data);
+  return_if_no_image (image, data);
+
+  gimp_item_bounds (GIMP_ITEM (gimp_image_get_mask (image)),
+                    &x, &y, &width, &height);
+
+  gimp_display_shell_scale_to_rectangle (gimp_display_get_shell (display),
+                                         GIMP_ZOOM_IN,
+                                         x, y, width, height,
+                                         FALSE);
+}
+
+void
 view_zoom_revert_cmd_callback (GtkAction *action,
                                gpointer   data)
 {
diff --git a/app/actions/view-commands.h b/app/actions/view-commands.h
index b58b28e..df79065 100644
--- a/app/actions/view-commands.h
+++ b/app/actions/view-commands.h
@@ -28,6 +28,8 @@ void   view_zoom_fit_in_cmd_callback           (GtkAction *action,
                                                 gpointer   data);
 void   view_zoom_fill_cmd_callback             (GtkAction *action,
                                                 gpointer   data);
+void   view_zoom_selection_cmd_callback        (GtkAction *action,
+                                                gpointer   data);
 void   view_zoom_revert_cmd_callback           (GtkAction *action,
                                                 gpointer   data);
 void   view_zoom_cmd_callback                  (GtkAction *action,
diff --git a/app/widgets/gimphelp-ids.h b/app/widgets/gimphelp-ids.h
index 481de1c..e0e9423 100644
--- a/app/widgets/gimphelp-ids.h
+++ b/app/widgets/gimphelp-ids.h
@@ -86,6 +86,7 @@
 #define GIMP_HELP_VIEW_ZOOM_100                   "gimp-view-zoom-100"
 #define GIMP_HELP_VIEW_ZOOM_FIT_IN                "gimp-view-zoom-fit-in"
 #define GIMP_HELP_VIEW_ZOOM_FILL                  "gimp-view-zoom-fill"
+#define GIMP_HELP_VIEW_ZOOM_SELECTION             "gimp-view-zoom-selection"
 #define GIMP_HELP_VIEW_ZOOM_OTHER                 "gimp-view-zoom-other"
 #define GIMP_HELP_VIEW_ROTATE_RESET               "gimp-view-rotate-reset"
 #define GIMP_HELP_VIEW_ROTATE_15                  "gimp-view-rotate-15"
diff --git a/menus/image-menu.xml.in b/menus/image-menu.xml.in
index b96baf4..5777f06 100644
--- a/menus/image-menu.xml.in
+++ b/menus/image-menu.xml.in
@@ -260,6 +260,7 @@
         <menuitem action="view-zoom-in" />
         <menuitem action="view-zoom-fit-in" />
         <menuitem action="view-zoom-fill" />
+        <menuitem action="view-zoom-selection" />
         <separator />
         <menuitem action="view-zoom-16-1" />
         <menuitem action="view-zoom-8-1" />


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]