diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2009-03-23 03:09:37 +0000 |
|---|---|---|
| committer | joncruz <joncruz@users.sourceforge.net> | 2009-03-23 03:09:37 +0000 |
| commit | 67506fb7bfa904d6efad6d403291ebc619f375b6 (patch) | |
| tree | ae3aef3aaf0990cc8aaf60bc6993774eab8433a1 /src/widgets/eek-preview.cpp | |
| parent | Make drag-n-drop preview a gradient image for gradients. (diff) | |
| download | inkscape-67506fb7bfa904d6efad6d403291ebc619f375b6.tar.gz inkscape-67506fb7bfa904d6efad6d403291ebc619f375b6.zip | |
Additional state indicators.
(bzr r7546)
Diffstat (limited to 'src/widgets/eek-preview.cpp')
| -rw-r--r-- | src/widgets/eek-preview.cpp | 70 |
1 files changed, 54 insertions, 16 deletions
diff --git a/src/widgets/eek-preview.cpp b/src/widgets/eek-preview.cpp index 1c1adf543..2d9c064e0 100644 --- a/src/widgets/eek-preview.cpp +++ b/src/widgets/eek-preview.cpp @@ -247,6 +247,26 @@ gboolean eek_preview_expose_event( GtkWidget* widget, GdkEventExpose* event ) insetX, insetY, widget->allocation.width - (insetX * 2), widget->allocation.height - (insetY * 2) ); + if ( preview->_previewPixbuf ) { + GtkDrawingArea* da = &(preview->drawing); + GdkDrawable* drawable = (GdkDrawable*) (((GtkWidget*)da)->window); + gint w = 0; + gint h = 0; + gdk_drawable_get_size(drawable, &w, &h); + if ((w != preview->_scaledW) || (h != preview->_scaledH)) { + if (preview->_scaled) { + g_object_unref(preview->_scaled); + } + preview->_scaled = gdk_pixbuf_scale_simple(preview->_previewPixbuf, w, h, GDK_INTERP_BILINEAR); + preview->_scaledW = w; + preview->_scaledH = h; + } + + GdkPixbuf* pix = (preview->_scaled) ? preview->_scaled : preview->_previewPixbuf; + gdk_draw_pixbuf( drawable, 0, pix, 0, 0, 0, 0, w, h, GDK_RGB_DITHER_NONE, 0, 0 ); + } + + if ( preview->_linked ) { /* Draw arrow */ GdkRectangle possible = {insetX, insetY, (widget->allocation.width - (insetX * 2)), (widget->allocation.height - (insetY * 2)) }; @@ -293,7 +313,7 @@ gboolean eek_preview_expose_event( GtkWidget* widget, GdkEventExpose* event ) NULL, /* clip area. &area, */ widget, /* may be NULL */ NULL, /* detail */ - GTK_ARROW_UP, + GTK_ARROW_DOWN, FALSE, otherArea.x, otherArea.y, otherArea.width, otherArea.height @@ -319,25 +339,43 @@ gboolean eek_preview_expose_event( GtkWidget* widget, GdkEventExpose* event ) otherArea.width, otherArea.height ); } - } - if ( preview->_previewPixbuf ) { - GtkDrawingArea* da = &(preview->drawing); - GdkDrawable* drawable = (GdkDrawable*) (((GtkWidget*)da)->window); - gint w = 0; - gint h = 0; - gdk_drawable_get_size(drawable, &w, &h); - if ((w != preview->_scaledW) || (h != preview->_scaledH)) { - if (preview->_scaled) { - g_object_unref(preview->_scaled); + + if ( preview->_linked & PREVIEW_FILL ) { + GdkRectangle otherArea = {possible.x + ((possible.width / 4) - (area.width / 2)), + area.y, + area.width, area.height}; + if ( otherArea.height < possible.height ) { + otherArea.y = possible.y + (possible.height - otherArea.height) / 2; } - preview->_scaled = gdk_pixbuf_scale_simple(preview->_previewPixbuf, w, h, GDK_INTERP_BILINEAR); - preview->_scaledW = w; - preview->_scaledH = h; + gtk_paint_check( style, + widget->window, + GTK_STATE_SELECTED/* (GtkStateType)widget->state*/, + GTK_SHADOW_ETCHED_OUT, + NULL, + widget, + NULL, + otherArea.x, otherArea.y, + otherArea.width, otherArea.height ); } - GdkPixbuf* pix = (preview->_scaled) ? preview->_scaled : preview->_previewPixbuf; - gdk_draw_pixbuf( drawable, 0, pix, 0, 0, 0, 0, w, h, GDK_RGB_DITHER_NONE, 0, 0 ); + if ( preview->_linked & PREVIEW_STROKE ) { + GdkRectangle otherArea = {possible.x + (((possible.width * 3) / 4) - (area.width / 2)), + area.y, + area.width, area.height}; + if ( otherArea.height < possible.height ) { + otherArea.y = possible.y + (possible.height - otherArea.height) / 2; + } + gtk_paint_diamond( style, + widget->window, + GTK_STATE_SELECTED/* (GtkStateType)widget->state*/, + GTK_SHADOW_ETCHED_OUT, + NULL, + widget, + NULL, + otherArea.x, otherArea.y, + otherArea.width, otherArea.height ); + } } |
