+Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
+
+ * image.c (image_options_set): Update PixbufRenderer parent window so
+ that changing 'fit window to image' option works.
+ * pan-view.c (pan_window_image_zoom_cb): Use same zoom text display as
+ for main windows.
+ * pixbuf-renderer.c: Fix (re-implement) check for maximized window
+ state. Fix pr_source_tile_visible() calculation which was using the x
+ axis where it should be y. Add redrawn return value to pr_zoom_clamp()
+ and use that value in pr_zoom_sync() to pass pr_redraw correct args.
+
Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
* image.[ch]: Add utility to sync image settings to user preferences.
> pixbuf-renderer.c:
d> fix two pass render from corrupting it->qd pointer (need one pointer for each queue?).
d> fix image_change_from_image (to do this need a pixbuf_renderer_move_image).
- > fix broken zoom out drawing when using source tiles.
+ d> fix broken zoom out drawing when using source tiles.
+ > fix 2pass zoom when using source tiles and zoomed out (not always rendering second pass)
> image.c:
d> need to keep a list of ImageWindows and provide function to sync options to each object.
by pre-rendering any scaled tiles that are visible before signaling 'render_complete'.
> make this a g_object with signals for completed, changed, etc.
d> fix region computation rounding when updating scaled image in 'area ready' signal.
+ > fix delay flip 'completed' signal (full screen busy cursor is not always turned off)
+ > fix slow loading of images when zoomed out - bug could be poor clamping to visible in PixbufRenderer.
> work on pan view:
}
g_list_free(list);
- if (0)
+#if 0
+ if (x%512 == 0 && y%512 == 0)
{
- static gint count = 0;
PangoLayout *layout;
gchar *buf;
pixbuf_draw_layout(pixbuf, layout, (GtkWidget *)pr, 0, 0, 0, 0, 0, 255);
g_object_unref(G_OBJECT(layout));
-
- count++;
}
+#endif
return TRUE;
}
PanWindow *pw = data;
gchar *text;
-#if 0
- text = image_zoom_get_as_text(imd);
-#endif
- text = g_strdup_printf("%.2f", zoom);
+ text = image_zoom_get_as_text(pw->imd);
gtk_label_set_text(GTK_LABEL(pw->label_zoom), text);
g_free(text);
}
static gint pr_parent_window_sizable(PixbufRenderer *pr)
{
+ GdkWindowState state;
+
if (!pr->parent_window) return FALSE;
if (!pr->window_fit) return FALSE;
if (!GTK_WIDGET(pr)->window) return FALSE;
-#if 0
- if (window_maximized(pr->top_window)) return FALSE;
-#endif
+
+ if (!pr->parent_window->window) return FALSE;
+ state = gdk_window_get_state(pr->parent_window->window);
+ if (state & GDK_WINDOW_STATE_MAXIMIZED) return FALSE;
return TRUE;
}
return !((double)st->x * pr->scale > (double)x2 ||
(double)(st->x + pr->source_tile_width) * pr->scale < (double)x1 ||
- (double)st->y * pr->scale > (double)x2 ||
+ (double)st->y * pr->scale > (double)y2 ||
(double)(st->y + pr->source_tile_height) * pr->scale < (double)y1);
}
return (old_vw != pr->vis_width || old_vh != pr->vis_height);
}
-static gint pr_zoom_clamp(PixbufRenderer *pr, gdouble zoom, gint force, gint new, gint invalidate)
+static gint pr_zoom_clamp(PixbufRenderer *pr, gdouble zoom,
+ gint force, gint new, gint invalidate,
+ gint *redrawn)
{
gint w, h;
gdouble scale;
pr_tile_invalidate_all(pr);
pr_redraw(pr, TRUE);
}
+ if (redrawn) *redrawn = (invalidate || invalid);
return TRUE;
}
gint old_cx, old_cy;
gint clamped;
gint sized;
+ gint redrawn = FALSE;
old_scale = pr->scale;
if (center_point)
old_cy = pr->y_scroll + pr->vis_height / 2;
}
- if (!pr_zoom_clamp(pr, zoom, force, new, force)) return;
+ if (!pr_zoom_clamp(pr, zoom, force, new, force, &redrawn)) return;
clamped = pr_size_clamp(pr);
sized = pr_parent_window_resize(pr, pr->width, pr->height);
* so redraw the window anyway :/
*/
if (sized || clamped) pr_border_clear(pr);
- pr_redraw(pr, FALSE);
+ pr_redraw(pr, redrawn);
pr_zoom_signal(pr);
pr_update_signal(pr);
pr->window_width = new_width;
pr->window_height = new_height;
- if (pr->zoom == 0.0) pr_zoom_clamp(pr, 0.0, TRUE, FALSE, FALSE);
+ if (pr->zoom == 0.0) pr_zoom_clamp(pr, 0.0, TRUE, FALSE, FALSE, NULL);
pr_size_clamp(pr);
pr_scroll_clamp(pr);