X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=blobdiff_plain;f=src%2Fgtk%2Fgtkshruler.c;h=aaeb0fd639e2ac202fcc77041cd4a1ba1e41046e;hp=03b54c6d5b3dd221235b3555241a71d2749151c9;hb=be8b88373a34eedf28533ea10ba363c569f925ef;hpb=d9de0abf0cbaa019ee3b9931806d2d14beeaef90 diff --git a/src/gtk/gtkshruler.c b/src/gtk/gtkshruler.c index 03b54c6d5..aaeb0fd63 100644 --- a/src/gtk/gtkshruler.c +++ b/src/gtk/gtkshruler.c @@ -1,11 +1,11 @@ /* GtkSHRuler * - * Copyright (C) 2000-2005 Alfons Hoogervorst & The Sylpheed Claws Team + * Copyright (C) 2000-2011 Alfons Hoogervorst & The Claws Mail Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -13,9 +13,7 @@ * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ /* I derived this class from hruler. S in HRuler could be read as @@ -31,8 +29,12 @@ #include #include #include -#include +#include #include "gtkshruler.h" +#include "utils.h" +#include "gtkutils.h" + +#if !GTK_CHECK_VERSION(2,24,0) #define RULER_HEIGHT 14 #define MINIMUM_INCR 5 @@ -115,23 +117,25 @@ static void gtk_shruler_draw_ticks(GtkRuler *ruler) { GtkWidget *widget; - GdkGC *gc, *bg_gc; + cairo_t *cr; gint i; gint width, height; gint xthickness; gint ythickness; gint pos; - g_return_if_fail (ruler != NULL); - g_return_if_fail (GTK_IS_HRULER (ruler)); + cm_return_if_fail (ruler != NULL); + cm_return_if_fail (GTK_IS_HRULER (ruler)); - if (!GTK_WIDGET_DRAWABLE (ruler)) + if (!gtkut_widget_is_drawable (GTK_WIDGET(ruler))) return; widget = GTK_WIDGET (ruler); - gc = widget->style->fg_gc[GTK_STATE_NORMAL]; - bg_gc = widget->style->bg_gc[GTK_STATE_NORMAL]; + cr = gdk_cairo_create(ruler->backing_store); + cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); + cairo_set_line_width(cr, 1.); + gdk_cairo_set_source_color(cr, >k_widget_get_style(widget)->text[GTK_STATE_NORMAL]); xthickness = widget->style->xthickness; ythickness = widget->style->ythickness; @@ -154,9 +158,9 @@ gtk_shruler_draw_ticks(GtkRuler *ruler) if ( pos % 10 == 0 ) length = ( 2 * height / 3 ); else if ( pos % 5 == 0 ) length = ( height / 3 ); - gdk_draw_line(ruler->backing_store, gc, - i, height + ythickness, - i, height - length); + cairo_move_to(cr, i, height + ythickness); + cairo_line_to(cr, i, height - length); + cairo_stroke(cr); if ( pos % 10 == 0 ) { gchar buf[8]; @@ -168,32 +172,13 @@ gtk_shruler_draw_ticks(GtkRuler *ruler) layout = gtk_widget_create_pango_layout (GTK_WIDGET(ruler), buf); - gdk_draw_layout(ruler->backing_store, gc, i + 2, - 0, layout); + cairo_move_to(cr, i+2, 0); + pango_cairo_show_layout(cr, layout); g_object_unref(layout); } } -} -/* gtk_ruler_set_pos() - does not work yet, need to reimplement - * gtk_ruler_draw_pos(). */ -void -gtk_shruler_set_pos(GtkSHRuler * ruler, gfloat pos) -{ - GtkRuler * ruler_; - g_return_if_fail( ruler != NULL ); - - ruler_ = GTK_RULER(ruler); - - if ( pos < ruler_->lower ) - pos = ruler_->lower; - if ( pos > ruler_->upper ) - pos = ruler_->upper; - - ruler_->position = pos; - - /* Make sure the ruler has been allocated already */ - if ( ruler_->backing_store != NULL ) - gtk_ruler_draw_pos(ruler_); + cairo_destroy(cr); } +#endif