gnome-control-center r8652 - trunk/capplets/appearance
- From: thos svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-control-center r8652 - trunk/capplets/appearance
- Date: Mon, 14 Apr 2008 01:35:50 +0100 (BST)
Author: thos
Date: Mon Apr 14 01:35:49 2008
New Revision: 8652
URL: http://svn.gnome.org/viewvc/gnome-control-center?rev=8652&view=rev
Log:
2008-04-14 Thomas Wood <thos gnome org>
* Makefile.am:
* appearance-themes.c: (themes_init):
* caption-cellrenderer.c:
* caption-cellrenderer.h:
Add a custom cell renderer for metatheme names to allow rounded corners
on the selection indicator. Fixes bug 500276.
Added:
trunk/capplets/appearance/caption-cellrenderer.c
trunk/capplets/appearance/caption-cellrenderer.h
Modified:
trunk/capplets/appearance/ChangeLog
trunk/capplets/appearance/Makefile.am
trunk/capplets/appearance/appearance-themes.c
Modified: trunk/capplets/appearance/Makefile.am
==============================================================================
--- trunk/capplets/appearance/Makefile.am (original)
+++ trunk/capplets/appearance/Makefile.am Mon Apr 14 01:35:49 2008
@@ -33,7 +33,9 @@
theme-util.c \
theme-util.h \
wp-cellrenderer.c \
- wp-cellrenderer.h
+ wp-cellrenderer.h \
+ caption-cellrenderer.c \
+ caption-cellrenderer.h
gnome_appearance_properties_LDADD = \
$(top_builddir)/libwindow-settings/libgnome-window-settings.la \
Modified: trunk/capplets/appearance/appearance-themes.c
==============================================================================
--- trunk/capplets/appearance/appearance-themes.c (original)
+++ trunk/capplets/appearance/appearance-themes.c Mon Apr 14 01:35:49 2008
@@ -28,6 +28,7 @@
#include "gtkrc-utils.h"
#include "gedit-message-area.h"
#include "wp-cellrenderer.h"
+#include "caption-cellrenderer.h"
#include <glib/gi18n.h>
#include <libwindow-settings/gnome-wm-manager.h>
@@ -1039,7 +1040,7 @@
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view), renderer,
"pixbuf", COL_THUMBNAIL, NULL);
- renderer = gtk_cell_renderer_text_new ();
+ renderer = cell_renderer_caption_new ();
g_object_set (renderer, "alignment", PANGO_ALIGN_CENTER,
"wrap-mode", PANGO_WRAP_WORD_CHAR,
"wrap-width", gtk_icon_view_get_item_width (icon_view),
Added: trunk/capplets/appearance/caption-cellrenderer.c
==============================================================================
--- (empty file)
+++ trunk/capplets/appearance/caption-cellrenderer.c Mon Apr 14 01:35:49 2008
@@ -0,0 +1,114 @@
+/*
+ * caption-cellrenderer was based on wp-cellrenderer
+ *
+ * Copyright (C) 2007, 2008 The GNOME Foundation
+ * Written by Denis Washington <denisw svn gnome org>
+ * Jens Granseuer <jensgr gmx net>
+ * Thomas Wood <thos gnome org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "caption-cellrenderer.h"
+#include <math.h>
+
+static void cell_renderer_caption_render (GtkCellRenderer *cell,
+ GdkWindow *window,
+ GtkWidget *widget,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GdkRectangle *expose_area,
+ GtkCellRendererState flags);
+
+G_DEFINE_TYPE (CellRendererCaption, cell_renderer_caption, GTK_TYPE_CELL_RENDERER_TEXT)
+
+static void
+cell_renderer_caption_class_init (CellRendererCaptionClass *klass)
+{
+ GtkCellRendererClass *renderer_class;
+
+ renderer_class = (GtkCellRendererClass *) klass;
+ renderer_class->render = cell_renderer_caption_render;
+}
+
+static void
+cell_renderer_caption_init (CellRendererCaption *renderer)
+{
+
+}
+
+GtkCellRenderer *
+cell_renderer_caption_new (void)
+{
+ return g_object_new (cell_renderer_caption_get_type (), NULL);
+}
+
+static void
+cell_renderer_caption_render (GtkCellRenderer *cell,
+ GdkWindow *window,
+ GtkWidget *widget,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GdkRectangle *expose_area,
+ GtkCellRendererState flags)
+{
+ (* GTK_CELL_RENDERER_CLASS (cell_renderer_caption_parent_class)->render)
+ (cell, window, widget, background_area, cell_area, expose_area, flags);
+
+ if ((flags & (GTK_CELL_RENDERER_SELECTED|GTK_CELL_RENDERER_PRELIT)) != 0)
+ {
+ cairo_t *cr;
+ int radius = 5;
+ int x, y, w, h;
+ GtkStateType state;
+ x = background_area->x;
+ y = background_area->y;
+ w = background_area->width;
+ h = background_area->height;
+
+ /* sometimes width is -1 - not sure what to do here */
+ if (w == -1)
+ return;
+
+ if ((flags & GTK_CELL_RENDERER_SELECTED) != 0)
+ {
+ if (GTK_WIDGET_HAS_FOCUS (widget))
+ state = GTK_STATE_SELECTED;
+ else
+ state = GTK_STATE_ACTIVE;
+ }
+ else
+ state = GTK_STATE_PRELIGHT;
+
+ /* add rounded corners to the selection indicator */
+ cr = gdk_cairo_create (GDK_DRAWABLE (window));
+
+ gdk_cairo_set_source_color (cr, &widget->style->base[GTK_STATE_NORMAL]);
+
+ cairo_rectangle (cr, x, y, w, h);
+
+ cairo_arc (cr, x + radius, y + radius, radius, M_PI, M_PI * 1.5);
+ cairo_arc (cr, x + w - radius, y + radius, radius, M_PI * 1.5, 0);
+ 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);
+
+ cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
+
+ cairo_fill (cr);
+ cairo_destroy (cr);
+ }
+}
Added: trunk/capplets/appearance/caption-cellrenderer.h
==============================================================================
--- (empty file)
+++ trunk/capplets/appearance/caption-cellrenderer.h Mon Apr 14 01:35:49 2008
@@ -0,0 +1,47 @@
+/*
+ * caption-cellrenderer was based on wp-cellrenderer
+ *
+ * Copyright (C) 2007, 2008 The GNOME Foundation
+ * Written by Denis Washington <denisw svn gnome org>
+ * Thomas Wood <thos gnome org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#ifndef _CAPTION_CELL_RENDERER_H
+#define _CAPTION_CELL_RENDERER_H
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+typedef struct _CellRendererCaption CellRendererCaption;
+typedef struct _CellRendererCaptionClass CellRendererCaptionClass;
+
+struct _CellRendererCaption
+{
+ GtkCellRendererText parent;
+};
+
+struct _CellRendererCaptionClass
+{
+ GtkCellRendererTextClass parent;
+};
+
+GtkCellRenderer *cell_renderer_caption_new (void);
+
+G_END_DECLS
+
+#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]