From: Colin Clark Date: Sun, 14 Oct 2018 09:39:17 +0000 (+0100) Subject: Bug fix: View in new window wrong size X-Git-Tag: v1.5~62 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commitdiff_plain;h=c4d04c5a11f0581fa35ebb16667c797fea2ba34c Bug fix: View in new window wrong size Opening an image in "View in new window" was displayed in a window of minimum size. The window was opened before the image was completely loaded, and so the window size was not known. --- diff --git a/src/image.c b/src/image.c index ffe36cfb..ac57bb44 100644 --- a/src/image.c +++ b/src/image.c @@ -1121,6 +1121,8 @@ static gboolean image_scroll_cb(GtkWidget *widget, GdkEventScroll *event, gpoint void image_attach_window(ImageWindow *imd, GtkWidget *window, const gchar *title, const gchar *title_right, gboolean show_zoom) { + LayoutWindow *lw; + imd->top_window = window; g_free(imd->title); imd->title = g_strdup(title); @@ -1128,7 +1130,9 @@ void image_attach_window(ImageWindow *imd, GtkWidget *window, imd->title_right = g_strdup(title_right); imd->title_show_zoom = show_zoom; - if (!options->image.fit_window_to_image) window = NULL; + lw = layout_find_by_image(imd); + + if (!(options->image.fit_window_to_image && lw && lw->options.tools_float)) window = NULL; pixbuf_renderer_set_parent((PixbufRenderer *)imd->pr, (GtkWindow *)window); diff --git a/src/img-view.c b/src/img-view.c index 7e6bb9dc..75486f44 100644 --- a/src/img-view.c +++ b/src/img-view.c @@ -29,6 +29,7 @@ #include "filedata.h" #include "fullscreen.h" #include "image.h" +#include "image-load.h" #include "image-overlay.h" #include "layout.h" #include "layout_image.h" @@ -886,21 +887,8 @@ static ViewWindow *real_view_window_new(FileData *fd, GList *list, CollectionDat } /* Wait until image is loaded otherwise size is not defined */ - int count; - for (count = 10; count && !w && !h; count++) - { - image_get_image_size(vw->imd, &w, &h); - usleep(100000); - } + image_load_dimensions(fd, &w, &h); - if (image_zoom_get(vw->imd) == 0.0) - { - image_get_image_size(vw->imd, &w, &h); - } - else - { - pixbuf_renderer_get_scaled_size(PIXBUF_RENDERER(vw->imd->pr), &w, &h); - } if (options->image.limit_window_size) { gint mw = gdk_screen_width() * options->image.max_window_size / 100;