Author: post
Date: 2012-05-04 14:05:57 +0200 (Fri, 04 May 2012)
New Revision: 4220

Modified:
   trunk/src/rs-preview-widget.c
Log:
Set loupe to have the correct orientation, and make it work properly in split 
view.

Modified: trunk/src/rs-preview-widget.c
===================================================================
--- trunk/src/rs-preview-widget.c       2012-05-04 12:04:30 UTC (rev 4219)
+++ trunk/src/rs-preview-widget.c       2012-05-04 12:05:57 UTC (rev 4220)
@@ -204,6 +204,7 @@
        RSFilter *loupe_transform_display;
        RSFilter *loupe_filter_start;
        RSFilter *loupe_filter_end;
+       gint loupe_view;
 
        RSFilter *navigator_filter_scale;
        RSFilter *navigator_transform_input;
@@ -450,6 +451,7 @@
        preview->loupe = rs_loupe_new();
        g_object_set(preview->loupe_filter_cache, "ignore-roi", TRUE, NULL);
        preview->photo = NULL;
+       preview->loupe_view = -1;
 
        preview->navigator_filter_scale = rs_filter_new("RSResample", NULL);
        preview->navigator_filter_cache = rs_filter_new("RSCache", 
preview->navigator_filter_scale);
@@ -700,7 +702,7 @@
  * Enable the loupe
  */
 void
-rs_preview_widget_set_loupe_enabled(RSPreviewWidget *preview, gboolean enabled)
+rs_preview_widget_set_loupe_enabled(RSPreviewWidget *preview, int view, 
gboolean enabled)
 {
        if (preview->loupe_enabled != enabled)
        {
@@ -713,13 +715,16 @@
                {
                        rs_loupe_set_filter(preview->loupe, 
preview->loupe_filter_end);
 
-                       rs_filter_set_previous(preview->loupe_filter_start, 
preview->filter_input);
-                       /* FIXME: view is hardcoded to 0 */
+                       if (view != preview->loupe_view)
+                       {
+                               
rs_filter_set_previous(preview->loupe_filter_start, 
preview->filter_cache0[view]);
+                               preview->loupe_view = view;
+                       }
                        if (rs_photo_get_dcp_profile(preview->photo))
                                g_object_set(preview->loupe_filter_dcp, 
"profile", rs_photo_get_dcp_profile(preview->photo), NULL);
                        else
                                g_object_set(preview->loupe_filter_dcp, 
"use-profile", FALSE, NULL);
-                       rs_filter_set_recursive(preview->loupe_filter_end, 
"settings", preview->photo->settings[preview->snapshot[0]], NULL);
+                       rs_filter_set_recursive(preview->loupe_filter_end, 
"settings", preview->photo->settings[preview->snapshot[view]], NULL);
                        rs_loupe_set_colorspace(preview->loupe, 
preview->display_color_space);
 
                        gtk_widget_show_all(GTK_WIDGET(preview->loupe));
@@ -837,7 +842,7 @@
                g_assert(RS_IS_FILTER(fast_filter));
                rs_filter_set_previous(preview->navigator_filter_scale, 
fast_filter);
        } else
-               rs_filter_set_previous(preview->navigator_filter_scale, 
preview->filter_input);
+               rs_filter_set_previous(preview->navigator_filter_scale, filter);
 }
 
 /**
@@ -1857,24 +1862,19 @@
                rs_photo_set_angle(preview->photo, preview->straighten_angle, 
TRUE);
                gui_status_pop(preview->status_num);
        }
-       /* Middle mouse -> loupe */
-       else if ((event->type == GDK_BUTTON_PRESS)
-               && (event->button==2))
-       {
-               rs_loupe_set_coord(preview->loupe, real_x, real_y);
-               rs_preview_widget_set_loupe_enabled(preview, TRUE);
-       }
-       /* CTRL + left mouse -> loupe */
-       else if ((event->type == GDK_BUTTON_PRESS)
+       /* Middle mouse , ctrl + left -> loupe */
+       else if (((event->type == GDK_BUTTON_PRESS)
+               && (event->button==2)) 
+               || ((event->type == GDK_BUTTON_PRESS)
                && (event->button==1)
-               && (event->state & GDK_CONTROL_MASK))
+               && (event->state & GDK_CONTROL_MASK)))
        {
                rs_loupe_set_screen(preview->loupe, preview_screen, 
screen_number);
                rs_loupe_set_coord(preview->loupe, real_x, real_y);
-               rs_preview_widget_set_loupe_enabled(preview, TRUE);
+               rs_preview_widget_set_loupe_enabled(preview, view, TRUE);
        }
        if (event->type == GDK_BUTTON_RELEASE)
-               rs_preview_widget_set_loupe_enabled(preview, FALSE);
+               rs_preview_widget_set_loupe_enabled(preview, view, FALSE);
 
        return FALSE;
 }
@@ -2151,7 +2151,15 @@
 
        /* Update loupe if needed */
        if (preview->loupe_enabled)
+       {
+               if (view != preview->loupe_view)
+               {
+                       rs_filter_set_previous(preview->loupe_filter_start, 
preview->filter_cache0[view]);
+                       rs_filter_set_recursive(preview->loupe_filter_end, 
"settings", preview->photo->settings[preview->snapshot[view]], NULL);
+                       preview->loupe_view = view;
+               }
                rs_loupe_set_coord(preview->loupe, real_x, real_y);
+       }
 
 
        return TRUE;


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to