]> Pileus Git - ~andy/gtk/blobdiff - gdk/x11/xsettings-client.h
x11: Pass the GdkScreen to the XSettingsClient
[~andy/gtk] / gdk / x11 / xsettings-client.h
index 12018295fb27b32d3709457c3111712c6938b989..cb6ab9b08233f032255e79304cebb413cdf4dcfc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2001 Red Hat, Inc.
+ * Copyright © 2001, 2007 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
 #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_CHANGED,
-  XSETTINGS_ACTION_DELETED,
+  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);
+
+void              xsettings_setting_free          (XSettingsSetting    *setting);
+int               xsettings_setting_equal         (XSettingsSetting    *setting_a,
+                                                  XSettingsSetting    *setting_b);
 
-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);
+XSettingsClient *xsettings_client_new             (GdkScreen           *screen,
+                                                  XSettingsNotifyFunc  notify,
+                                                  XSettingsWatchFunc   watch,
+                                                  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,
+                                                  XSettingsGrabFunc    ungrab);
+void             xsettings_client_destroy         (XSettingsClient     *client);
+Bool             xsettings_client_process_event   (XSettingsClient     *client,
+                                                  XEvent              *xev);
+const XSettingsSetting *
+                 xsettings_client_get_setting     (XSettingsClient     *client,
+                                                  const char          *name);
 
 #ifdef __cplusplus
 }