diff options
Diffstat (limited to 'src/widgets')
| -rw-r--r-- | src/widgets/eek-preview.cpp | 36 |
1 files changed, 14 insertions, 22 deletions
diff --git a/src/widgets/eek-preview.cpp b/src/widgets/eek-preview.cpp index 5f1997672..38d5173fa 100644 --- a/src/widgets/eek-preview.cpp +++ b/src/widgets/eek-preview.cpp @@ -61,11 +61,11 @@ typedef struct { int scaledW; int scaledH; - + int r; int g; int b; - + gboolean hot; gboolean within; gboolean takesFocus; @@ -227,7 +227,7 @@ gboolean eek_preview_draw(GtkWidget *widget, GtkAllocation allocation; gtk_widget_get_allocation(widget, &allocation); - + gint insetTop = 0, insetBottom = 0; gint insetLeft = 0, insetRight = 0; @@ -245,12 +245,12 @@ gboolean eek_preview_draw(GtkWidget *widget, } auto context = gtk_widget_get_style_context(widget); - + gtk_render_frame(context, cr, 0, 0, allocation.width, allocation.height); - + gtk_render_background(context, cr, 0, 0, @@ -269,26 +269,19 @@ gboolean eek_preview_draw(GtkWidget *widget, if (priv->previewPixbuf ) { - GtkDrawingArea *da = &(preview->drawing); - GdkWindow *da_window = gtk_widget_get_window(GTK_WIDGET(da)); - cairo_t *cr = gdk_cairo_create(da_window); - - gint w = gdk_window_get_width(da_window); - gint h = gdk_window_get_height(da_window); - - if ((w != priv->scaledW) || (h != priv->scaledH)) { + if ((allocation.width != priv->scaledW) || (allocation.height != priv->scaledH)) { if (priv->scaled) { g_object_unref(priv->scaled); } + priv->scaledW = allocation.width - (insetLeft + insetRight); + priv->scaledH = allocation.height - (insetTop + insetBottom); + priv->scaled = gdk_pixbuf_scale_simple(priv->previewPixbuf, - w - (insetLeft + insetRight), - h - (insetTop + insetBottom), + priv->scaledW, + priv->scaledH, GDK_INTERP_BILINEAR); - - priv->scaledW = w - (insetLeft + insetRight); - priv->scaledH = h - (insetTop + insetBottom); } GdkPixbuf *pix = (priv->scaled) ? priv->scaled : priv->previewPixbuf; @@ -302,7 +295,6 @@ gboolean eek_preview_draw(GtkWidget *widget, gdk_cairo_set_source_pixbuf(cr, pix, insetLeft, insetTop); cairo_paint(cr); - cairo_destroy(cr); } if (priv->linked) @@ -479,7 +471,7 @@ static gboolean eek_preview_button_release_cb( GtkWidget* widget, GdkEventButton gtk_widget_set_state_flags( widget, GTK_STATE_FLAG_NORMAL, false ); if ( priv->within && - (event->button == PRIME_BUTTON_MAGIC_NUMBER || + (event->button == PRIME_BUTTON_MAGIC_NUMBER || event->button == 2)) { gboolean isAlt = ( ((event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK) || @@ -607,7 +599,7 @@ eek_preview_set_linked(EekPreview *preview, EekPreviewPrivate *priv = EEK_PREVIEW_GET_PRIVATE(preview); g_return_if_fail(IS_EEK_PREVIEW(preview)); - + link = (LinkType)(link & PREVIEW_LINK_ALL); if (link != (LinkType)priv->linked) @@ -656,7 +648,7 @@ eek_preview_set_details(EekPreview *preview, guint border) { EekPreviewPrivate *priv = EEK_PREVIEW_GET_PRIVATE(preview); - + g_return_if_fail(IS_EEK_PREVIEW(preview)); priv->view = view; |
