Add GdkEventSetting event for notification of changes to system settings,

Mon Apr  2 18:18:07 2001  Owen Taylor  <otaylor@redhat.com>

        * gdk/gdkevents.h: Add GdkEventSetting event for notification
	of changes to system settings, gdk_setting_get() to retrieve
	a single system setting.

	* gdk/x11/gdkevents-x11.c: Bridge gdk_setting_get() and GdkEventSetting
	to the draft XSETTINGS mechanism.

	* gdk/x11/xsettings-{common,client}.[ch]: Sample-implementation of
	XSETTINGS.

	* gtk/gtkmain.c gtk/gtksettings.[ch]: Propagate notification
	of GDK settings changes to the GtkSettings object.

	* gdk/gdkevents.[ch] gdk/gtk/gtksettings.c: Hook up the
	double-click-timeout property to GDK.

	* gdk/gdkcolor.[ch] gdk/gdkvisual.h gdk/gdkevent.[ch] gdk/gdkfont.[ch]:
	Define GDK boxed types here.

	* gdk/Makefile.am gdk/makeenums.pl: Generate source files
	gdk/gdkenumtypes.[ch] for enum definitions.

	* gtk/gtkcompat.h: Add defines for GTK_TYPE_GDK_*
	* gtk/gtk-boxed.defs: Comment out GDK types
	* gtk/gtktypeutils.h: Remove GDK types
	* gtk/Makefile.am: No longer scan GDK headers for enumerataions
This commit is contained in:
Owen Taylor 2001-04-02 23:33:47 +00:00 committed by Owen Taylor
parent 0aef43bcbc
commit b52b326d5f
42 changed files with 2001 additions and 246 deletions

View File

@ -1,3 +1,32 @@
Mon Apr 2 18:18:07 2001 Owen Taylor <otaylor@redhat.com>
* gdk/gdkevents.h: Add GdkEventSetting event for notification
of changes to system settings, gdk_setting_get() to retrieve
a single system setting.
* gdk/x11/gdkevents-x11.c: Bridge gdk_setting_get() and GdkEventSetting
to the draft XSETTINGS mechanism.
* gdk/x11/xsettings-{common,client}.[ch]: Sample-implementation of
XSETTINGS.
* gtk/gtkmain.c gtk/gtksettings.[ch]: Propagate notification
of GDK settings changes to the GtkSettings object.
* gdk/gdkevents.[ch] gdk/gtk/gtksettings.c: Hook up the
double-click-timeout property to GDK.
* gdk/gdkcolor.[ch] gdk/gdkvisual.h gdk/gdkevent.[ch] gdk/gdkfont.[ch]:
Define GDK boxed types here.
* gdk/Makefile.am gdk/makeenums.pl: Generate source files
gdk/gdkenumtypes.[ch] for enum definitions.
* gtk/gtkcompat.h: Add defines for GTK_TYPE_GDK_*
* gtk/gtk-boxed.defs: Comment out GDK types
* gtk/gtktypeutils.h: Remove GDK types
* gtk/Makefile.am: No longer scan GDK headers for enumerataions
Mon Apr 2 16:41:08 2001 Owen Taylor <otaylor@redhat.com>
* Applied patch from Ron Steinke to add signal accumulators

View File

@ -1,3 +1,32 @@
Mon Apr 2 18:18:07 2001 Owen Taylor <otaylor@redhat.com>
* gdk/gdkevents.h: Add GdkEventSetting event for notification
of changes to system settings, gdk_setting_get() to retrieve
a single system setting.
* gdk/x11/gdkevents-x11.c: Bridge gdk_setting_get() and GdkEventSetting
to the draft XSETTINGS mechanism.
* gdk/x11/xsettings-{common,client}.[ch]: Sample-implementation of
XSETTINGS.
* gtk/gtkmain.c gtk/gtksettings.[ch]: Propagate notification
of GDK settings changes to the GtkSettings object.
* gdk/gdkevents.[ch] gdk/gtk/gtksettings.c: Hook up the
double-click-timeout property to GDK.
* gdk/gdkcolor.[ch] gdk/gdkvisual.h gdk/gdkevent.[ch] gdk/gdkfont.[ch]:
Define GDK boxed types here.
* gdk/Makefile.am gdk/makeenums.pl: Generate source files
gdk/gdkenumtypes.[ch] for enum definitions.
* gtk/gtkcompat.h: Add defines for GTK_TYPE_GDK_*
* gtk/gtk-boxed.defs: Comment out GDK types
* gtk/gtktypeutils.h: Remove GDK types
* gtk/Makefile.am: No longer scan GDK headers for enumerataions
Mon Apr 2 16:41:08 2001 Owen Taylor <otaylor@redhat.com>
* Applied patch from Ron Steinke to add signal accumulators

View File

@ -1,3 +1,32 @@
Mon Apr 2 18:18:07 2001 Owen Taylor <otaylor@redhat.com>
* gdk/gdkevents.h: Add GdkEventSetting event for notification
of changes to system settings, gdk_setting_get() to retrieve
a single system setting.
* gdk/x11/gdkevents-x11.c: Bridge gdk_setting_get() and GdkEventSetting
to the draft XSETTINGS mechanism.
* gdk/x11/xsettings-{common,client}.[ch]: Sample-implementation of
XSETTINGS.
* gtk/gtkmain.c gtk/gtksettings.[ch]: Propagate notification
of GDK settings changes to the GtkSettings object.
* gdk/gdkevents.[ch] gdk/gtk/gtksettings.c: Hook up the
double-click-timeout property to GDK.
* gdk/gdkcolor.[ch] gdk/gdkvisual.h gdk/gdkevent.[ch] gdk/gdkfont.[ch]:
Define GDK boxed types here.
* gdk/Makefile.am gdk/makeenums.pl: Generate source files
gdk/gdkenumtypes.[ch] for enum definitions.
* gtk/gtkcompat.h: Add defines for GTK_TYPE_GDK_*
* gtk/gtk-boxed.defs: Comment out GDK types
* gtk/gtktypeutils.h: Remove GDK types
* gtk/Makefile.am: No longer scan GDK headers for enumerataions
Mon Apr 2 16:41:08 2001 Owen Taylor <otaylor@redhat.com>
* Applied patch from Ron Steinke to add signal accumulators

View File

@ -1,3 +1,32 @@
Mon Apr 2 18:18:07 2001 Owen Taylor <otaylor@redhat.com>
* gdk/gdkevents.h: Add GdkEventSetting event for notification
of changes to system settings, gdk_setting_get() to retrieve
a single system setting.
* gdk/x11/gdkevents-x11.c: Bridge gdk_setting_get() and GdkEventSetting
to the draft XSETTINGS mechanism.
* gdk/x11/xsettings-{common,client}.[ch]: Sample-implementation of
XSETTINGS.
* gtk/gtkmain.c gtk/gtksettings.[ch]: Propagate notification
of GDK settings changes to the GtkSettings object.
* gdk/gdkevents.[ch] gdk/gtk/gtksettings.c: Hook up the
double-click-timeout property to GDK.
* gdk/gdkcolor.[ch] gdk/gdkvisual.h gdk/gdkevent.[ch] gdk/gdkfont.[ch]:
Define GDK boxed types here.
* gdk/Makefile.am gdk/makeenums.pl: Generate source files
gdk/gdkenumtypes.[ch] for enum definitions.
* gtk/gtkcompat.h: Add defines for GTK_TYPE_GDK_*
* gtk/gtk-boxed.defs: Comment out GDK types
* gtk/gtktypeutils.h: Remove GDK types
* gtk/Makefile.am: No longer scan GDK headers for enumerataions
Mon Apr 2 16:41:08 2001 Owen Taylor <otaylor@redhat.com>
* Applied patch from Ron Steinke to add signal accumulators

View File

@ -1,3 +1,32 @@
Mon Apr 2 18:18:07 2001 Owen Taylor <otaylor@redhat.com>
* gdk/gdkevents.h: Add GdkEventSetting event for notification
of changes to system settings, gdk_setting_get() to retrieve
a single system setting.
* gdk/x11/gdkevents-x11.c: Bridge gdk_setting_get() and GdkEventSetting
to the draft XSETTINGS mechanism.
* gdk/x11/xsettings-{common,client}.[ch]: Sample-implementation of
XSETTINGS.
* gtk/gtkmain.c gtk/gtksettings.[ch]: Propagate notification
of GDK settings changes to the GtkSettings object.
* gdk/gdkevents.[ch] gdk/gtk/gtksettings.c: Hook up the
double-click-timeout property to GDK.
* gdk/gdkcolor.[ch] gdk/gdkvisual.h gdk/gdkevent.[ch] gdk/gdkfont.[ch]:
Define GDK boxed types here.
* gdk/Makefile.am gdk/makeenums.pl: Generate source files
gdk/gdkenumtypes.[ch] for enum definitions.
* gtk/gtkcompat.h: Add defines for GTK_TYPE_GDK_*
* gtk/gtk-boxed.defs: Comment out GDK types
* gtk/gtktypeutils.h: Remove GDK types
* gtk/Makefile.am: No longer scan GDK headers for enumerataions
Mon Apr 2 16:41:08 2001 Owen Taylor <otaylor@redhat.com>
* Applied patch from Ron Steinke to add signal accumulators

View File

@ -1,3 +1,32 @@
Mon Apr 2 18:18:07 2001 Owen Taylor <otaylor@redhat.com>
* gdk/gdkevents.h: Add GdkEventSetting event for notification
of changes to system settings, gdk_setting_get() to retrieve
a single system setting.
* gdk/x11/gdkevents-x11.c: Bridge gdk_setting_get() and GdkEventSetting
to the draft XSETTINGS mechanism.
* gdk/x11/xsettings-{common,client}.[ch]: Sample-implementation of
XSETTINGS.
* gtk/gtkmain.c gtk/gtksettings.[ch]: Propagate notification
of GDK settings changes to the GtkSettings object.
* gdk/gdkevents.[ch] gdk/gtk/gtksettings.c: Hook up the
double-click-timeout property to GDK.
* gdk/gdkcolor.[ch] gdk/gdkvisual.h gdk/gdkevent.[ch] gdk/gdkfont.[ch]:
Define GDK boxed types here.
* gdk/Makefile.am gdk/makeenums.pl: Generate source files
gdk/gdkenumtypes.[ch] for enum definitions.
* gtk/gtkcompat.h: Add defines for GTK_TYPE_GDK_*
* gtk/gtk-boxed.defs: Comment out GDK types
* gtk/gtktypeutils.h: Remove GDK types
* gtk/Makefile.am: No longer scan GDK headers for enumerataions
Mon Apr 2 16:41:08 2001 Owen Taylor <otaylor@redhat.com>
* Applied patch from Ron Steinke to add signal accumulators

View File

@ -1,3 +1,32 @@
Mon Apr 2 18:18:07 2001 Owen Taylor <otaylor@redhat.com>
* gdk/gdkevents.h: Add GdkEventSetting event for notification
of changes to system settings, gdk_setting_get() to retrieve
a single system setting.
* gdk/x11/gdkevents-x11.c: Bridge gdk_setting_get() and GdkEventSetting
to the draft XSETTINGS mechanism.
* gdk/x11/xsettings-{common,client}.[ch]: Sample-implementation of
XSETTINGS.
* gtk/gtkmain.c gtk/gtksettings.[ch]: Propagate notification
of GDK settings changes to the GtkSettings object.
* gdk/gdkevents.[ch] gdk/gtk/gtksettings.c: Hook up the
double-click-timeout property to GDK.
* gdk/gdkcolor.[ch] gdk/gdkvisual.h gdk/gdkevent.[ch] gdk/gdkfont.[ch]:
Define GDK boxed types here.
* gdk/Makefile.am gdk/makeenums.pl: Generate source files
gdk/gdkenumtypes.[ch] for enum definitions.
* gtk/gtkcompat.h: Add defines for GTK_TYPE_GDK_*
* gtk/gtk-boxed.defs: Comment out GDK types
* gtk/gtktypeutils.h: Remove GDK types
* gtk/Makefile.am: No longer scan GDK headers for enumerataions
Mon Apr 2 16:41:08 2001 Owen Taylor <otaylor@redhat.com>
* Applied patch from Ron Steinke to add signal accumulators

View File

@ -68,7 +68,6 @@ gdk_public_h_sources = @STRIP_BEGIN@ \
gdkpango.h \
gdkpixbuf.h \
gdkpixmap.h \
gdkprivate.h \
gdkproperty.h \
gdkregion.h \
gdkrgb.h \
@ -78,6 +77,12 @@ gdk_public_h_sources = @STRIP_BEGIN@ \
gdkwindow.h \
@STRIP_END@
gdk_headers = @STRIP_BEGIN@ \
$(gdk_public_h_sources) \
gdkenumtypes.h \
gdkprivate.h \
@STRIP_END@
gdk_c_sources = @STRIP_BEGIN@ \
gdk.c \
gdkcolor.c \
@ -115,8 +120,8 @@ libgdk_x11_includedir = $(includedir)/gtk-2.0/gdk
libgdk_x11_1_3_la_LIBADD = \
$(gtarget)/libgdk-$(gtarget).la
libgdk_x11_include_HEADERS = $(gdk_public_h_sources)
libgdk_x11_1_3_la_SOURCES = $(gdk_c_sources)
libgdk_x11_include_HEADERS = $(gdk_headers)
libgdk_x11_1_3_la_SOURCES = $(gdk_c_sources) gdkenumtypes.c
endif
if USE_NANOX
@ -125,8 +130,8 @@ libgdk_nanox_includedir = $(includedir)/gtk-2.0/gdk
libgdk_nanox_1_3_la_LIBADD = \
$(gtarget)/libgdk-$(gtarget).la
libgdk_nanox_include_HEADERS = $(gdk_public_h_sources)
libgdk_nanox_1_3_la_SOURCES = $(gdk_c_sources)
libgdk_nanox_include_HEADERS = $(gdk_headers)
libgdk_nanox_1_3_la_SOURCES = $(gdk_c_sources) gdkenumtypes.c
endif
if USE_LINUX_FB
@ -135,8 +140,8 @@ libgdk_linux_fb_includedir = $(includedir)/gtk-2.0/gdk
libgdk_linux_fb_1_3_la_LIBADD = \
$(gtarget)/libgdk-$(gtarget).la
libgdk_linux_fb_include_HEADERS = $(gdk_public_h_sources)
libgdk_linux_fb_1_3_la_SOURCES = $(gdk_c_sources)
libgdk_linux_fb_include_HEADERS = $(gdk_headers)
libgdk_linux_fb_1_3_la_SOURCES = $(gdk_c_sources) gdkenumtypes.c
endif
# now define the real one to workaround automake's mishandling
@ -173,7 +178,17 @@ install-exec-local: gdkconfig.h
if test -r $$file && cmp -s gdkconfig.h $$file; then :; \
else $(INSTALL_DATA) gdkconfig.h $$file; fi
BUILT_SOURCES = stamp-gc-h #note: not gdkconfig.h
#note: not gdkconfig.h
BUILT_SOURCES = stamp-gc-h @REBUILD@ gdkenumtypes.c gdkenumtypes.h
gdkenumtypes.h: @REBUILD@ $(gdk_public_h_sources) makeenums.pl
cd $(srcdir) \
&& $(PERL) ./makeenums.pl include $(gdk_public_h_sources) > gdkenumtypes.h
gdkenumtypes.c: @REBUILD@ $(gdk_public_h_sources) makeenums.pl
cd $(srcdir) \
&& $(PERL) ./makeenums.pl cfile $(gdk_public_h_sources) > gdkenumtypes.c
gdkconfig.h: stamp-gc-h
@if test -f gdkconfig.h; then :; \
else rm -f stamp-gc-h; $(MAKE) stamp-gc-h; fi

View File

@ -333,10 +333,10 @@ gdk_init_check (int *argc,
if (!result)
return FALSE;
gdk_events_init ();
gdk_visual_init ();
_gdk_windowing_window_init ();
_gdk_windowing_image_init ();
gdk_events_init ();
gdk_input_init ();
gdk_dnd_init ();

View File

@ -31,6 +31,7 @@
#include <gdk/gdkcursor.h>
#include <gdk/gdkdnd.h>
#include <gdk/gdkdrawable.h>
#include <gdk/gdkenumtypes.h>
#include <gdk/gdkevents.h>
#include <gdk/gdkfont.h>
#include <gdk/gdkgc.h>
@ -114,6 +115,8 @@ gint gdk_screen_height_mm (void) G_GNUC_CONST;
void gdk_flush (void);
void gdk_beep (void);
void gdk_set_double_click_time (guint msec);
/* Rectangle utilities
*/
gboolean gdk_rectangle_intersect (GdkRectangle *src1,

View File

@ -216,3 +216,35 @@ gdk_color_equal (const GdkColor *colora,
(colora->green == colorb->green) &&
(colora->blue == colorb->blue));
}
GType
gdk_color_get_type (void)
{
static GType our_type = 0;
if (our_type == 0)
our_type = g_boxed_type_register_static ("GdkColor",
NULL,
(GBoxedCopyFunc)gdk_color_copy,
(GBoxedFreeFunc)gdk_color_free,
FALSE);
return our_type;
}
/* We define this here to avoid having to create a new .C file just for this
* function. The rest of GdkVisual is platform-specific
*/
GType
gdk_visual_get_type (void)
{
static GType our_type = 0;
if (our_type == 0)
our_type = g_boxed_type_register_static ("GdkVisual",
NULL,
(GBoxedCopyFunc)gdk_visual_ref,
(GBoxedFreeFunc)gdk_visual_unref,
TRUE);
return our_type;
}

View File

@ -34,6 +34,7 @@ typedef struct _GdkColormapClass GdkColormapClass;
#define GDK_IS_COLORMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_COLORMAP))
#define GDK_COLORMAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_COLORMAP, GdkColormapClass))
#define GDK_TYPE_COLOR (gdk_color_get_type ())
struct _GdkColormap
{
@ -96,6 +97,8 @@ guint gdk_color_hash (const GdkColor *colora);
gboolean gdk_color_equal (const GdkColor *colora,
const GdkColor *colorb);
GType gdk_color_get_type (void);
/* The following functions are deprecated */
#ifndef GDK_DISABLE_DEPRECATED
void gdk_colors_store (GdkColormap *colormap,

View File

@ -30,11 +30,6 @@
typedef struct _GdkIOClosure GdkIOClosure;
typedef struct _GdkEventPrivate GdkEventPrivate;
#define DOUBLE_CLICK_TIME 250
#define TRIPLE_CLICK_TIME 500
#define DOUBLE_CLICK_DIST 5
#define TRIPLE_CLICK_DIST 5
typedef enum
{
/* Following flag is set for events on the event queue during
@ -84,6 +79,11 @@ GDestroyNotify gdk_event_notify = NULL;
GPollFD event_poll_fd;
static guint double_click_time = 250;
#define TRIPLE_CLICK_TIME (2*double_click_time)
#define DOUBLE_CLICK_DIST 5
#define TRIPLE_CLICK_DIST 5
/*********************************************
* Functions for maintaining the event queue *
*********************************************/
@ -326,7 +326,12 @@ gdk_event_copy (GdkEvent *event)
if (event->expose.region)
new_event->expose.region = gdk_region_copy (event->expose.region);
break;
default:
case GDK_SETTING:
new_event->setting.name = g_strdup (new_event->setting.name);
break;
default:
break;
}
@ -399,6 +404,10 @@ gdk_event_free (GdkEvent *event)
g_free (event->motion.axes);
break;
case GDK_SETTING:
g_free (event->setting.name);
break;
default:
break;
}
@ -464,6 +473,7 @@ gdk_event_get_time (GdkEvent *event)
case GDK_MAP:
case GDK_UNMAP:
case GDK_WINDOW_STATE:
case GDK_SETTING:
/* return current time */
break;
}
@ -540,6 +550,7 @@ gdk_event_get_state (GdkEvent *event,
case GDK_MAP:
case GDK_UNMAP:
case GDK_WINDOW_STATE:
case GDK_SETTING:
/* no state field */
break;
}
@ -791,7 +802,7 @@ gdk_event_button_generate (GdkEvent *event)
button_number[1] = -1;
button_number[0] = -1;
}
else if ((event->button.time < (button_click_time[0] + DOUBLE_CLICK_TIME)) &&
else if ((event->button.time < (button_click_time[0] + double_click_time)) &&
(event->button.window == button_window[0]) &&
(event->button.button == button_number[0]))
{
@ -867,3 +878,22 @@ gdk_synthesize_window_state (GdkWindow *window,
}
}
void
gdk_set_double_click_time (guint msec)
{
double_click_time = msec;
}
GType
gdk_event_get_type (void)
{
static GType our_type = 0;
if (our_type == 0)
our_type = g_boxed_type_register_static ("GdkEvent",
NULL,
(GBoxedCopyFunc)gdk_event_copy,
(GBoxedFreeFunc)gdk_event_free,
FALSE);
return our_type;
}

View File

@ -1,6 +1,7 @@
#ifndef __GDK_EVENTS_H__
#define __GDK_EVENTS_H__
#include <gdk/gdkcolor.h>
#include <gdk/gdktypes.h>
#include <gdk/gdkdnd.h>
#include <gdk/gdkinput.h>
@ -9,6 +10,8 @@
extern "C" {
#endif /* __cplusplus */
#define GDK_TYPE_EVENT (gdk_event_get_type ())
#define GDK_PRIORITY_EVENTS (G_PRIORITY_DEFAULT)
#define GDK_PRIORITY_REDRAW (G_PRIORITY_HIGH_IDLE + 20)
@ -30,6 +33,7 @@ typedef struct _GdkEventProximity GdkEventProximity;
typedef struct _GdkEventClient GdkEventClient;
typedef struct _GdkEventDND GdkEventDND;
typedef struct _GdkEventWindowState GdkEventWindowState;
typedef struct _GdkEventSetting GdkEventSetting;
typedef union _GdkEvent GdkEvent;
@ -111,7 +115,8 @@ typedef enum
GDK_VISIBILITY_NOTIFY = 29,
GDK_NO_EXPOSE = 30,
GDK_SCROLL = 31,
GDK_WINDOW_STATE = 32
GDK_WINDOW_STATE = 32,
GDK_SETTING = 33
} GdkEventType;
/* Event masks. (Used to select what types of events a window
@ -202,6 +207,13 @@ typedef enum
GDK_WINDOW_STATE_STICKY = 1 << 3
} GdkWindowState;
typedef enum
{
GDK_SETTING_ACTION_NEW,
GDK_SETTING_ACTION_CHANGED,
GDK_SETTING_ACTION_DELETED
} GdkSettingAction;
struct _GdkEventAny
{
GdkEventType type;
@ -376,6 +388,14 @@ struct _GdkEventClient
} data;
};
struct _GdkEventSetting
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
GdkSettingAction action;
char *name;
};
struct _GdkEventWindowState
{
@ -418,8 +438,11 @@ union _GdkEvent
GdkEventClient client;
GdkEventDND dnd;
GdkEventWindowState window_state;
GdkEventSetting setting;
};
GType gdk_event_get_type (void);
gboolean gdk_events_pending (void);
GdkEvent* gdk_event_get (void);
@ -452,6 +475,8 @@ void gdk_add_client_message_filter (GdkAtom message_type,
GdkFilterFunc func,
gpointer data);
gboolean gdk_setting_get (const gchar *name,
GValue *value);
#ifdef __cplusplus
}

View File

@ -27,6 +27,20 @@
#include "gdkfont.h"
#include "gdkinternals.h"
GType
gdk_font_get_type (void)
{
static GType our_type = 0;
if (our_type == 0)
our_type = g_boxed_type_register_static ("GdkFont",
NULL,
(GBoxedCopyFunc)gdk_font_ref,
(GBoxedFreeFunc)gdk_font_unref,
TRUE);
return our_type;
}
GdkFont*
gdk_font_ref (GdkFont *font)
{

View File

@ -10,6 +10,8 @@
extern "C" {
#endif /* __cplusplus */
#define GDK_TYPE_FONT gdk_font_get_type
/* Types of font.
* GDK_FONT_FONT: the font is an XFontStruct.
* GDK_FONT_FONTSET: the font is an XFontSet used for I18N.
@ -27,6 +29,8 @@ struct _GdkFont
gint descent;
};
GType gdk_font_get_type (void);
GdkFont* gdk_font_load (const gchar *font_name);
GdkFont* gdk_fontset_load (const gchar *fontset_name);

View File

@ -7,6 +7,8 @@
extern "C" {
#endif /* __cplusplus */
#define GDK_TYPE_VISUAL gdk_visual_get_type
/* Types of visuals.
* StaticGray:
* Grayscale:
@ -58,6 +60,8 @@ struct _GdkVisual
gint blue_prec;
};
GType gdk_visual_get_type (void);
gint gdk_visual_get_best_depth (void);
GdkVisualType gdk_visual_get_best_type (void);
GdkVisual* gdk_visual_get_system (void);

View File

@ -478,8 +478,7 @@ gdk_window_add_filter (GdkWindow *window,
GList *tmp_list;
GdkEventFilter *filter;
g_return_if_fail (window != NULL);
g_return_if_fail (GDK_IS_WINDOW (window));
g_return_if_fail (window == NULL || GDK_IS_WINDOW (window));
private = (GdkWindowObject*) window;
if (private && GDK_WINDOW_DESTROYED (window))
@ -517,8 +516,7 @@ gdk_window_remove_filter (GdkWindow *window,
GList *tmp_list, *node;
GdkEventFilter *filter;
g_return_if_fail (window != NULL);
g_return_if_fail (GDK_IS_WINDOW (window));
g_return_if_fail (window == NULL || GDK_IS_WINDOW (window));
private = (GdkWindowObject*) window;

279
gdk/makeenums.pl Executable file
View File

@ -0,0 +1,279 @@
#!/usr/bin/perl -w
# Information about the current enumeration
my $flags; # Is enumeration a bitmask
my $seenbitshift; # Have we seen bitshift operators?
my $prefix; # Prefix for this enumeration
my $enumname; # Name for this enumeration
my $firstenum = 1; # Is this the first enumeration in file?
my @entries; # [ $name, $val ] for each entry
sub parse_options {
my $opts = shift;
my @opts;
for $opt (split /\s*,\s*/, $opts) {
my ($key,$val) = $opt =~ /\s*(\w+)(?:=(\S+))?/;
defined $val or $val = 1;
push @opts, $key, $val;
}
@opts;
}
sub parse_entries {
my $file = shift;
while (<$file>) {
# Read lines until we have no open comments
while (m@/\*
([^*]|\*(?!/))*$
@x) {
my $new;
defined ($new = <$file>) || die "Unmatched comment";
$_ .= $new;
}
# Now strip comments
s@/\*(?!<)
([^*]+|\*(?!/))*
\*/@@gx;
s@\n@ @;
next if m@^\s*$@;
# Handle include files
if (/^\#include\s*<([^>]*)>/ ) {
my $file= "../$1";
open NEWFILE, $file or die "Cannot open include file $file: $!\n";
if (parse_entries (\*NEWFILE)) {
return 1;
} else {
next;
}
}
if (/^\s*\}\s*(\w+)/) {
$enumname = $1;
return 1;
}
if (m@^\s*
(\w+)\s* # name
(?:=( # value
(?:[^,/]|/(?!\*))*
))?,?\s*
(?:/\*< # options
(([^*]|\*(?!/))*)
>\*/)?
\s*$
@x) {
my ($name, $value, $options) = ($1,$2,$3);
if (!defined $flags && defined $value && $value =~ /<</) {
$seenbitshift = 1;
}
if (defined $options) {
my %options = parse_options($options);
if (!defined $options{skip}) {
push @entries, [ $name, $options{nick} ];
}
} else {
push @entries, [ $name ];
}
} else {
print STDERR "Can't understand: $_\n";
}
}
return 0;
}
my $gen_arrays = 0;
my $gen_defs = 0;
my $gen_includes = 0;
my $gen_cfile = 0;
# Parse arguments
if (@ARGV) {
if ($ARGV[0] eq "arrays") {
shift @ARGV;
$gen_arrays = 1;
} elsif ($ARGV[0] eq "defs") {
shift @ARGV;
$gen_defs = 1;
} elsif ($ARGV[0] eq "include") {
shift @ARGV;
$gen_includes = 1;
} elsif ($ARGV[0] eq "cfile") {
shift @ARGV;
$gen_cfile = 1;
}
}
if ($gen_defs) {
print ";; generated by makeenums.pl ; -*- scheme -*-\n\n";
} else {
print "/* Generated by makeenums.pl */\n\n";
}
if ($gen_includes) {
print "#ifndef __GDK_ENUM_TYPES_H__\n";
print "#define __GDK_ENUM_TYPES_H__\n";
}
if ($gen_cfile) {
print "#include \"gdk.h\"\n";
}
ENUMERATION:
while (<>) {
if (eof) {
close (ARGV); # reset line numbering
$firstenum = 1; # Flag to print filename at next enum
}
if (m@^\s*typedef\s+enum\s*
({)?\s*
(?:/\*<
(([^*]|\*(?!/))*)
>\*/)?
@x) {
print "\n";
if (defined $2) {
my %options = parse_options($2);
$prefix = $options{prefix};
$flags = $options{flags};
} else {
$prefix = undef;
$flags = undef;
}
# Didn't have trailing '{' look on next lines
if (!defined $1) {
while (<>) {
if (s/^\s*\{//) {
last;
}
}
}
$seenbitshift = 0;
@entries = ();
# Now parse the entries
parse_entries (\*ARGV);
# figure out if this was a flags or enums enumeration
if (!defined $flags) {
$flags = $seenbitshift;
}
# Autogenerate a prefix
if (!defined $prefix) {
for (@entries) {
my $name = $_->[0];
if (defined $prefix) {
my $tmp = ~ ($name ^ $prefix);
($tmp) = $tmp =~ /(^\xff*)/;
$prefix = $prefix & $tmp;
} else {
$prefix = $name;
}
}
# Trim so that it ends in an underscore
$prefix =~ s/_[^_]*$/_/;
}
for $entry (@entries) {
my ($name,$nick) = @{$entry};
if (!defined $nick) {
($nick = $name) =~ s/^$prefix//;
$nick =~ tr/_/-/;
$nick = lc($nick);
@{$entry} = ($name, $nick);
}
}
# Spit out the output
my $valuename = $enumname;
$valuename =~ s/([^A-Z])([A-Z])/$1_$2/g;
$valuename =~ s/([A-Z][A-Z])([A-Z][0-9a-z])/$1_$2/g;
$valuename = lc($valuename);
my $typemacro = $enumname;
$typemacro =~ s/([^A-Z])([A-Z])/$1_$2/g;
$typemacro =~ s/([A-Z][A-Z])([A-Z][0-9a-z])/$1_$2/g;
$typemacro = uc($valuename);
$typemacro =~ s/GDK_/GDK_TYPE_/g;
if ($gen_defs) {
if ($firstenum) {
print qq(\n; enumerations from "$ARGV"\n);
$firstenum = 0;
}
print "\n(define-".($flags ? "flags" : "enum")." $enumname";
for (@entries) {
my ($name,$nick) = @{$_};
print "\n ($nick $name)";
}
print ")\n";
} elsif ($gen_arrays) {
print "static const GtkEnumValue _${valuename}_values[] = {\n";
for (@entries) {
my ($name,$nick) = @{$_};
print qq( { $name, "$name", "$nick" },\n);
}
print " { 0, NULL, NULL }\n";
print "};\n";
} elsif ($gen_includes) {
print "GType ${valuename}_get_type (void);\n";
print "#define ${typemacro} ${valuename}_get_type ()\n";
} elsif ($gen_cfile) {
print (<<EOF);
GType
${valuename}_get_type (void)
{
static GType etype = 0;
if (etype == 0)
{
EOF
if ($flags) {
print " static const GFlagsValue values[] = {\n";
} else {
print " static const GEnumValue values[] = {\n";
}
for (@entries) {
my ($name,$nick) = @{$_};
print qq( { $name, "$name", "$nick" },\n);
}
print " { 0, NULL, NULL }\n";
print " };\n";
if ($flags) {
print " etype = g_flags_register_static (\"$enumname\", values);\n";
} else {
print " etype = g_enum_register_static (\"$enumname\", values);\n";
}
print (<<EOF);
}
return etype;
}
EOF
}
print "\n";
}
}
if ($gen_includes) {
print "#endif /* __GDK_ENUMS_H__ */\n";
}

View File

@ -70,6 +70,10 @@ libgdk_x11_la_SOURCES = \
gdkx.h \
gdkprivate-x11.h \
gdkinputprivate.h \
xsettings-client.h \
xsettings-client.c \
xsettings-common.h \
xsettings-common.c \
$(xinput_sources)
libgdkinclude_HEADERS = \

View File

@ -31,6 +31,8 @@
#include "gdkkeysyms.h"
#include "xsettings-client.h"
#if HAVE_CONFIG_H
# include <config.h>
# if STDC_HEADERS
@ -103,6 +105,15 @@ GdkFilterReturn gdk_wm_protocols_filter (GdkXEvent *xev,
GdkEvent *event,
gpointer data);
static void gdk_xsettings_watch_cb (Window window,
Bool is_start,
long mask,
void *cb_data);
static void gdk_xsettings_notify_cb (const char *name,
XSettingsAction action,
XSettingsSetting *setting,
void *data);
/* Private variable declarations
*/
@ -125,6 +136,8 @@ static GPollFD event_poll_fd;
static Window wmspec_check_window = None;
static XSettingsClient *xsettings_client;
/*********************************************
* Functions for maintaining the event queue *
*********************************************/
@ -151,6 +164,11 @@ gdk_events_init (void)
gdk_add_client_message_filter (gdk_wm_protocols,
gdk_wm_protocols_filter, NULL);
xsettings_client = xsettings_client_new (gdk_display, DefaultScreen (gdk_display),
gdk_xsettings_notify_cb,
gdk_xsettings_watch_cb,
NULL);
}
/*
@ -1772,5 +1790,156 @@ gdk_net_wm_supports (GdkAtom property)
return gdk_net_wm_supports (property);
}
static struct
{
const char *xsettings_name;
const char *gdk_name;
} settings_map[] = {
{ "Net/DoubleClickTime", "double-click-timeout" },
{ "Net/DragThreshold", "drag-threshold" }
};
static void
gdk_xsettings_notify_cb (const char *name,
XSettingsAction action,
XSettingsSetting *setting,
void *data)
{
GdkEvent new_event;
int i;
new_event.type = GDK_SETTING;
new_event.setting.window = NULL;
new_event.setting.send_event = FALSE;
new_event.setting.name = NULL;
for (i = 0; i < G_N_ELEMENTS (settings_map) ; i++)
if (strcmp (settings_map[i].xsettings_name, name) == 0)
{
new_event.setting.name = g_strdup (settings_map[i].gdk_name);
break;
}
if (!new_event.setting.name)
return;
switch (action)
{
case XSETTINGS_ACTION_NEW:
new_event.setting.action = GDK_SETTING_ACTION_NEW;
break;
case XSETTINGS_ACTION_CHANGED:
new_event.setting.action = GDK_SETTING_ACTION_CHANGED;
break;
case XSETTINGS_ACTION_DELETED:
new_event.setting.action = GDK_SETTING_ACTION_DELETED;
break;
}
gdk_event_put (&new_event);
}
static gboolean
check_transform (const gchar *xsettings_name,
GType src_type,
GType dest_type)
{
if (!g_value_type_transformable (src_type, dest_type))
{
g_warning ("Cannot tranform xsetting %s of type %s to type %s\n",
xsettings_name,
g_type_name (src_type),
g_type_name (dest_type));
return FALSE;
}
else
return TRUE;
}
gboolean
gdk_setting_get (const gchar *name,
GValue *value)
{
const char *xsettings_name = NULL;
XSettingsResult result;
XSettingsSetting *setting;
gboolean success = FALSE;
gint i;
for (i = 0; i < G_N_ELEMENTS (settings_map) ; i++)
if (strcmp (settings_map[i].gdk_name, name) == 0)
{
xsettings_name = settings_map[i].xsettings_name;
break;
}
if (!xsettings_name)
return FALSE;
result = xsettings_client_get_setting (xsettings_client, xsettings_name, &setting);
if (result != XSETTINGS_SUCCESS)
return FALSE;
switch (setting->type)
{
case XSETTINGS_TYPE_INT:
if (check_transform (xsettings_name, G_TYPE_INT, G_VALUE_TYPE (value)))
{
g_value_set_int (value, setting->data.v_int);
success = TRUE;
}
break;
case XSETTINGS_TYPE_STRING:
if (check_transform (xsettings_name, G_TYPE_STRING, G_VALUE_TYPE (value)))
{
g_value_set_string (value, setting->data.v_string);
success = TRUE;
}
break;
case XSETTINGS_TYPE_COLOR:
if (!check_transform (xsettings_name, GDK_TYPE_COLOR, G_VALUE_TYPE (value)))
{
GdkColor color;
color.pixel = 0;
color.red = setting->data.v_color.red;
color.green = setting->data.v_color.green;
color.blue = setting->data.v_color.blue;
g_value_set_boxed (value, &color);
success = TRUE;
}
break;
}
xsettings_setting_free (setting);
return success;
}
GdkFilterReturn
gdk_xsettings_client_event_filter (GdkXEvent *xevent,
GdkEvent *event,
gpointer data)
{
if (xsettings_client_process_event (xsettings_client, (XEvent *)xevent))
return GDK_FILTER_REMOVE;
else
return GDK_FILTER_CONTINUE;
}
static void
gdk_xsettings_watch_cb (Window window,
Bool is_start,
long mask,
void *cb_data)
{
GdkWindow *gdkwin;
gdkwin = gdk_window_lookup (window);
if (is_start)
gdk_window_add_filter (gdkwin, gdk_xsettings_client_event_filter, NULL);
else
gdk_window_remove_filter (gdkwin, gdk_xsettings_client_event_filter, NULL);
}

535
gdk/x11/xsettings-client.c Normal file
View File

@ -0,0 +1,535 @@
/*
* Copyright © 2001 Red Hat, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Red Hat not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. Red Hat makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Author: Owen Taylor, Red Hat, Inc.
*/
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <X11/Xlib.h>
#include <X11/Xmd.h> /* For CARD16 */
#include "xsettings-client.h"
struct _XSettingsClient
{
Display *display;
int screen;
XSettingsNotifyFunc notify;
XSettingsWatchFunc watch;
void *cb_data;
Window manager_window;
Atom manager_atom;
Atom selection_atom;
Atom xsettings_atom;
XSettingsList *settings;
};
static void
notify_changes (XSettingsClient *client,
XSettingsList *old_list)
{
XSettingsList *old_iter = old_list;
XSettingsList *new_iter = client->settings;
if (!client->notify)
return;
while (old_iter || new_iter)
{
int cmp;
if (old_iter && new_iter)
cmp = strcmp (old_iter->setting->name, new_iter->setting->name);
else if (old_iter)
cmp = -1;
else
cmp = 1;
if (cmp < 0)
{
client->notify (old_iter->setting->name,
XSETTINGS_ACTION_DELETED,
NULL,
client->cb_data);
}
else if (cmp == 0)
{
if (!xsettings_setting_equal (old_iter->setting,
new_iter->setting))
client->notify (old_iter->setting->name,
XSETTINGS_ACTION_CHANGED,
new_iter->setting,
client->cb_data);
}
else
{
client->notify (new_iter->setting->name,
XSETTINGS_ACTION_NEW,
new_iter->setting,
client->cb_data);
}
if (old_iter)
old_iter = old_iter->next;
if (new_iter)
new_iter = new_iter->next;
}
}
static int
ignore_errors (Display *display, XErrorEvent *event)
{
return True;
}
static char local_byte_order = '\0';
#define BYTES_LEFT(buffer) ((buffer)->data + (buffer)->len - (buffer)->pos)
static XSettingsResult
fetch_card16 (XSettingsBuffer *buffer,
CARD16 *result)
{
CARD16 x;
if (BYTES_LEFT (buffer) < 2)
return XSETTINGS_ACCESS;
x = *(CARD16 *)buffer->pos;
buffer->pos += 2;
if (buffer->byte_order == local_byte_order)
*result = x;
else
*result = (x << 8) | (x >> 8);
return XSETTINGS_SUCCESS;
}
static XSettingsResult
fetch_ushort (XSettingsBuffer *buffer,
unsigned short *result)
{
CARD16 x;
XSettingsResult r;
r = fetch_card16 (buffer, &x);
if (r == XSETTINGS_SUCCESS)
*result = x;
return r;
}
static XSettingsResult
fetch_card32 (XSettingsBuffer *buffer,
CARD32 *result)
{
CARD32 x;
if (BYTES_LEFT (buffer) < 4)
return XSETTINGS_ACCESS;
x = *(CARD32 *)buffer->pos;
buffer->pos += 4;
if (buffer->byte_order == local_byte_order)
*result = x;
else
*result = (x << 24) | ((x & 0xff00) << 8) | ((x & 0xff0000) >> 8) | (x >> 24);
return XSETTINGS_SUCCESS;
}
static XSettingsResult
fetch_card8 (XSettingsBuffer *buffer,
CARD8 *result)
{
if (BYTES_LEFT (buffer) < 1)
return XSETTINGS_ACCESS;
*result = *(CARD32 *)buffer->pos;
buffer->pos += 1;
return XSETTINGS_SUCCESS;
}
#define XSETTINGS_PAD(n,m) ((n + m - 1) & (~(m-1)))
static XSettingsList *
parse_settings (unsigned char *data,
size_t len)
{
XSettingsBuffer buffer;
XSettingsResult result = XSETTINGS_SUCCESS;
XSettingsList *settings = NULL;
CARD32 serial;
CARD32 n_entries;
CARD32 i;
XSettingsSetting *setting = NULL;
local_byte_order = xsettings_byte_order ();
buffer.pos = buffer.data = data;
buffer.len = len;
result = fetch_card8 (&buffer, &buffer.byte_order);
if (buffer.byte_order != MSBFirst &&
buffer.byte_order != LSBFirst)
{
fprintf (stderr, "Invalid byte order in XSETTINGS property\n");
result = XSETTINGS_FAILED;
goto out;
}
buffer.pos += 3;
result = fetch_card32 (&buffer, &serial);
if (result != XSETTINGS_SUCCESS)
goto out;
result = fetch_card32 (&buffer, &n_entries);
if (result != XSETTINGS_SUCCESS)
goto out;
for (i = 0; i < n_entries; i++)
{
CARD8 type;
CARD16 name_len;
CARD32 v_int;
size_t pad_len;
result = fetch_card8 (&buffer, &type);
if (result != XSETTINGS_SUCCESS)
goto out;
buffer.pos += 1;
result = fetch_card16 (&buffer, &name_len);
if (result != XSETTINGS_SUCCESS)
goto out;
pad_len = XSETTINGS_PAD(name_len, 4);
if (BYTES_LEFT (&buffer) < pad_len)
{
result = XSETTINGS_ACCESS;
goto out;
}
setting = malloc (sizeof *setting);
if (!setting)
{
result = XSETTINGS_NO_MEM;
goto out;
}
setting->type = XSETTINGS_TYPE_INT; /* No allocated memory */
setting->name = malloc (name_len + 1);
if (!setting->name)
{
result = XSETTINGS_NO_MEM;
goto out;
}
memcpy (setting->name, buffer.pos, name_len);
setting->name[name_len] = '\0';
buffer.pos += pad_len;
result = fetch_card32 (&buffer, &v_int);
if (result != XSETTINGS_SUCCESS)
goto out;
setting->last_change_serial = v_int;
switch (type)
{
case XSETTINGS_TYPE_INT:
result = fetch_card32 (&buffer, &v_int);
if (result != XSETTINGS_SUCCESS)
goto out;
setting->data.v_int = (INT32)v_int;
break;
case XSETTINGS_TYPE_STRING:
result = fetch_card32 (&buffer, &v_int);
if (result != XSETTINGS_SUCCESS)
goto out;
pad_len = XSETTINGS_PAD (v_int, 4);
if (v_int + 1 == 0 || /* Guard against wrap-around */
BYTES_LEFT (&buffer) < pad_len)
{
result = XSETTINGS_ACCESS;
goto out;
}
setting->data.v_string = malloc (v_int + 1);
if (!setting->data.v_string)
{
result = XSETTINGS_NO_MEM;
goto out;
}
memcpy (setting->data.v_string, buffer.pos, v_int);
setting->data.v_string[v_int] = '\0';
buffer.pos += pad_len;
break;
case XSETTINGS_TYPE_COLOR:
result = fetch_ushort (&buffer, &setting->data.v_color.red);
if (result != XSETTINGS_SUCCESS)
goto out;
result = fetch_ushort (&buffer, &setting->data.v_color.green);
if (result != XSETTINGS_SUCCESS)
goto out;
result = fetch_ushort (&buffer, &setting->data.v_color.blue);
if (result != XSETTINGS_SUCCESS)
goto out;
result = fetch_ushort (&buffer, &setting->data.v_color.alpha);
if (result != XSETTINGS_SUCCESS)
goto out;
break;
default:
/* Quietly ignore unknown types */
break;
}
setting->type = type;
result = xsettings_list_insert (&settings, setting);
if (result != XSETTINGS_SUCCESS)
goto out;
setting = NULL;
}
out:
if (result != XSETTINGS_SUCCESS)
{
switch (result)
{
case XSETTINGS_NO_MEM:
fprintf(stderr, "Out of memory reading XSETTINGS property\n");
break;
case XSETTINGS_ACCESS:
fprintf(stderr, "Invalid XSETTINGS property (read off end)\n");
break;
case XSETTINGS_DUPLICATE_ENTRY:
fprintf (stderr, "Duplicate XSETTINGS entry for '%s'\n", setting->name);
case XSETTINGS_FAILED:
case XSETTINGS_SUCCESS:
case XSETTINGS_NO_ENTRY:
break;
}
if (setting)
xsettings_setting_free (setting);
xsettings_list_free (settings);
settings = NULL;
}
return settings;
}
static void
read_settings (XSettingsClient *client)
{
Atom type;
int format;
unsigned long n_items;
unsigned long bytes_after;
unsigned char *data;
int result;
int (*old_handler) (Display *, XErrorEvent *);
XSettingsList *old_list = client->settings;
client->settings = NULL;
old_handler = XSetErrorHandler (ignore_errors);
result = XGetWindowProperty (client->display, client->manager_window,
client->xsettings_atom, 0, LONG_MAX,
False, client->xsettings_atom,
&type, &format, &n_items, &bytes_after, &data);
XSetErrorHandler (old_handler);
if (result == Success && type == client->xsettings_atom)
{
if (format != 8)
{
fprintf (stderr, "Invalid format for XSETTINGS property %d", format);
}
else
client->settings = parse_settings (data, n_items);
XFree (data);
}
notify_changes (client, old_list);
xsettings_list_free (old_list);
}
static void
add_events (Display *display,
Window window,
long mask)
{
XWindowAttributes attr;
XGetWindowAttributes (display, window, &attr);
XSelectInput (display, window, attr.your_event_mask | mask);
}
static void
check_manager_window (XSettingsClient *client)
{
if (client->manager_window && client->watch)
client->watch (client->manager_window, False, 0, client->cb_data);
XGrabServer (client->display);
client->manager_window = XGetSelectionOwner (client->display,
client->selection_atom);
if (client->manager_window)
XSelectInput (client->display, client->manager_window,
PropertyChangeMask | StructureNotifyMask);
XUngrabServer (client->display);
XFlush (client->display);
if (client->manager_window && client->watch)
client->watch (client->manager_window, True,
PropertyChangeMask | StructureNotifyMask,
client->cb_data);
read_settings (client);
}
XSettingsClient *
xsettings_client_new (Display *display,
int screen,
XSettingsNotifyFunc notify,
XSettingsWatchFunc watch,
void *cb_data)
{
XSettingsClient *client;
char buffer[256];
client = malloc (sizeof *client);
if (!client)
return NULL;
client->display = display;
client->screen = screen;
client->notify = notify;
client->watch = watch;
client->cb_data = cb_data;
client->manager_window = None;
client->settings = NULL;
sprintf(buffer, "_XSETTINGS_S%d", screen);
client->selection_atom = XInternAtom (display, buffer, False);
client->xsettings_atom = XInternAtom (display, "_XSETTINGS_SETTINGS", False);
client->manager_atom = XInternAtom (display, "MANAGER", False);
/* Select on StructureNotify so we get MANAGER events
*/
add_events (display, RootWindow (display, screen), StructureNotifyMask);
if (client->watch)
client->watch (RootWindow (display, screen), True, StructureNotifyMask,
client->cb_data);
check_manager_window (client);
return client;
}
void
xsettings_client_destroy (XSettingsClient *client)
{
if (client->watch)
client->watch (RootWindow (client->display, client->screen),
False, 0, client->cb_data);
if (client->manager_window && client->watch)
client->watch (client->manager_window, False, 0, client->cb_data);
xsettings_list_free (client->settings);
free (client);
}
XSettingsResult
xsettings_client_get_setting (XSettingsClient *client,
const char *name,
XSettingsSetting **setting)
{
XSettingsSetting *search = xsettings_list_lookup (client->settings, name);
if (search)
{
*setting = xsettings_setting_copy (search);
return *setting ? XSETTINGS_SUCCESS : XSETTINGS_NO_MEM;
}
else
return XSETTINGS_NO_ENTRY;
}
Bool
xsettings_client_process_event (XSettingsClient *client,
XEvent *xev)
{
/* The checks here will not unlikely cause us to reread
* the properties from the manager window a number of
* times when the manager changes from A->B. But manager changes
* are going to be pretty rare.
*/
if (xev->xany.window == RootWindow (client->display, client->screen))
{
if (xev->xany.type == ClientMessage &&
xev->xclient.message_type == client->manager_atom)
{
check_manager_window (client);
return True;
}
}
else if (xev->xany.window == client->manager_window)
{
if (xev->xany.type == DestroyNotify)
{
check_manager_window (client);
return True;
}
else if (xev->xany.type == PropertyNotify)
{
read_settings (client);
return True;
}
}
return False;
}

View File

@ -0,0 +1,68 @@
/*
* Copyright © 2001 Red Hat, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Red Hat not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. Red Hat makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Author: Owen Taylor, Red Hat, Inc.
*/
#ifndef XSETTINGS_CLIENT_H
#define XSETTINGS_CLIENT_H
#include <X11/Xlib.h>
#include "xsettings-common.h"
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
typedef struct _XSettingsClient XSettingsClient;
typedef enum
{
XSETTINGS_ACTION_NEW,
XSETTINGS_ACTION_CHANGED,
XSETTINGS_ACTION_DELETED,
} XSettingsAction;
typedef void (*XSettingsNotifyFunc) (const char *name,
XSettingsAction action,
XSettingsSetting *setting,
void *cb_data);
typedef void (*XSettingsWatchFunc) (Window window,
Bool is_start,
long mask,
void *cb_data);
XSettingsClient *xsettings_client_new (Display *display,
int screen,
XSettingsNotifyFunc notify,
XSettingsWatchFunc watch,
void *cb_data);
void xsettings_client_destroy (XSettingsClient *client);
Bool xsettings_client_process_event (XSettingsClient *client,
XEvent *xev);
XSettingsResult xsettings_client_get_setting (XSettingsClient *client,
const char *name,
XSettingsSetting **setting);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* XSETTINGS_CLIENT_H */

261
gdk/x11/xsettings-common.c Normal file
View File

@ -0,0 +1,261 @@
/*
* Copyright © 2001 Red Hat, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Red Hat not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. Red Hat makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Author: Owen Taylor, Red Hat, Inc.
*/
#include "string.h"
#include "stdlib.h"
#include <X11/Xlib.h>
#include <X11/Xmd.h> /* For CARD32 */
#include "xsettings-common.h"
XSettingsSetting *
xsettings_setting_copy (XSettingsSetting *setting)
{
XSettingsSetting *result;
size_t str_len;
result = malloc (sizeof *result);
if (!result)
return NULL;
str_len = strlen (setting->name);
result->name = malloc (str_len + 1);
if (!result->name)
goto err;
memcpy (result->name, setting->name, str_len + 1);
result->type = setting->type;
switch (setting->type)
{
case XSETTINGS_TYPE_INT:
result->data.v_int = setting->data.v_int;
break;
case XSETTINGS_TYPE_COLOR:
result->data.v_color = setting->data.v_color;
break;
case XSETTINGS_TYPE_STRING:
str_len = strlen (setting->data.v_string);
result->data.v_string = malloc (str_len + 1);
if (!result->data.v_string)
goto err;
memcpy (result->data.v_string, setting->data.v_string, str_len + 1);
break;
}
result->last_change_serial = setting->last_change_serial;
return result;
err:
if (result->name)
free (result->name);
free (result);
return NULL;
}
XSettingsList *
xsettings_list_copy (XSettingsList *list)
{
XSettingsList *new = NULL;
XSettingsList *old_iter = list;
XSettingsList *new_iter = NULL;
while (old_iter)
{
XSettingsList *new_node;
new_node = malloc (sizeof *new_node);
if (!new_node)
goto error;
new_node->setting = xsettings_setting_copy (old_iter->setting);
if (!new_node->setting)
{
free (new_node);
goto error;
}
if (new_iter)
new_iter->next = new_node;
else
new = new_node;
new_iter = new_node;
old_iter = old_iter->next;
}
return new;
error:
xsettings_list_free (new);
return NULL;
}
int
xsettings_setting_equal (XSettingsSetting *setting_a,
XSettingsSetting *setting_b)
{
if (setting_a->type != setting_b->type)
return 0;
if (strcmp (setting_a->name, setting_b->name) != 0)
return 0;
switch (setting_a->type)
{
case XSETTINGS_TYPE_INT:
return setting_a->data.v_int == setting_b->data.v_int;
case XSETTINGS_TYPE_COLOR:
return (setting_a->data.v_color.red == setting_b->data.v_color.red &&
setting_a->data.v_color.green == setting_b->data.v_color.green &&
setting_a->data.v_color.blue == setting_b->data.v_color.blue &&
setting_a->data.v_color.alpha == setting_b->data.v_color.alpha);
case XSETTINGS_TYPE_STRING:
return strcmp (setting_a->data.v_string, setting_b->data.v_string) == 0;
}
return 0;
}
void
xsettings_setting_free (XSettingsSetting *setting)
{
if (setting->type == XSETTINGS_TYPE_STRING)
free (setting->data.v_string);
free (setting);
}
void
xsettings_list_free (XSettingsList *list)
{
while (list)
{
XSettingsList *next = list->next;
xsettings_setting_free (list->setting);
free (list);
list = next;
}
}
XSettingsResult
xsettings_list_insert (XSettingsList **list,
XSettingsSetting *setting)
{
XSettingsList *node;
XSettingsList *iter;
XSettingsList *last = NULL;
node = malloc (sizeof *node);
if (!node)
return XSETTINGS_NO_MEM;
node->setting = setting;
iter = *list;
while (iter)
{
int cmp = strcmp (setting->name, iter->setting->name);
if (cmp < 0)
break;
else if (cmp == 0)
{
free (node);
return XSETTINGS_DUPLICATE_ENTRY;
}
last = iter;
iter = iter->next;
}
if (last)
last->next = node;
else
*list = node;
node->next = iter;
return XSETTINGS_SUCCESS;
}
XSettingsResult
xsettings_list_delete (XSettingsList **list,
const char *name)
{
XSettingsList *iter;
XSettingsList *last = NULL;
iter = *list;
while (iter)
{
if (strcmp (name, iter->setting->name) == 0)
{
if (last)
last->next = iter->next;
else
*list = iter->next;
xsettings_setting_free (iter->setting);
free (iter);
return XSETTINGS_SUCCESS;
}
last = iter;
iter = iter->next;
}
return XSETTINGS_FAILED;
}
XSettingsSetting *
xsettings_list_lookup (XSettingsList *list,
const char *name)
{
XSettingsList *iter;
iter = list;
while (iter)
{
if (strcmp (name, iter->setting->name) == 0)
return iter->setting;
iter = iter->next;
}
return NULL;
}
char
xsettings_byte_order (void)
{
CARD32 myint = 0x01020304;
return (*(char *)&myint == 1) ? MSBFirst : LSBFirst;
}

110
gdk/x11/xsettings-common.h Normal file
View File

@ -0,0 +1,110 @@
/*
* Copyright © 2001 Red Hat, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Red Hat not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. Red Hat makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Author: Owen Taylor, Red Hat, Inc.
*/
#ifndef XSETTINGS_COMMON_H
#define XSETTINGS_COMMON_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
typedef struct _XSettingsBuffer XSettingsBuffer;
typedef struct _XSettingsColor XSettingsColor;
typedef struct _XSettingsList XSettingsList;
typedef struct _XSettingsSetting XSettingsSetting;
/* Types of settings possible. Enum values correspond to
* protocol values.
*/
typedef enum
{
XSETTINGS_TYPE_INT = 0,
XSETTINGS_TYPE_STRING = 1,
XSETTINGS_TYPE_COLOR = 2
} XSettingsType;
typedef enum
{
XSETTINGS_SUCCESS,
XSETTINGS_NO_MEM,
XSETTINGS_ACCESS,
XSETTINGS_FAILED,
XSETTINGS_NO_ENTRY,
XSETTINGS_DUPLICATE_ENTRY
} XSettingsResult;
struct _XSettingsBuffer
{
char byte_order;
size_t len;
unsigned char *data;
unsigned char *pos;
};
struct _XSettingsColor
{
unsigned short red, green, blue, alpha;
};
struct _XSettingsList
{
XSettingsSetting *setting;
XSettingsList *next;
};
struct _XSettingsSetting
{
char *name;
XSettingsType type;
union {
int v_int;
char *v_string;
XSettingsColor v_color;
} data;
unsigned long last_change_serial;
};
XSettingsSetting *xsettings_setting_copy (XSettingsSetting *setting);
void xsettings_setting_free (XSettingsSetting *setting);
int xsettings_setting_equal (XSettingsSetting *setting_a,
XSettingsSetting *setting_b);
void xsettings_list_free (XSettingsList *list);
XSettingsList *xsettings_list_copy (XSettingsList *list);
XSettingsResult xsettings_list_insert (XSettingsList **list,
XSettingsSetting *setting);
XSettingsSetting *xsettings_list_lookup (XSettingsList *list,
const char *name);
XSettingsResult xsettings_list_delete (XSettingsList **list,
const char *name);
char xsettings_byte_order (void);
#define XSETTINGS_PAD(n,m) ((n + m - 1) & (~(m-1)))
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* XSETTINGS_COMMON_H */

View File

@ -42,7 +42,6 @@ LDFLAGS = @STRIP_BEGIN@ \
-lm \
@STRIP_END@
#
# setup source file variables
#
@ -361,26 +360,6 @@ gtk_c_sources = @STRIP_BEGIN@ \
fnmatch.c \
fnmatch.h \
@STRIP_END@
# Extra headers that are used for enum type array/id generation
gdk_headers = @STRIP_BEGIN@ \
../gdk/gdkcolor.h \
../gdk/gdkcursor.h \
../gdk/gdkdnd.h \
../gdk/gdkdrawable.h \
../gdk/gdkevents.h \
../gdk/gdkfont.h \
../gdk/gdkgc.h \
../gdk/gdkimage.h \
../gdk/gdkinput.h \
../gdk/gdkpixmap.h \
../gdk/gdkproperty.h \
../gdk/gdkregion.h \
../gdk/gdkrgb.h \
../gdk/gdkselection.h \
../gdk/gdktypes.h \
../gdk/gdkvisual.h \
../gdk/gdkwindow.h \
@STRIP_END@
# we use our own built_sources variable rules to avoid automake's
# BUILT_SOURCES oddities
@ -448,9 +427,9 @@ gtk.defs gtkmarshal.h gtktypebuiltins.h: # never add deps here
# versions in the build dir. thus a development setup requires
# srcdir to be writable, passing --disable-rebuilds to
# ../configure will supress all autogeneration rules.
$(srcdir)/stamp-gtk.defs: @REBUILD@ makeenums.pl gtk.defs gtk-boxed.defs $(gtk_public_h_sources) $(gdk_headers)
$(srcdir)/stamp-gtk.defs: @REBUILD@ makeenums.pl gtk.defs gtk-boxed.defs $(gtk_public_h_sources)
cd $(srcdir) \
&& $(PERL) makeenums.pl defs $(gtk_public_h_sources) $(gdk_headers) > xgen-gdef \
&& $(PERL) makeenums.pl defs $(gtk_public_h_sources) > xgen-gdef \
&& cat gtk-boxed.defs >> xgen-gdef \
&& (cmp -s xgen-gdef gtk.defs || cp xgen-gdef gtk.defs) \
&& rm -f xgen-gdef \
@ -482,9 +461,9 @@ $(srcdir)/gtktypebuiltins_ids.c: @REBUILD@ maketypes.awk stamp-gtk.defs
&& LC_ALL=C $(AWK) -f maketypes.awk gtk.defs entries > xgen-gtbic \
&& cp xgen-gtbic $(@F) \
&& rm -f xgen-gtbic
$(srcdir)/gtktypebuiltins_evals.c: @REBUILD@ makeenums.pl $(gtk_public_h_sources) $(gdk_headers)
$(srcdir)/gtktypebuiltins_evals.c: @REBUILD@ makeenums.pl $(gtk_public_h_sources)
cd $(srcdir) \
&& $(PERL) makeenums.pl arrays $(gtk_public_h_sources) $(gdk_headers) > xgen-gtbec \
&& $(PERL) makeenums.pl arrays $(gtk_public_h_sources) > xgen-gtbec \
&& cp xgen-gtbec $(@F) \
&& rm -f xgen-gtbec

View File

@ -33,23 +33,23 @@
; gdk_point_copy
; gdk_point_destroy)
(define-boxed GdkVisual
gdk_visual_ref
gdk_visual_unref)
;(define-boxed GdkVisual
; gdk_visual_ref
; gdk_visual_unref)
(define-boxed GdkFont
gdk_font_ref
gdk_font_unref)
;(define-boxed GdkFont
; gdk_font_ref
; gdk_font_unref)
(define-boxed GdkEvent
gdk_event_copy
gdk_event_free
"sizeof(GdkEvent)")
;(define-boxed GdkEvent
; gdk_event_copy
; gdk_event_free
; "sizeof(GdkEvent)")
(define-boxed GdkColor
gdk_color_copy
gdk_color_free
"sizeof(GdkColor)")
;(define-boxed GdkColor
; gdk_color_copy
; gdk_color_free
; "sizeof(GdkColor)")
(define-func gtk_style_get_white_interp
GdkColor

View File

@ -663,7 +663,7 @@ gtk_accel_group_create_add (GtkType class_type,
GTK_TYPE_UINT,
GTK_TYPE_ACCEL_GROUP,
GTK_TYPE_UINT,
GTK_TYPE_GDK_MODIFIER_TYPE,
GDK_TYPE_MODIFIER_TYPE,
GTK_TYPE_ACCEL_FLAGS);
}
@ -682,7 +682,7 @@ gtk_accel_group_create_remove (GtkType class_type,
GTK_TYPE_NONE, 3,
GTK_TYPE_ACCEL_GROUP,
GTK_TYPE_UINT,
GTK_TYPE_GDK_MODIFIER_TYPE);
GDK_TYPE_MODIFIER_TYPE);
}
GSList*

View File

@ -172,7 +172,7 @@ gtk_cell_renderer_text_class_init (GtkCellRendererTextClass *class)
g_param_spec_boxed ("background_gdk",
_("Background color"),
_("Background color as a GdkColor"),
GTK_TYPE_GDK_COLOR,
GDK_TYPE_COLOR,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property (object_class,
@ -188,7 +188,7 @@ gtk_cell_renderer_text_class_init (GtkCellRendererTextClass *class)
g_param_spec_boxed ("foreground_gdk",
_("Foreground color"),
_("Foreground color as a GdkColor"),
GTK_TYPE_GDK_COLOR,
GDK_TYPE_COLOR,
G_PARAM_READABLE | G_PARAM_WRITABLE));

View File

@ -618,7 +618,7 @@ gtk_clist_class_init (GtkCListClass *klass)
GTK_TYPE_NONE, 3,
GTK_TYPE_INT,
GTK_TYPE_INT,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
clist_signals[UNSELECT_ROW] =
gtk_signal_new ("unselect_row",
GTK_RUN_FIRST,
@ -626,7 +626,7 @@ gtk_clist_class_init (GtkCListClass *klass)
GTK_SIGNAL_OFFSET (GtkCListClass, unselect_row),
gtk_marshal_VOID__INT_INT_BOXED,
GTK_TYPE_NONE, 3, GTK_TYPE_INT,
GTK_TYPE_INT, GTK_TYPE_GDK_EVENT);
GTK_TYPE_INT, GDK_TYPE_EVENT);
clist_signals[ROW_MOVE] =
gtk_signal_new ("row_move",
GTK_RUN_LAST,

View File

@ -430,7 +430,7 @@ gtk_entry_class_init (GtkEntryClass *class)
g_param_spec_boxed ("cursor_color",
_("Cursor color"),
_("Color with which to draw insertion cursor"),
GTK_TYPE_GDK_COLOR,
GDK_TYPE_COLOR,
G_PARAM_READABLE));
signals[INSERT_TEXT] =

View File

@ -24,6 +24,8 @@
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
#include "gdkconfig.h"
#ifdef GDK_WINDOWING_X11
#include <X11/Xlocale.h> /* so we get the right setlocale */
#else
@ -43,6 +45,7 @@
#include "gtkmain.h"
#include "gtkrc.h"
#include "gtkselection.h"
#include "gtksettings.h"
#include "gtksignal.h"
#include "gtkwidget.h"
#include "gtkwindow.h"
@ -802,7 +805,9 @@ gtk_main_do_event (GdkEvent *event)
if (event->type == GDK_PROPERTY_NOTIFY)
gtk_selection_incr_event (event->any.window,
&event->property);
else if (event->type == GDK_SETTING)
_gtk_settings_handle_event (&event->setting);
return;
}
@ -1352,7 +1357,7 @@ gtk_invoke_input (gpointer data,
args[0].type = GTK_TYPE_INT;
args[0].name = NULL;
GTK_VALUE_INT(args[0]) = source;
args[1].type = GTK_TYPE_GDK_INPUT_CONDITION;
args[1].type = GDK_TYPE_INPUT_CONDITION;
args[1].name = NULL;
GTK_VALUE_FLAGS(args[1]) = condition;
args[2].type = GTK_TYPE_NONE;

View File

@ -130,7 +130,7 @@ gtk_settings_class_init (GtkSettingsClass *class)
g_assert (PROP_DOUBLE_CLICK_TIMEOUT ==
settings_install_property_parser (class,
g_param_spec_int ("double-click-timeout", "Double Click Timeout", NULL,
1, G_MAXINT, 1,
0, G_MAXINT, 1000,
G_PARAM_READWRITE),
NULL));
g_assert (PROP_BELL_PITCH ==
@ -218,8 +218,9 @@ gtk_settings_get_property (GObject *object,
GParamSpec *pspec)
{
GtkSettings *settings = GTK_SETTINGS (object);
g_value_copy (settings->property_values + property_id - 1, value);
if (!gdk_setting_get (pspec->name, value))
g_value_copy (settings->property_values + property_id - 1, value);
}
static void
@ -227,7 +228,8 @@ gtk_settings_notify (GObject *object,
GParamSpec *pspec)
{
guint property_id = GPOINTER_TO_UINT (g_param_spec_get_qdata ((pspec), quark_property_id));
gint double_click_time;
#if 1
GValue tmp_value = { 0, };
gchar *contents;
@ -238,7 +240,8 @@ gtk_settings_notify (GObject *object,
switch (property_id)
{
case PROP_DOUBLE_CLICK_TIMEOUT:
g_print ("settings-notify: %s = \"%s\"\n", pspec->name, contents);
g_object_get (object, pspec->name, &double_click_time, NULL);
gdk_set_double_click_time (double_click_time);
break;
case PROP_BELL_PITCH:
g_print ("settings-notify: %s = \"%s\"\n", pspec->name, contents);
@ -378,7 +381,7 @@ settings_install_property_parser (GtkSettingsClass *class,
GtkRcPropertyParser
_gtk_rc_property_parser_for_type (GType type)
{
if (type == GTK_TYPE_GDK_COLOR)
if (type == GDK_TYPE_COLOR)
return gtk_rc_property_parse_color;
else if (type == GTK_TYPE_REQUISITION)
return gtk_rc_property_parse_requisition;
@ -547,7 +550,7 @@ gtk_rc_property_parse_color (const GParamSpec *pspec,
gboolean success;
g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), FALSE);
g_return_val_if_fail (G_VALUE_HOLDS (property_value, GTK_TYPE_GDK_COLOR), FALSE);
g_return_val_if_fail (G_VALUE_HOLDS (property_value, GDK_TYPE_COLOR), FALSE);
scanner = gtk_rc_scanner_new ();
g_scanner_input_text (scanner, gstring->str, gstring->len);
@ -788,3 +791,13 @@ gtk_rc_property_parse_border (const GParamSpec *pspec,
return success;
}
void
_gtk_settings_handle_event (GdkEventSetting *event)
{
GtkSettings *settings = gtk_settings_get_global ();
if (g_object_class_find_property (G_OBJECT_GET_CLASS (settings), event->name))
g_object_notify (G_OBJECT (settings), event->name);
}

View File

@ -110,6 +110,8 @@ void gtk_settings_set_double_property (GtkSettings *settings,
gdouble v_double,
const gchar *origin);
void _gtk_settings_handle_event (GdkEventSetting *event);
GtkRcPropertyParser _gtk_rc_property_parser_for_type (GType type);
#ifdef __cplusplus

View File

@ -243,13 +243,13 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class)
GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
spinbutton_signals[OUTPUT] =
g_signal_newc("output",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkSpinButtonClass, output),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__VOID,
G_TYPE_BOOLEAN, 0);
g_signal_newc ("output",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkSpinButtonClass, output),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__VOID,
G_TYPE_BOOLEAN, 0);
spinbutton_signals[VALUE_CHANGED] =
gtk_signal_new ("value_changed",

View File

@ -213,7 +213,7 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
g_param_spec_boxed ("background_gdk",
_("Background color"),
_("Background color as a GdkColor"),
GTK_TYPE_GDK_COLOR,
GDK_TYPE_COLOR,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property (object_class,
@ -247,7 +247,7 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
g_param_spec_boxed ("foreground_gdk",
_("Foreground color"),
_("Foreground color as a GdkColor"),
GTK_TYPE_GDK_COLOR,
GDK_TYPE_COLOR,
G_PARAM_READABLE | G_PARAM_WRITABLE));
@ -609,7 +609,7 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
GTK_TYPE_INT,
3,
G_TYPE_OBJECT,
GTK_TYPE_GDK_EVENT,
GDK_TYPE_EVENT,
GTK_TYPE_TEXT_ITER);
}
@ -1256,7 +1256,7 @@ get_color_arg (GValue *value, GdkColor *orig)
color = g_new (GdkColor, 1);
*color = *orig;
g_value_init (value, GTK_TYPE_GDK_COLOR);
g_value_init (value, GDK_TYPE_COLOR);
g_value_set_boxed (value, color);
}

View File

@ -159,17 +159,17 @@ gtk_tips_query_class_init (GtkTipsQueryClass *class)
GTK_TYPE_STRING,
GTK_TYPE_STRING);
tips_query_signals[SIGNAL_WIDGET_SELECTED] =
g_signal_newc("widget_selected",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkTipsQueryClass, widget_selected),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__OBJECT_STRING_STRING_BOXED,
G_TYPE_BOOLEAN, 4,
GTK_TYPE_WIDGET,
G_TYPE_STRING,
G_TYPE_STRING,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("widget_selected",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkTipsQueryClass, widget_selected),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__OBJECT_STRING_STRING_BOXED,
G_TYPE_BOOLEAN, 4,
GTK_TYPE_WIDGET,
G_TYPE_STRING,
G_TYPE_STRING,
GDK_TYPE_EVENT);
}
static void

View File

@ -170,7 +170,7 @@ gtk_type_init (GTypeDebugFlags debug_flags)
else if (builtin_info[i].parent == GTK_TYPE_BOXED)
{
static const gchar *copy_types[] = {
"GtkSelectionData", "GdkEvent", "GdkColor", "GtkBorder", "GtkTextIter", "PangoTabArray",
"GtkSelectionData", "GtkBorder", "GtkTextIter", "PangoTabArray",
"PangoFontDescription", "GtkTreeIter", "GtkTreePath", "GtkRequisition"
};
gboolean ref_counted = TRUE;

View File

@ -494,7 +494,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
g_param_spec_flags ("events",
_("Events"),
_("The event mask that decides what kind of GdkEvents this widget gets."),
GTK_TYPE_GDK_EVENT_MASK,
GDK_TYPE_EVENT_MASK,
GDK_STRUCTURE_MASK,
G_PARAM_READWRITE));
@ -503,7 +503,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
g_param_spec_enum ("extension_events",
_("Extension events"),
_("The mask that decides what kind of extension events this widget gets."),
GTK_TYPE_GDK_EXTENSION_MODE,
GDK_TYPE_EXTENSION_MODE,
GDK_EXTENSION_EVENTS_NONE,
G_PARAM_READWRITE));
@ -629,194 +629,194 @@ gtk_widget_class_init (GtkWidgetClass *klass)
gtk_marshal_VOID__VOID,
GTK_TYPE_NONE, 0);
widget_signals[EVENT] =
g_signal_newc("event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[BUTTON_PRESS_EVENT] =
g_signal_newc("button_press_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, button_press_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("button_press_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, button_press_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[BUTTON_RELEASE_EVENT] =
g_signal_newc("button_release_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, button_release_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("button_release_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, button_release_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[SCROLL_EVENT] =
g_signal_newc("scroll_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, scroll_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("scroll_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, scroll_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[MOTION_NOTIFY_EVENT] =
g_signal_newc("motion_notify_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, motion_notify_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("motion_notify_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, motion_notify_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[DELETE_EVENT] =
g_signal_newc("delete_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, delete_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("delete_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, delete_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[DESTROY_EVENT] =
g_signal_newc("destroy_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, destroy_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("destroy_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, destroy_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[EXPOSE_EVENT] =
g_signal_newc("expose_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, expose_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("expose_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, expose_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[KEY_PRESS_EVENT] =
g_signal_newc("key_press_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, key_press_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("key_press_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, key_press_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[KEY_RELEASE_EVENT] =
g_signal_newc("key_release_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, key_release_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("key_release_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, key_release_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[ENTER_NOTIFY_EVENT] =
g_signal_newc("enter_notify_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, enter_notify_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("enter_notify_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, enter_notify_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[LEAVE_NOTIFY_EVENT] =
g_signal_newc("leave_notify_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, leave_notify_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("leave_notify_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, leave_notify_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[CONFIGURE_EVENT] =
g_signal_newc("configure_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, configure_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("configure_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, configure_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
widget_signals[FOCUS_IN_EVENT] =
g_signal_newc("focus_in_event",
g_signal_newc ("focus_in_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, focus_in_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[FOCUS_OUT_EVENT] =
g_signal_newc("focus_out_event",
g_signal_newc ("focus_out_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, focus_out_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[MAP_EVENT] =
g_signal_newc("map_event",
g_signal_newc ("map_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, map_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[UNMAP_EVENT] =
g_signal_newc("unmap_event",
g_signal_newc ("unmap_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, unmap_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[PROPERTY_NOTIFY_EVENT] =
g_signal_newc("property_notify_event",
g_signal_newc ("property_notify_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, property_notify_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[SELECTION_CLEAR_EVENT] =
g_signal_newc("selection_clear_event",
g_signal_newc ("selection_clear_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, selection_clear_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[SELECTION_REQUEST_EVENT] =
g_signal_newc("selection_request_event",
g_signal_newc ("selection_request_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, selection_request_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[SELECTION_NOTIFY_EVENT] =
g_signal_newc("selection_notify_event",
g_signal_newc ("selection_notify_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, selection_notify_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[SELECTION_RECEIVED] =
gtk_signal_new ("selection_received",
GTK_RUN_LAST,
@ -837,23 +837,23 @@ gtk_widget_class_init (GtkWidgetClass *klass)
GTK_TYPE_UINT,
GTK_TYPE_UINT);
widget_signals[PROXIMITY_IN_EVENT] =
g_signal_newc("proximity_in_event",
g_signal_newc ("proximity_in_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, proximity_in_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[PROXIMITY_OUT_EVENT] =
g_signal_newc("proximity_out_event",
g_signal_newc ("proximity_out_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, proximity_out_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[DRAG_LEAVE] =
gtk_signal_new ("drag_leave",
GTK_RUN_LAST,
@ -888,7 +888,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
GTK_TYPE_NONE, 1,
GDK_TYPE_DRAG_CONTEXT);
widget_signals[DRAG_MOTION] =
g_signal_newc("drag_motion",
g_signal_newc ("drag_motion",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, drag_motion),
@ -900,7 +900,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
G_TYPE_INT,
G_TYPE_UINT);
widget_signals[DRAG_DROP] =
g_signal_newc("drag_drop",
g_signal_newc ("drag_drop",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, drag_drop),
@ -936,42 +936,41 @@ gtk_widget_class_init (GtkWidgetClass *klass)
GTK_TYPE_UINT,
GTK_TYPE_UINT);
widget_signals[VISIBILITY_NOTIFY_EVENT] =
g_signal_newc("visibility_notify_event",
g_signal_newc ("visibility_notify_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, visibility_notify_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[CLIENT_EVENT] =
g_signal_newc("client_event",
g_signal_newc ("client_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, client_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[NO_EXPOSE_EVENT] =
g_signal_newc("no_expose_event",
g_signal_newc ("no_expose_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, no_expose_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[WINDOW_STATE_EVENT] =
g_signal_newc("window_state_event",
g_signal_newc ("window_state_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWidgetClass, window_state_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
GDK_TYPE_EVENT);
widget_signals[POPUP_MENU] =
gtk_signal_new ("popup_menu",
GTK_RUN_LAST | GTK_RUN_ACTION,

View File

@ -401,14 +401,14 @@ gtk_window_class_init (GtkWindowClass *klass)
GTK_TYPE_WIDGET);
window_signals[FRAME_EVENT] =
g_signal_newc("frame_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWindowClass, frame_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GTK_TYPE_GDK_EVENT);
g_signal_newc ("frame_event",
G_TYPE_FROM_CLASS(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GtkWindowClass, frame_event),
_gtk_boolean_handled_accumulator, NULL,
gtk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN, 1,
GDK_TYPE_EVENT);
if (!mnemonic_hash_table)
mnemonic_hash_table = g_hash_table_new (mnemonic_hash,

View File

@ -4165,7 +4165,7 @@ set_cursor (GtkWidget *spinner,
c &= 0xfe;
label = gtk_object_get_user_data (GTK_OBJECT (spinner));
vals = gtk_type_enum_get_values (GTK_TYPE_GDK_CURSOR_TYPE);
vals = gtk_type_enum_get_values (GDK_TYPE_CURSOR_TYPE);
while (vals && vals->value != c)
vals++;
if (vals)

View File

@ -4165,7 +4165,7 @@ set_cursor (GtkWidget *spinner,
c &= 0xfe;
label = gtk_object_get_user_data (GTK_OBJECT (spinner));
vals = gtk_type_enum_get_values (GTK_TYPE_GDK_CURSOR_TYPE);
vals = gtk_type_enum_get_values (GDK_TYPE_CURSOR_TYPE);
while (vals && vals->value != c)
vals++;
if (vals)