From: Krzysztof KosiƄski Date: Wed, 8 Dec 2010 09:17:25 +0000 (+0100) Subject: Respect "relink duplicates clones" setting with linked offsets. X-Git-Url: https://git.tokkee.org/?p=inkscape.git;a=commitdiff_plain;h=18810e3c807f24dd9100adad097fe15d95ef83c0;hp=90b131148f97548291db9a8d23da291636be5d03 Respect "relink duplicates clones" setting with linked offsets. Patch from Adonis Papaderos. --- diff --git a/src/widgets/sp-color-wheel-selector.cpp b/src/widgets/sp-color-wheel-selector.cpp index d548b7325..2e36a024e 100644 --- a/src/widgets/sp-color-wheel-selector.cpp +++ b/src/widgets/sp-color-wheel-selector.cpp @@ -108,6 +108,47 @@ void sp_color_wheel_selector_init (SPColorWheelSelector *cs) } } +static void resizeHSVWheel( GtkHSV *hsv, GtkAllocation *allocation ) +{ + gint diam = std::min(allocation->width, allocation->height); + + // drop a little for resizing + diam -= 4; + + GtkStyle *style = gtk_widget_get_style( GTK_WIDGET(hsv) ); + if ( style ) { + gint thick = std::max(style->xthickness, style->ythickness); + if (thick > 0) { + diam -= thick * 2; + } + } + gint padding = -1; + gtk_widget_style_get( GTK_WIDGET(hsv), + "focus-padding", &padding, + NULL ); + if (padding > 0) { + diam -= padding * 2; + } + + diam = std::max(20, diam); + gint ring = static_cast( static_cast(diam) / (4.0 * 1.618) ); + gtk_hsv_set_metrics( hsv, diam, ring ); +} + +#if GTK_CHECK_VERSION(2,18,0) +static void handleWheelStyleSet(GtkHSV *hsv, GtkStyle* /*previous*/, gpointer /*userData*/) +{ + GtkAllocation allocation = {0, 0, 0, 0}; + gtk_widget_get_allocation( GTK_WIDGET(hsv), &allocation ); + resizeHSVWheel( hsv, &allocation ); +} +#endif // GTK_CHECK_VERSION(2,18,0) + +static void handleWheelAllocation(GtkHSV *hsv, GtkAllocation *allocation, gpointer /*userData*/) +{ + resizeHSVWheel( hsv, allocation ); +} + void ColorWheelSelector::init() { GtkWidget *t; @@ -126,6 +167,7 @@ void ColorWheelSelector::init() row = 0; _wheel = gtk_hsv_new(); + gtk_hsv_set_metrics( GTK_HSV(_wheel), 48, 8 ); gtk_widget_show( _wheel ); gtk_table_attach( GTK_TABLE(t), _wheel, 0, 3, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), XPAD, YPAD); @@ -173,6 +215,15 @@ void ColorWheelSelector::init() gtk_signal_connect( GTK_OBJECT(_wheel), "changed", GTK_SIGNAL_FUNC(_wheelChanged), _csel ); + + + // GTK does not automatically scale the color wheel, so we have to add that in: + gtk_signal_connect( GTK_OBJECT(_wheel), "size-allocate", + GTK_SIGNAL_FUNC(handleWheelAllocation), _csel ); +#if GTK_CHECK_VERSION(2,18,0) + gtk_signal_connect( GTK_OBJECT(_wheel), "style-set", + GTK_SIGNAL_FUNC(handleWheelStyleSet), _csel ); +#endif // GTK_CHECK_VERSION(2,18,0) } static void