#ifndef XSETTINGS_CLIENT_H
#define XSETTINGS_CLIENT_H
+#include <gdk/gdkscreen.h>
#include <X11/Xlib.h>
-#include "xsettings-common.h"
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
+/* Renames for GDK inclusion */
+
+#define xsettings_client_destroy _gdk_x11_xsettings_client_destroy
+#define xsettings_client_get_setting _gdk_x11_xsettings_client_get_setting
+#define xsettings_client_new _gdk_x11_xsettings_client_new
+#define xsettings_client_set_grab_func _gdk_x11_xsettings_client_set_grab_func
+#define xsettings_client_set_ungrab_func _gdk_x11_xsettings_client_set_ungrab_func
+#define xsettings_client_process_event _gdk_x11_xsettings_client_process_event
+#define xsettings_setting_equal _gdk_x11_xsettings_setting_equal
+#define xsettings_setting_free _gdk_x11_xsettings_setting_free
+
+typedef struct _XSettingsBuffer XSettingsBuffer;
+typedef struct _XSettingsColor XSettingsColor;
+typedef struct _XSettingsSetting XSettingsSetting;
typedef struct _XSettingsClient XSettingsClient;
+/* 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_ACTION_NEW,
XSETTINGS_ACTION_DELETED
} XSettingsAction;
+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 _XSettingsSetting
+{
+ char *name;
+ XSettingsType type;
+
+ union {
+ int v_int;
+ char *v_string;
+ XSettingsColor v_color;
+ } data;
+};
+
typedef void (*XSettingsNotifyFunc) (const char *name,
XSettingsAction action,
XSettingsSetting *setting,
void *cb_data);
-typedef void (*XSettingsWatchFunc) (Window window,
+typedef Bool (*XSettingsWatchFunc) (Window window,
Bool is_start,
long mask,
void *cb_data);
typedef void (*XSettingsGrabFunc) (Display *display);
-XSettingsClient *xsettings_client_new (Display *display,
- int screen,
+void xsettings_setting_free (XSettingsSetting *setting);
+int xsettings_setting_equal (XSettingsSetting *setting_a,
+ XSettingsSetting *setting_b);
+
+XSettingsClient *xsettings_client_new (GdkScreen *screen,
XSettingsNotifyFunc notify,
XSettingsWatchFunc watch,
- void *cb_data);
-XSettingsClient *xsettings_client_new_with_grab_funcs (Display *display,
- int screen,
- XSettingsNotifyFunc notify,
- XSettingsWatchFunc watch,
- void *cb_data,
- XSettingsGrabFunc grab,
- XSettingsGrabFunc ungrab);
+ void *cb_data,
+ XSettingsGrabFunc grab,
+ XSettingsGrabFunc ungrab);
void xsettings_client_set_grab_func (XSettingsClient *client,
XSettingsGrabFunc grab);
void xsettings_client_set_ungrab_func (XSettingsClient *client,
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);
+const XSettingsSetting *
+ xsettings_client_get_setting (XSettingsClient *client,
+ const char *name);
#ifdef __cplusplus
}