forked from AuroraMiddleware/gtk
Remove GtkModifierStyle
This commit is contained in:
parent
9a388690f4
commit
08c1c584b3
@ -512,7 +512,6 @@ gtk_private_h_sources = \
|
||||
gtkmenutrackeritem.h \
|
||||
gtkmnemonichash.h \
|
||||
gtkmodelmenuitem.h \
|
||||
gtkmodifierstyle.h \
|
||||
gtkmodulesprivate.h \
|
||||
gtkmountoperationprivate.h \
|
||||
gtknativedialogprivate.h \
|
||||
@ -817,7 +816,6 @@ gtk_base_c_sources = \
|
||||
gtkmnemonichash.c \
|
||||
gtkmodelmenuitem.c \
|
||||
gtkmodelbutton.c \
|
||||
gtkmodifierstyle.c \
|
||||
gtkmodules.c \
|
||||
gtkmountoperation.c \
|
||||
gtknativedialog.c \
|
||||
|
@ -1,281 +0,0 @@
|
||||
/* GTK - The GIMP Toolkit
|
||||
* Copyright (C) 2010 Carlos Garnacho <carlosg@gnome.org>
|
||||
*
|
||||
* 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 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "gtkmodifierstyle.h"
|
||||
#include "gtkstyleproviderprivate.h"
|
||||
#include "gtkintl.h"
|
||||
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
||||
|
||||
typedef struct StylePropertyValue StylePropertyValue;
|
||||
|
||||
struct _GtkModifierStylePrivate
|
||||
{
|
||||
GtkStyleProperties *style;
|
||||
GHashTable *color_properties;
|
||||
};
|
||||
|
||||
static void gtk_modifier_style_provider_init (GtkStyleProviderIface *iface);
|
||||
static void gtk_modifier_style_provider_private_init (GtkStyleProviderPrivateInterface *iface);
|
||||
static void gtk_modifier_style_finalize (GObject *object);
|
||||
|
||||
G_DEFINE_TYPE_EXTENDED (GtkModifierStyle, _gtk_modifier_style, G_TYPE_OBJECT, 0,
|
||||
G_ADD_PRIVATE (GtkModifierStyle)
|
||||
G_IMPLEMENT_INTERFACE (GTK_TYPE_STYLE_PROVIDER,
|
||||
gtk_modifier_style_provider_init)
|
||||
G_IMPLEMENT_INTERFACE (GTK_TYPE_STYLE_PROVIDER_PRIVATE,
|
||||
gtk_modifier_style_provider_private_init));
|
||||
|
||||
static void
|
||||
_gtk_modifier_style_class_init (GtkModifierStyleClass *klass)
|
||||
{
|
||||
GObjectClass *object_class;
|
||||
|
||||
object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->finalize = gtk_modifier_style_finalize;
|
||||
}
|
||||
|
||||
static void
|
||||
_gtk_modifier_style_init (GtkModifierStyle *modifier_style)
|
||||
{
|
||||
GtkModifierStylePrivate *priv;
|
||||
|
||||
priv = modifier_style->priv = _gtk_modifier_style_get_instance_private (modifier_style);
|
||||
|
||||
priv->color_properties = g_hash_table_new_full (g_str_hash,
|
||||
g_str_equal,
|
||||
(GDestroyNotify) g_free,
|
||||
(GDestroyNotify) gdk_rgba_free);
|
||||
priv->style = gtk_style_properties_new ();
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_modifier_style_get_style_property (GtkStyleProvider *provider,
|
||||
GtkWidgetPath *path,
|
||||
GtkStateFlags state,
|
||||
GParamSpec *pspec,
|
||||
GValue *value)
|
||||
{
|
||||
GtkModifierStylePrivate *priv;
|
||||
GdkRGBA *rgba;
|
||||
GdkColor color;
|
||||
gchar *str;
|
||||
|
||||
/* Reject non-color types for now */
|
||||
if (pspec->value_type != GDK_TYPE_COLOR)
|
||||
return FALSE;
|
||||
|
||||
priv = GTK_MODIFIER_STYLE (provider)->priv;
|
||||
str = g_strdup_printf ("-%s-%s",
|
||||
g_type_name (pspec->owner_type),
|
||||
pspec->name);
|
||||
|
||||
rgba = g_hash_table_lookup (priv->color_properties, str);
|
||||
g_free (str);
|
||||
|
||||
if (!rgba)
|
||||
return FALSE;
|
||||
|
||||
color.red = (guint) (rgba->red * 65535.) + 0.5;
|
||||
color.green = (guint) (rgba->green * 65535.) + 0.5;
|
||||
color.blue = (guint) (rgba->blue * 65535.) + 0.5;
|
||||
|
||||
g_value_set_boxed (value, &color);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_modifier_style_provider_init (GtkStyleProviderIface *iface)
|
||||
{
|
||||
iface->get_style_property = gtk_modifier_style_get_style_property;
|
||||
}
|
||||
|
||||
static GtkCssValue *
|
||||
gtk_modifier_style_provider_get_color (GtkStyleProviderPrivate *provider,
|
||||
const char *name)
|
||||
{
|
||||
GtkModifierStyle *style = GTK_MODIFIER_STYLE (provider);
|
||||
|
||||
return _gtk_style_provider_private_get_color (GTK_STYLE_PROVIDER_PRIVATE (style->priv->style), name);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_modifier_style_provider_lookup (GtkStyleProviderPrivate *provider,
|
||||
const GtkCssMatcher *matcher,
|
||||
GtkCssLookup *lookup,
|
||||
GtkCssChange *change)
|
||||
{
|
||||
GtkModifierStyle *style = GTK_MODIFIER_STYLE (provider);
|
||||
|
||||
_gtk_style_provider_private_lookup (GTK_STYLE_PROVIDER_PRIVATE (style->priv->style),
|
||||
matcher,
|
||||
lookup,
|
||||
change);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_modifier_style_provider_private_init (GtkStyleProviderPrivateInterface *iface)
|
||||
{
|
||||
iface->get_color = gtk_modifier_style_provider_get_color;
|
||||
iface->lookup = gtk_modifier_style_provider_lookup;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_modifier_style_finalize (GObject *object)
|
||||
{
|
||||
GtkModifierStylePrivate *priv;
|
||||
|
||||
priv = GTK_MODIFIER_STYLE (object)->priv;
|
||||
g_hash_table_destroy (priv->color_properties);
|
||||
g_object_unref (priv->style);
|
||||
|
||||
G_OBJECT_CLASS (_gtk_modifier_style_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
GtkModifierStyle *
|
||||
_gtk_modifier_style_new (void)
|
||||
{
|
||||
return g_object_new (GTK_TYPE_MODIFIER_STYLE, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
modifier_style_set_color (GtkModifierStyle *style,
|
||||
const gchar *prop,
|
||||
GtkStateFlags state,
|
||||
const GdkRGBA *color)
|
||||
{
|
||||
GtkModifierStylePrivate *priv;
|
||||
|
||||
g_return_if_fail (GTK_IS_MODIFIER_STYLE (style));
|
||||
|
||||
priv = style->priv;
|
||||
|
||||
if (color)
|
||||
gtk_style_properties_set (priv->style, state,
|
||||
prop, color,
|
||||
NULL);
|
||||
else
|
||||
gtk_style_properties_unset_property (priv->style, prop, state);
|
||||
|
||||
_gtk_style_provider_private_changed (GTK_STYLE_PROVIDER_PRIVATE (style));
|
||||
}
|
||||
|
||||
void
|
||||
_gtk_modifier_style_set_background_color (GtkModifierStyle *style,
|
||||
GtkStateFlags state,
|
||||
const GdkRGBA *color)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_MODIFIER_STYLE (style));
|
||||
|
||||
modifier_style_set_color (style, "background-color", state, color);
|
||||
}
|
||||
|
||||
void
|
||||
_gtk_modifier_style_set_color (GtkModifierStyle *style,
|
||||
GtkStateFlags state,
|
||||
const GdkRGBA *color)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_MODIFIER_STYLE (style));
|
||||
|
||||
modifier_style_set_color (style, "color", state, color);
|
||||
}
|
||||
|
||||
void
|
||||
_gtk_modifier_style_set_font (GtkModifierStyle *style,
|
||||
const PangoFontDescription *font_desc)
|
||||
{
|
||||
GtkModifierStylePrivate *priv;
|
||||
|
||||
g_return_if_fail (GTK_IS_MODIFIER_STYLE (style));
|
||||
|
||||
priv = style->priv;
|
||||
|
||||
if (font_desc)
|
||||
gtk_style_properties_set (priv->style, 0,
|
||||
"font", font_desc,
|
||||
NULL);
|
||||
else
|
||||
gtk_style_properties_unset_property (priv->style, "font", 0);
|
||||
|
||||
_gtk_style_provider_private_changed (GTK_STYLE_PROVIDER_PRIVATE (style));
|
||||
}
|
||||
|
||||
void
|
||||
_gtk_modifier_style_map_color (GtkModifierStyle *style,
|
||||
const gchar *name,
|
||||
const GdkRGBA *color)
|
||||
{
|
||||
GtkModifierStylePrivate *priv;
|
||||
GtkSymbolicColor *symbolic_color = NULL;
|
||||
|
||||
g_return_if_fail (GTK_IS_MODIFIER_STYLE (style));
|
||||
g_return_if_fail (name != NULL);
|
||||
|
||||
priv = style->priv;
|
||||
|
||||
if (color)
|
||||
symbolic_color = gtk_symbolic_color_new_literal (color);
|
||||
|
||||
gtk_style_properties_map_color (priv->style,
|
||||
name, symbolic_color);
|
||||
|
||||
_gtk_style_provider_private_changed (GTK_STYLE_PROVIDER_PRIVATE (style));
|
||||
}
|
||||
|
||||
void
|
||||
_gtk_modifier_style_set_color_property (GtkModifierStyle *style,
|
||||
GType widget_type,
|
||||
const gchar *prop_name,
|
||||
const GdkRGBA *color)
|
||||
{
|
||||
GtkModifierStylePrivate *priv;
|
||||
const GdkRGBA *old_color;
|
||||
gchar *str;
|
||||
|
||||
g_return_if_fail (GTK_IS_MODIFIER_STYLE (style));
|
||||
g_return_if_fail (g_type_is_a (widget_type, GTK_TYPE_WIDGET));
|
||||
g_return_if_fail (prop_name != NULL);
|
||||
|
||||
priv = style->priv;
|
||||
str = g_strdup_printf ("-%s-%s", g_type_name (widget_type), prop_name);
|
||||
|
||||
old_color = g_hash_table_lookup (priv->color_properties, str);
|
||||
|
||||
if ((!color && !old_color) ||
|
||||
(color && old_color && gdk_rgba_equal (color, old_color)))
|
||||
{
|
||||
g_free (str);
|
||||
return;
|
||||
}
|
||||
|
||||
if (color)
|
||||
{
|
||||
g_hash_table_insert (priv->color_properties, str,
|
||||
gdk_rgba_copy (color));
|
||||
}
|
||||
else
|
||||
{
|
||||
g_hash_table_remove (priv->color_properties, str);
|
||||
g_free (str);
|
||||
}
|
||||
|
||||
_gtk_style_provider_private_changed (GTK_STYLE_PROVIDER_PRIVATE (style));
|
||||
}
|
||||
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
@ -1,79 +0,0 @@
|
||||
/* GTK - The GIMP Toolkit
|
||||
* Copyright (C) 2010 Carlos Garnacho <carlosg@gnome.org>
|
||||
*
|
||||
* 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 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __GTK_MODIFIER_STYLE_H__
|
||||
#define __GTK_MODIFIER_STYLE_H__
|
||||
|
||||
#include <glib-object.h>
|
||||
#include <gdk/gdk.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GTK_TYPE_MODIFIER_STYLE (_gtk_modifier_style_get_type ())
|
||||
#define GTK_MODIFIER_STYLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_MODIFIER_STYLE, GtkModifierStyle))
|
||||
#define GTK_MODIFIER_STYLE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GTK_TYPE_MODIFIER_STYLE, GtkModifierStyleClass))
|
||||
#define GTK_IS_MODIFIER_STYLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_MODIFIER_STYLE))
|
||||
#define GTK_IS_MODIFIER_STYLE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GTK_TYPE_MODIFIER_STYLE))
|
||||
#define GTK_MODIFIER_STYLE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GTK_TYPE_MODIFIER_STYLE, GtkModifierStyleClass))
|
||||
|
||||
typedef struct _GtkModifierStyle GtkModifierStyle;
|
||||
typedef struct _GtkModifierStyleClass GtkModifierStyleClass;
|
||||
typedef struct _GtkModifierStylePrivate GtkModifierStylePrivate;
|
||||
|
||||
struct _GtkModifierStyle
|
||||
{
|
||||
GObject parent_object;
|
||||
GtkModifierStylePrivate *priv;
|
||||
};
|
||||
|
||||
struct _GtkModifierStyleClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
|
||||
/* Padding for future expansion */
|
||||
void (*_gtk_reserved1) (void);
|
||||
void (*_gtk_reserved2) (void);
|
||||
void (*_gtk_reserved3) (void);
|
||||
void (*_gtk_reserved4) (void);
|
||||
};
|
||||
|
||||
GType _gtk_modifier_style_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GtkModifierStyle * _gtk_modifier_style_new (void);
|
||||
|
||||
void _gtk_modifier_style_set_background_color (GtkModifierStyle *style,
|
||||
GtkStateFlags state,
|
||||
const GdkRGBA *color);
|
||||
void _gtk_modifier_style_set_color (GtkModifierStyle *style,
|
||||
GtkStateFlags state,
|
||||
const GdkRGBA *color);
|
||||
void _gtk_modifier_style_set_font (GtkModifierStyle *style,
|
||||
const PangoFontDescription *font_desc);
|
||||
|
||||
void _gtk_modifier_style_map_color (GtkModifierStyle *style,
|
||||
const gchar *name,
|
||||
const GdkRGBA *color);
|
||||
|
||||
void _gtk_modifier_style_set_color_property (GtkModifierStyle *style,
|
||||
GType widget_type,
|
||||
const gchar *prop_name,
|
||||
const GdkRGBA *color);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GTK_MODIFIER_STYLE_H__ */
|
@ -60,7 +60,6 @@
|
||||
#include "gtkstylecontextprivate.h"
|
||||
#include "gtkcssprovider.h"
|
||||
#include "gtkcsswidgetnodeprivate.h"
|
||||
#include "gtkmodifierstyle.h"
|
||||
#include "gtkversion.h"
|
||||
#include "gtkdebug.h"
|
||||
#include "gtktypebuiltins.h"
|
||||
|
Loading…
Reference in New Issue
Block a user