provide a toggle button to temporarily disable position recording in the

Sun Nov  5 05:32:39 2000  Tim Janik  <timj@gtk.org>

        * gtk/testgtk.c (uposition_stop_configure): provide a toggle
        button to temporarily disable position recording in the
        "saved position" test.

Sat Nov  4 05:37:17 2000  Tim Janik  <timj@gtk.org>

        * gtk/gtkthemes.c: added compat code that temporarily implements
        GtkThemeEnginePlugin as a GObject exporting GTypePlugin. this is
        going to be revamped by owen's upcoming GtkModule patches, but
        untill then people want gtk to build, right? ;)
This commit is contained in:
Tim Janik 2000-11-05 05:08:05 +00:00 committed by Tim Janik
parent acf4b21ec2
commit ab6b184e9d
12 changed files with 226 additions and 34 deletions

View File

@ -1,3 +1,16 @@
Sun Nov 5 05:32:39 2000 Tim Janik <timj@gtk.org>
* gtk/testgtk.c (uposition_stop_configure): provide a toggle
button to temporarily disable position recording in the
"saved position" test.
Sat Nov 4 05:37:17 2000 Tim Janik <timj@gtk.org>
* gtk/gtkthemes.c: added compat code that temporarily implements
GtkThemeEnginePlugin as a GObject exporting GTypePlugin. this is
going to be revamped by owen's upcoming GtkModule patches, but
untill then people want gtk to build, right? ;)
2000-11-04 Havoc Pennington <hp@pobox.com>
* gtk/gtkenums.h: remove trailing comma from GtkDeleteType member

View File

@ -1,3 +1,16 @@
Sun Nov 5 05:32:39 2000 Tim Janik <timj@gtk.org>
* gtk/testgtk.c (uposition_stop_configure): provide a toggle
button to temporarily disable position recording in the
"saved position" test.
Sat Nov 4 05:37:17 2000 Tim Janik <timj@gtk.org>
* gtk/gtkthemes.c: added compat code that temporarily implements
GtkThemeEnginePlugin as a GObject exporting GTypePlugin. this is
going to be revamped by owen's upcoming GtkModule patches, but
untill then people want gtk to build, right? ;)
2000-11-04 Havoc Pennington <hp@pobox.com>
* gtk/gtkenums.h: remove trailing comma from GtkDeleteType member

View File

@ -1,3 +1,16 @@
Sun Nov 5 05:32:39 2000 Tim Janik <timj@gtk.org>
* gtk/testgtk.c (uposition_stop_configure): provide a toggle
button to temporarily disable position recording in the
"saved position" test.
Sat Nov 4 05:37:17 2000 Tim Janik <timj@gtk.org>
* gtk/gtkthemes.c: added compat code that temporarily implements
GtkThemeEnginePlugin as a GObject exporting GTypePlugin. this is
going to be revamped by owen's upcoming GtkModule patches, but
untill then people want gtk to build, right? ;)
2000-11-04 Havoc Pennington <hp@pobox.com>
* gtk/gtkenums.h: remove trailing comma from GtkDeleteType member

View File

@ -1,3 +1,16 @@
Sun Nov 5 05:32:39 2000 Tim Janik <timj@gtk.org>
* gtk/testgtk.c (uposition_stop_configure): provide a toggle
button to temporarily disable position recording in the
"saved position" test.
Sat Nov 4 05:37:17 2000 Tim Janik <timj@gtk.org>
* gtk/gtkthemes.c: added compat code that temporarily implements
GtkThemeEnginePlugin as a GObject exporting GTypePlugin. this is
going to be revamped by owen's upcoming GtkModule patches, but
untill then people want gtk to build, right? ;)
2000-11-04 Havoc Pennington <hp@pobox.com>
* gtk/gtkenums.h: remove trailing comma from GtkDeleteType member

View File

@ -1,3 +1,16 @@
Sun Nov 5 05:32:39 2000 Tim Janik <timj@gtk.org>
* gtk/testgtk.c (uposition_stop_configure): provide a toggle
button to temporarily disable position recording in the
"saved position" test.
Sat Nov 4 05:37:17 2000 Tim Janik <timj@gtk.org>
* gtk/gtkthemes.c: added compat code that temporarily implements
GtkThemeEnginePlugin as a GObject exporting GTypePlugin. this is
going to be revamped by owen's upcoming GtkModule patches, but
untill then people want gtk to build, right? ;)
2000-11-04 Havoc Pennington <hp@pobox.com>
* gtk/gtkenums.h: remove trailing comma from GtkDeleteType member

View File

@ -1,3 +1,16 @@
Sun Nov 5 05:32:39 2000 Tim Janik <timj@gtk.org>
* gtk/testgtk.c (uposition_stop_configure): provide a toggle
button to temporarily disable position recording in the
"saved position" test.
Sat Nov 4 05:37:17 2000 Tim Janik <timj@gtk.org>
* gtk/gtkthemes.c: added compat code that temporarily implements
GtkThemeEnginePlugin as a GObject exporting GTypePlugin. this is
going to be revamped by owen's upcoming GtkModule patches, but
untill then people want gtk to build, right? ;)
2000-11-04 Havoc Pennington <hp@pobox.com>
* gtk/gtkenums.h: remove trailing comma from GtkDeleteType member

View File

@ -1,3 +1,16 @@
Sun Nov 5 05:32:39 2000 Tim Janik <timj@gtk.org>
* gtk/testgtk.c (uposition_stop_configure): provide a toggle
button to temporarily disable position recording in the
"saved position" test.
Sat Nov 4 05:37:17 2000 Tim Janik <timj@gtk.org>
* gtk/gtkthemes.c: added compat code that temporarily implements
GtkThemeEnginePlugin as a GObject exporting GTypePlugin. this is
going to be revamped by owen's upcoming GtkModule patches, but
untill then people want gtk to build, right? ;)
2000-11-04 Havoc Pennington <hp@pobox.com>
* gtk/gtkenums.h: remove trailing comma from GtkDeleteType member

View File

@ -232,7 +232,7 @@ gtk_object_shutdown (GObject *gobject)
static void
gtk_object_real_destroy (GtkObject *object)
{
_g_signal_handlers_destroy (G_OBJECT (object));
g_signal_handlers_destroy (G_OBJECT (object));
}
static void

View File

@ -173,8 +173,8 @@ gtk_signal_compat_matched (GtkObject *object,
}
if (!n_handlers)
g_warning ("unable to find signal handler for object(%p) with func(%p) and data(%p)",
object, func, data);
g_warning ("unable to find signal handler for object(%s:%p) with func(%p) and data(%p)",
G_OBJECT_TYPE_NAME (object), object, func, data);
}
static inline gboolean

View File

@ -37,7 +37,95 @@
#include "config.h"
#include "gtkintl.h"
/*****************************
*****************************
* temporary compat code, make GtkThemeEnginePlugin a GObject plus GTypePlugin interface
*/
typedef struct _GtkThemeEnginePlugin GtkThemeEnginePlugin;
typedef struct _GObjectClass GtkThemeEnginePluginClass;
static void gtk_theme_engine_plugin_use (GTypePlugin *plugin);
static void gtk_theme_engine_plugin_unuse (GTypePlugin *plugin);
static void gtk_theme_engine_plugin_complete_type_info (GTypePlugin *plugin,
GType g_type,
GTypeInfo *info,
GTypeValueTable *value_table);
GType gtk_theme_engine_plugin_get_type (void);
struct _GtkThemeEnginePlugin
{
GObject parent_instance;
GtkThemeEngine *engine;
gchar *engine_name;
GTypeInfo info;
GType type;
GType parent_type;
};
#define GTK_TYPE_THEME_ENGINE_PLUGIN (gtk_theme_engine_plugin_get_type ())
#define GTK_THEME_ENGINE_PLUGIN(plugin) (G_TYPE_CHECK_INSTANCE_CAST ((plugin), GTK_TYPE_THEME_ENGINE_PLUGIN, GtkThemeEnginePlugin))
#define GTK_THEME_ENGINE_PLUGIN_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), GTK_TYPE_THEME_ENGINE_PLUGIN, GtkThemeEnginePluginClass))
#define GTK_IS_THEME_ENGINE_PLUGIN(plugin) (G_TYPE_CHECK_INSTANCE_TYPE ((plugin), GTK_TYPE_THEME_ENGINE_PLUGIN))
#define GTK_IS_THEME_ENGINE_PLUGIN_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), GTK_TYPE_THEME_ENGINE_PLUGIN))
#define GTK_THEME_ENGINE_PLUGIN_GET_CLASS(plugin) (G_TYPE_INSTANCE_GET_CLASS ((plugin), GTK_TYPE_THEME_ENGINE_PLUGIN, GtkThemeEnginePluginClass))
static void
gtk_theme_engine_plugin_shutdown (GObject *object)
{
GtkThemeEnginePlugin *plugin = GTK_THEME_ENGINE_PLUGIN (object);
g_warning (G_STRLOC ": shutdown should never happen for static type plugins");
g_object_ref (object);
/* chain parent class handler */
G_OBJECT_CLASS (g_type_class_peek_parent (GTK_THEME_ENGINE_PLUGIN_GET_CLASS (plugin)))->shutdown (object);
}
static void
gtk_theme_engine_plugin_class_init (GtkThemeEnginePluginClass *class)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (class);
gobject_class->shutdown = gtk_theme_engine_plugin_shutdown;
}
static void
theme_engine_plugin_iface_init (GTypePluginClass *iface)
{
iface->use_plugin = gtk_theme_engine_plugin_use;
iface->unuse_plugin = gtk_theme_engine_plugin_unuse;
iface->complete_type_info = gtk_theme_engine_plugin_complete_type_info;
}
GType
gtk_theme_engine_plugin_get_type (void)
{
static GType theme_engine_plugin_type = 0;
if (!theme_engine_plugin_type)
{
static const GTypeInfo theme_engine_plugin_info = {
sizeof (GtkThemeEnginePluginClass),
NULL, /* base_init */
NULL, /* base_finalize */
(GClassInitFunc) gtk_theme_engine_plugin_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (GtkThemeEnginePlugin),
0, /* n_preallocs */
NULL, /* instance_init */
};
static const GInterfaceInfo iface_info = {
(GInterfaceInitFunc) theme_engine_plugin_iface_init,
NULL, /* interface_finalize */
NULL, /* interface_data */
};
theme_engine_plugin_type = g_type_register_static (G_TYPE_OBJECT, "GtkThemeEnginePlugin", &theme_engine_plugin_info, 0);
g_type_add_interface_static (theme_engine_plugin_type, G_TYPE_TYPE_PLUGIN, &iface_info);
}
return theme_engine_plugin_type;
}
/* end of GtkThemeEnginePlugin object implementation stuff
*****************************
*****************************/
struct _GtkThemeEngine
{
@ -54,17 +142,6 @@ struct _GtkThemeEngine
guint refcount;
};
struct _GtkThemeEnginePlugin
{
GTypePlugin plugin;
GtkThemeEngine *engine;
gchar *engine_name;
GTypeInfo info;
GType type;
GType parent_type;
};
static GHashTable *engine_hash = NULL;
#ifdef __EMX__
@ -217,9 +294,9 @@ gtk_theme_engine_create_rc_style (GtkThemeEngine *engine)
}
static void
gtk_theme_engine_plugin_ref (GTypePlugin *plugin)
gtk_theme_engine_plugin_use (GTypePlugin *plugin)
{
GtkThemeEnginePlugin *theme_plugin = (GtkThemeEnginePlugin *)plugin;
GtkThemeEnginePlugin *theme_plugin = GTK_THEME_ENGINE_PLUGIN (plugin);
if (theme_plugin->engine == NULL)
{
@ -237,9 +314,9 @@ gtk_theme_engine_plugin_ref (GTypePlugin *plugin)
}
static void
gtk_theme_engine_plugin_unref (GTypePlugin *plugin)
gtk_theme_engine_plugin_unuse (GTypePlugin *plugin)
{
GtkThemeEnginePlugin *theme_plugin = (GtkThemeEnginePlugin *)plugin;
GtkThemeEnginePlugin *theme_plugin = GTK_THEME_ENGINE_PLUGIN (plugin);
g_return_if_fail (theme_plugin->engine != NULL);
@ -247,23 +324,16 @@ gtk_theme_engine_plugin_unref (GTypePlugin *plugin)
}
static void
gtk_theme_engine_complete_type_info (GTypePlugin *plugin,
GType g_type,
GTypeInfo *info,
GTypeValueTable *value_table)
gtk_theme_engine_plugin_complete_type_info (GTypePlugin *plugin,
GType g_type,
GTypeInfo *info,
GTypeValueTable *value_table)
{
GtkThemeEnginePlugin *theme_plugin = (GtkThemeEnginePlugin *)plugin;
GtkThemeEnginePlugin *theme_plugin = GTK_THEME_ENGINE_PLUGIN (plugin);
*info = theme_plugin->info;
}
static GTypePluginVTable gtk_theme_engine_plugin_vtable = {
gtk_theme_engine_plugin_ref,
gtk_theme_engine_plugin_unref,
gtk_theme_engine_complete_type_info,
NULL
};
/**
* gtk_theme_engine_register_type:
* @engine: a #GtkThemeEngine
@ -296,16 +366,15 @@ gtk_theme_engine_register_type (GtkThemeEngine *engine,
type = g_type_from_name (type_name);
if (type)
plugin = (GtkThemeEnginePlugin *)g_type_get_plugin (type);
plugin = GTK_THEME_ENGINE_PLUGIN (g_type_get_plugin (type));
else
{
plugin = g_new (GtkThemeEnginePlugin, 1);
plugin = g_object_new (GTK_TYPE_THEME_ENGINE_PLUGIN, NULL);
plugin->plugin.vtable = &gtk_theme_engine_plugin_vtable;
plugin->engine = NULL;
plugin->engine_name = NULL;
plugin->parent_type = parent_type;
plugin->type = g_type_register_dynamic (parent_type, type_name, (GTypePlugin *) plugin, 0);
plugin->type = g_type_register_dynamic (parent_type, type_name, G_TYPE_PLUGIN (plugin), 0);
}
if (plugin->engine)

View File

@ -2265,6 +2265,16 @@ uposition_configure (GtkWidget *window)
return FALSE;
}
static void
uposition_stop_configure (GtkToggleButton *toggle,
GtkObject *window)
{
if (toggle->active)
gtk_signal_handler_block_by_func (window, uposition_configure, NULL);
else
gtk_signal_handler_unblock_by_func (window, uposition_configure, NULL);
}
static void
create_saved_position (void)
{
@ -2304,6 +2314,12 @@ create_saved_position (void)
"GtkContainer::border_width", 10,
"GtkWidget::parent", main_vbox,
"GtkWidget::visible", TRUE,
"child", gtk_widget_new (GTK_TYPE_TOGGLE_BUTTON,
"label", "Stop Events",
"active", FALSE,
"signal::clicked", uposition_stop_configure, window,
"visible", TRUE,
NULL),
NULL);
hbox = gtk_hbox_new (FALSE, 0);

View File

@ -2265,6 +2265,16 @@ uposition_configure (GtkWidget *window)
return FALSE;
}
static void
uposition_stop_configure (GtkToggleButton *toggle,
GtkObject *window)
{
if (toggle->active)
gtk_signal_handler_block_by_func (window, uposition_configure, NULL);
else
gtk_signal_handler_unblock_by_func (window, uposition_configure, NULL);
}
static void
create_saved_position (void)
{
@ -2304,6 +2314,12 @@ create_saved_position (void)
"GtkContainer::border_width", 10,
"GtkWidget::parent", main_vbox,
"GtkWidget::visible", TRUE,
"child", gtk_widget_new (GTK_TYPE_TOGGLE_BUTTON,
"label", "Stop Events",
"active", FALSE,
"signal::clicked", uposition_stop_configure, window,
"visible", TRUE,
NULL),
NULL);
hbox = gtk_hbox_new (FALSE, 0);