Use cairo to draw the cell renderer selection
2007-07-28 Thomas Wood <thos@gnome.org> * wp-cellrenderer.c: (cell_renderer_wallpaper_render): Use cairo to draw the cell renderer selection svn path=/trunk/; revision=7910
This commit is contained in:
parent
ef3bb7e92b
commit
c4b82d2716
2 changed files with 28 additions and 8 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2007-07-28 Thomas Wood <thos@gnome.org>
|
||||||
|
|
||||||
|
* wp-cellrenderer.c: (cell_renderer_wallpaper_render): Use cairo to draw the
|
||||||
|
cell renderer selection
|
||||||
|
|
||||||
2007-07-28 Jens Granseuer <jensgr@gmx.net>
|
2007-07-28 Jens Granseuer <jensgr@gmx.net>
|
||||||
|
|
||||||
* wp-cellrenderer.c: (cell_renderer_wallpaper_render):
|
* wp-cellrenderer.c: (cell_renderer_wallpaper_render):
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
*/
|
*/
|
||||||
#include "wp-cellrenderer.h"
|
#include "wp-cellrenderer.h"
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
static void cell_renderer_wallpaper_render (GtkCellRenderer *cell,
|
static void cell_renderer_wallpaper_render (GtkCellRenderer *cell,
|
||||||
GdkWindow *window,
|
GdkWindow *window,
|
||||||
|
@ -65,8 +66,14 @@ cell_renderer_wallpaper_render (GtkCellRenderer *cell,
|
||||||
|
|
||||||
if ((flags & (GTK_CELL_RENDERER_SELECTED|GTK_CELL_RENDERER_PRELIT)) != 0)
|
if ((flags & (GTK_CELL_RENDERER_SELECTED|GTK_CELL_RENDERER_PRELIT)) != 0)
|
||||||
{
|
{
|
||||||
|
cairo_t *cr;
|
||||||
|
int radius = 5;
|
||||||
|
int x, y, w, h;
|
||||||
|
x = background_area->x;
|
||||||
|
y = background_area->y;
|
||||||
|
w = background_area->width;
|
||||||
|
h = background_area->height;
|
||||||
GtkStateType state;
|
GtkStateType state;
|
||||||
GdkGC *gc;
|
|
||||||
|
|
||||||
if ((flags & GTK_CELL_RENDERER_SELECTED) != 0)
|
if ((flags & GTK_CELL_RENDERER_SELECTED) != 0)
|
||||||
{
|
{
|
||||||
|
@ -78,13 +85,21 @@ cell_renderer_wallpaper_render (GtkCellRenderer *cell,
|
||||||
else
|
else
|
||||||
state = GTK_STATE_PRELIGHT;
|
state = GTK_STATE_PRELIGHT;
|
||||||
|
|
||||||
gc = gdk_gc_new (GDK_DRAWABLE (window));
|
/* draw the selection indicator */
|
||||||
gdk_gc_set_foreground (gc, &widget->style->bg[state]);
|
cr = gdk_cairo_create (GDK_DRAWABLE (window));
|
||||||
gdk_gc_set_line_attributes (gc, 3,
|
gdk_cairo_set_source_color (cr, &widget->style->base[state]);
|
||||||
GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER);
|
|
||||||
|
|
||||||
gdk_draw_rectangle (GDK_DRAWABLE (window), gc, FALSE,
|
cairo_arc (cr, x + radius, y + radius, radius, M_PI, M_PI * 1.5);
|
||||||
background_area->x, background_area->y,
|
cairo_arc (cr, x + w - radius, y + radius, radius, M_PI * 1.5, 0);
|
||||||
background_area->width, background_area->height);
|
cairo_arc (cr, x + w - radius, y + h - radius, radius, 0, M_PI * 0.5);
|
||||||
|
cairo_arc (cr, x + radius, y + h - radius, radius, M_PI * 0.5, M_PI);
|
||||||
|
cairo_close_path (cr);
|
||||||
|
|
||||||
|
/* FIXME: this should not be hardcoded to 5 */
|
||||||
|
cairo_rectangle (cr, x + 5, y + 5, w - 10, h - 10);
|
||||||
|
|
||||||
|
cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
|
||||||
|
cairo_fill (cr);
|
||||||
|
cairo_destroy (cr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue