]> granicus.if.org Git - handbrake/commitdiff
LinGui: oops, forgot to actually rescale the image when making the
authorjstebbins <jstebbins.hb@gmail.com>
Sun, 5 Apr 2009 17:19:54 +0000 (17:19 +0000)
committerjstebbins <jstebbins.hb@gmail.com>
Sun, 5 Apr 2009 17:19:54 +0000 (17:19 +0000)
preview window fullscreen

git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2303 b64f7644-9d1e-0410-96f1-a4d463321fa5

gtk/src/ghb.ui
gtk/src/preview.c

index 983fb9c9ed8c2245543cb1fea85c887827f91f2e..94e6c53f6cf188527b630c8f0a4aa5158b17da58 100644 (file)
@@ -4873,6 +4873,7 @@ location as the movie.</property>
             <property name="app_paintable">True</property>
             <signal name="motion-notify-event" handler="preview_motion_cb"/>
             <signal name="leave-notify-event" handler="preview_leave_cb"/>
+            <signal handler="preview_image_configure_cb" name="configure-event"/>
           </object>
           <packing>
           </packing>
index c18d28015b0887c24325681a19c65c30481560ac..61647a4003000e12366e6fa7f41e2a9ba524ca8c 100644 (file)
@@ -819,11 +819,36 @@ picture_settings_alt_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
 }
 
 static void
+hud_set_position(signal_user_data_t *ud)
+{
+       GtkWidget *widget;
+       GdkWindow *parent, *win;
+       gint pw, ph, w, h, x, y;
+
+       widget = GHB_WIDGET(ud->builder, "preview_image");
+       //parent = gtk_widget_get_window(widget);
+       parent = widget->window;
+       widget = GHB_WIDGET(ud->builder, "preview_hud");
+       //win = gtk_widget_get_window(widget);
+       win = widget->window;
+       gdk_drawable_get_size(GDK_DRAWABLE(parent), &pw, &ph);
+       gdk_drawable_get_size(GDK_DRAWABLE(win), &w, &h);
+       x = pw/2 - w/2;
+       if (ph/4 > h/2)
+               y = ph - ph/4 - h/2;
+       else
+               y = ph - h;
+       gdk_window_move(win, x, y);
+}
+
+static gboolean
 go_full(signal_user_data_t *ud)
 {
        GtkWindow *window;
        window = GTK_WINDOW(GHB_WIDGET (ud->builder, "preview_window"));
        gtk_window_fullscreen(window);
+       ghb_set_preview_image(ud);
+       return FALSE;
 }
 
 G_MODULE_EXPORT void
@@ -854,6 +879,7 @@ fullscreen_clicked_cb(GtkWidget *toggle, signal_user_data_t *ud)
                gtk_window_unfullscreen(window);
                gtk_window_set_resizable(window, FALSE);
                gtk_button_set_label(GTK_BUTTON(toggle), "Fullscreen");
+               ghb_set_preview_image(ud);
        }
 }
 
@@ -1049,29 +1075,34 @@ preview_motion_cb(
        else
        {
                GtkWidget *widget;
-               GdkWindow *parent, *win;
-               gint pw, ph, w, h, x, y;
 
-               widget = GHB_WIDGET(ud->builder, "preview_image");
-               //parent = gtk_widget_get_window(widget);
-               parent = widget->window;
                widget = GHB_WIDGET(ud->builder, "preview_hud");
-               //win = gtk_widget_get_window(widget);
-               win = widget->window;
                gtk_widget_show(widget);
-               gdk_drawable_get_size(GDK_DRAWABLE(parent), &pw, &ph);
-               gdk_drawable_get_size(GDK_DRAWABLE(win), &w, &h);
-               x = pw/2 - w/2;
-               if (ph/4 > h/2)
-                       y = ph - ph/4 - h/2;
-               else
-                       y = ph - h;
-               gdk_window_move(win, x, y);
+               hud_set_position(ud);
        }
        hud_timeout_id = g_timeout_add_seconds(10, (GSourceFunc)hud_timeout, ud);
        return FALSE;
 }
 
+G_MODULE_EXPORT gboolean
+preview_image_configure_cb(
+       GtkWidget *widget,
+       GdkEventConfigure *event,
+       signal_user_data_t *ud)
+{
+       static gint w = 0, h = 0;
+
+       g_debug("preview_image_configure_cb()");
+       if ((w != event->width) || (h != event->height))
+       {
+               w = event->width;
+               h = event->height;
+               hud_set_position(ud);
+       }
+       return FALSE;
+}
+
+
 G_MODULE_EXPORT gboolean
 preview_configure_cb(
        GtkWidget *widget,