summaryrefslogtreecommitdiff
path: root/themes/Adwaita/gtk-2.0/adwaita_engine.c
diff options
context:
space:
mode:
Diffstat (limited to 'themes/Adwaita/gtk-2.0/adwaita_engine.c')
-rw-r--r--themes/Adwaita/gtk-2.0/adwaita_engine.c265
1 files changed, 0 insertions, 265 deletions
diff --git a/themes/Adwaita/gtk-2.0/adwaita_engine.c b/themes/Adwaita/gtk-2.0/adwaita_engine.c
deleted file mode 100644
index 0edbea9c..00000000
--- a/themes/Adwaita/gtk-2.0/adwaita_engine.c
+++ /dev/null
@@ -1,265 +0,0 @@
-/* Adwaita - a GTK+ engine
- *
- * Copyright (C) 2012 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 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
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Authors: Cosimo Cecchi <cosimoc@gnome.org>
- */
-
-#include <gmodule.h>
-#include <glib.h>
-#include <gtk/gtk.h>
-
-#ifdef GDK_WINDOWING_X11
-#include <gdk/gdkx.h>
-#endif
-
-/***************************************/
-/* Register & Initialize Drawing Style */
-/***************************************/
-#define ADWAITA_TYPE_STYLE (adwaita_style_get_type ())
-#define ADWAITA_STYLE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), ADWAITA_TYPE_STYLE, AdwaitaStyle))
-#define ADWAITA_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ADWAITA_TYPE_STYLE, AdwaitaStyleClass))
-#define ADWAITA_IS_STYLE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), ADWAITA_TYPE_STYLE))
-#define ADWAITA_IS_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ADWAITA_TYPE_STYLE))
-#define ADWAITA_STYLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ADWAITA_TYPE_STYLE, AdwaitaStyleClass))
-
-typedef struct
-{
- GtkStyle parent_instance;
-} AdwaitaStyle;
-
-typedef struct
-{
- GtkStyleClass parent_class;
-} AdwaitaStyleClass;
-
-G_DEFINE_DYNAMIC_TYPE (AdwaitaStyle, adwaita_style, GTK_TYPE_STYLE)
-
-static void
-do_toplevel_hack (GtkWidget *widget,
- const gchar *widget_name)
-{
- gboolean tried_hack;
-
- tried_hack = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "adwaita-toplevel-hack"));
-
- if (!tried_hack)
- {
- g_object_set_data (G_OBJECT (widget),
- "adwaita-toplevel-hack", GINT_TO_POINTER (1));
- gtk_widget_set_name (widget, widget_name);
- }
-}
-
-static gboolean
-wm_is_fallback (void)
-{
-#ifdef GDK_WINDOWING_X11
- const gchar *name;
- name = gdk_x11_screen_get_window_manager_name (gdk_screen_get_default ());
- return g_strcmp0 (name, "GNOME Shell") != 0;
-#else
- return TRUE;
-#endif
-}
-
-static cairo_t *
-drawable_to_cairo (GdkDrawable *window,
- GdkRectangle *area)
-{
- cairo_t *cr;
-
- g_return_val_if_fail (window != NULL, NULL);
-
- cr = (cairo_t*) gdk_cairo_create (window);
- cairo_set_line_width (cr, 1.0);
- cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE);
- cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER);
-
- if (area)
- {
- cairo_rectangle (cr, area->x, area->y, area->width, area->height);
- cairo_clip_preserve (cr);
- cairo_new_path (cr);
- }
-
- return cr;
-}
-
-static void
-adwaita_draw_box (GtkStyle * style,
- GdkWindow * window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- GdkRectangle * area,
- GtkWidget * widget,
- const gchar * detail,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- if (GTK_IS_MENU (widget) &&
- g_strcmp0 (detail, "menu") == 0 &&
- wm_is_fallback ())
- {
- cairo_t *cr = drawable_to_cairo (window, area);
- cairo_pattern_t *pattern = cairo_pattern_create_linear (x, y, x, y + height);
- gdouble stop_1, stop_2, stop_3;
-
- stop_1 = MIN (1.0, 6.0 / (gdouble) height);
- stop_2 = MAX (stop_1, 0.33);
- stop_3 = MAX (stop_2, 0.66);
-
- cairo_pattern_add_color_stop_rgba (pattern, 0.0, 0.66, 0.66, 0.66, 0.0);
- cairo_pattern_add_color_stop_rgba (pattern, stop_1, 0.66, 0.66, 0.66, 0.25);
- cairo_pattern_add_color_stop_rgba (pattern, stop_2, 0.66, 0.66, 0.66, 0.80);
- cairo_pattern_add_color_stop_rgba (pattern, stop_3, 0.66, 0.66, 0.66, 1.0);
- cairo_pattern_add_color_stop_rgba (pattern, 1.0, 0.66, 0.66, 0.66, 1.0);
- cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
-
- cairo_set_source (cr, pattern);
- cairo_rectangle (cr, x, y, width, height);
- cairo_stroke (cr);
-
- cairo_destroy (cr);
- cairo_pattern_destroy (pattern);
- }
- else
- {
- GTK_STYLE_CLASS (adwaita_style_parent_class)->draw_box (style, window, state_type, shadow_type,
- area, widget, detail,
- x, y, width, height);
- }
-}
-
-void
-adwaita_draw_flat_box (GtkStyle *style,
- GdkWindow *window,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- GdkRectangle *area,
- GtkWidget *widget,
- const gchar *detail,
- gint x,
- gint y,
- gint width,
- gint height)
-{
- const gchar *app_name;
-
- GTK_STYLE_CLASS (adwaita_style_parent_class)->draw_flat_box (style, window, state_type, shadow_type,
- area, widget, detail,
- x, y, width, height);
-
- /* HACK: this is totally awful, but I don't see a better way to "tag" the OO.o hierarchy */
- if (!GTK_IS_WINDOW (widget) ||
- (gtk_window_get_window_type (GTK_WINDOW (widget)) != GTK_WINDOW_TOPLEVEL))
- return;
-
- app_name = g_get_application_name ();
- if (g_str_has_prefix (app_name, "OpenOffice.org"))
- do_toplevel_hack (widget, "openoffice-toplevel");
- else if (g_str_has_prefix (app_name, "LibreOffice"))
- do_toplevel_hack (widget, "libreoffice-toplevel");
-}
-
-static void
-adwaita_style_init (AdwaitaStyle *style)
-{
-}
-
-static void
-adwaita_style_class_init (AdwaitaStyleClass * klass)
-{
- GtkStyleClass *style_class = GTK_STYLE_CLASS (klass);
-
- style_class->draw_box = adwaita_draw_box;
- style_class->draw_flat_box = adwaita_draw_flat_box;
-}
-
-static void
-adwaita_style_class_finalize (AdwaitaStyleClass * klass)
-{
-}
-
-/**********************************/
-/* Register & Initialize RC Style */
-/**********************************/
-#define ADWAITA_TYPE_RC_STYLE (adwaita_rc_style_get_type ())
-#define ADWAITA_RC_STYLE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), ADWAITA_TYPE_RC_STYLE, AdwaitaRcStyle))
-#define ADWAITA_RC_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ADWAITA_TYPE_RC_STYLE, AdwaitaRcStyleClass))
-#define ADWAITA_IS_RC_STYLE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), ADWAITA_TYPE_RC_STYLE))
-#define ADWAITA_IS_RC_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ADWAITA_TYPE_RC_STYLE))
-#define ADWAITA_RC_STYLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ADWAITA_TYPE_RC_STYLE, AdwaitaRcStyleClass))
-
-typedef struct
-{
- GtkRcStyle parent_instance;
-} AdwaitaRcStyle;
-
-typedef struct
-{
- GtkRcStyleClass parent_class;
-} AdwaitaRcStyleClass;
-
-G_DEFINE_DYNAMIC_TYPE (AdwaitaRcStyle, adwaita_rc_style, GTK_TYPE_RC_STYLE)
-
-static GtkStyle *
-adwaita_rc_style_create_style (GtkRcStyle *rc_style)
-{
- return g_object_new (ADWAITA_TYPE_STYLE, NULL);
-}
-
-static void
-adwaita_rc_style_init (AdwaitaRcStyle *rc_style)
-{
-}
-
-static void
-adwaita_rc_style_class_init (AdwaitaRcStyleClass * klass)
-{
- GtkRcStyleClass *rc_class = GTK_RC_STYLE_CLASS (klass);
-
- rc_class->create_style = adwaita_rc_style_create_style;
-}
-
-static void
-adwaita_rc_style_class_finalize (AdwaitaRcStyleClass * klass)
-{
-}
-
-/****************
- * Engine Hooks *
- ****************/
-void
-theme_init (GTypeModule * module)
-{
- adwaita_rc_style_register_type (module);
- adwaita_style_register_type (module);
-}
-
-void
-theme_exit (void)
-{
-}
-
-GtkRcStyle *
-theme_create_rc_style (void)
-{
- return g_object_new (ADWAITA_TYPE_RC_STYLE, NULL);
-}