]> Pileus Git - ~andy/gtk/blobdiff - gdk/x11/xsettings-client.h
x11: Make xsettings callbacks code go away
[~andy/gtk] / gdk / x11 / xsettings-client.h
index ba34130107aa75159efb57a964188172175db152..5ba4673d91f0012c5bf503c71211635a2fed8331 100644 (file)
 #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_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 _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,
@@ -39,41 +56,30 @@ typedef enum
   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);
-typedef void (*XSettingsGrabFunc)   (Display          *display);
+struct _XSettingsColor
+{
+  unsigned short red, green, blue, alpha;
+};
 
-XSettingsClient *xsettings_client_new             (Display             *display,
-                                                  int                  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             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);
-XSettingsResult  xsettings_client_get_setting     (XSettingsClient     *client,
-                                                  const char          *name,
-                                                  XSettingsSetting   **setting);
+struct _XSettingsSetting
+{
+  XSettingsType type;
+  
+  union {
+    int v_int;
+    char *v_string;
+    XSettingsColor v_color;
+  } data;
+};
 
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+void              xsettings_setting_free          (XSettingsSetting    *setting);
+int               xsettings_setting_equal         (XSettingsSetting    *setting_a,
+                                                  XSettingsSetting    *setting_b);
+
+XSettingsClient *xsettings_client_new             (GdkScreen           *screen);
+void             xsettings_client_destroy         (XSettingsClient     *client);
+const XSettingsSetting *
+                 xsettings_client_get_setting     (XSettingsClient     *client,
+                                                  const char          *name);
 
 #endif /* XSETTINGS_CLIENT_H */