X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fprop.h;h=00649acc761424bbbc9f6f8b219bd50f8454d209;hb=a43303bdcbb5460f8d50823c4d0cedc30de6bb57;hp=7899507f68d01d5a25a5479bce0e30fc7ecd5751;hpb=3809fb37a5ccc1796cf0a2fdb5c87d3233adc687;p=chaz%2Fopenbox diff --git a/openbox/prop.h b/openbox/prop.h index 7899507f..00649acc 100644 --- a/openbox/prop.h +++ b/openbox/prop.h @@ -1,3 +1,21 @@ +/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- + + prop.h for the Openbox window manager + Copyright (c) 2003 Ben Jansens + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + See the COPYING file for a copy of the GNU General Public License. +*/ + #ifndef __atoms_h #define __atoms_h @@ -7,8 +25,6 @@ # include #endif -#include "openbox.h" - /*! The atoms on the X server which this class will cache */ typedef struct Atoms { /* types */ @@ -19,6 +35,9 @@ typedef struct Atoms { Atom string; /*!< The atom which represents ascii strings */ Atom utf8; /*!< The atom which represents utf8-encoded strings */ + /* selection stuff */ + Atom manager; + /* window hints */ Atom wm_colormap_windows; Atom wm_protocols; @@ -32,6 +51,9 @@ typedef struct Atoms { Atom wm_window_role; Atom motif_wm_hints; + /* SM atoms */ + Atom sm_client_id; + /* NETWM atoms */ /* root window properties */ @@ -46,14 +68,17 @@ typedef struct Atoms { Atom net_active_window; Atom net_workarea; Atom net_supporting_wm_check; -/* Atom net_virtual_roots; */ Atom net_desktop_layout; Atom net_showing_desktop; /* root window messages */ Atom net_close_window; Atom net_wm_moveresize; + Atom net_moveresize_window; + + /* startup-notification extension */ + Atom net_startup_id; + /* application window properties */ -/* Atom net_properties; */ Atom net_wm_name; Atom net_wm_visible_name; Atom net_wm_icon_name; @@ -62,10 +87,9 @@ typedef struct Atoms { Atom net_wm_window_type; Atom net_wm_state; Atom net_wm_strut; -/* Atom net_wm_icon_geometry; */ + Atom net_wm_strut_partial; Atom net_wm_icon; /* Atom net_wm_pid; */ -/* Atom net_wm_handled_icons; */ Atom net_wm_allowed_actions; /* application protocols */ /* Atom Atom net_wm_ping; */ @@ -79,11 +103,17 @@ typedef struct Atoms { Atom net_wm_window_type_dialog; Atom net_wm_window_type_normal; - Atom net_wm_moveresize_size_topleft; + Atom net_wm_moveresize_size_topleft; + Atom net_wm_moveresize_size_top; Atom net_wm_moveresize_size_topright; - Atom net_wm_moveresize_size_bottomleft; + Atom net_wm_moveresize_size_right; Atom net_wm_moveresize_size_bottomright; + Atom net_wm_moveresize_size_bottom; + Atom net_wm_moveresize_size_bottomleft; + Atom net_wm_moveresize_size_left; Atom net_wm_moveresize_move; + Atom net_wm_moveresize_size_keyboard; + Atom net_wm_moveresize_move_keyboard; Atom net_wm_action_move; Atom net_wm_action_resize; @@ -139,75 +169,48 @@ Atoms prop_atoms; void prop_startup(); -gboolean prop_get32(Window win, Atom prop, Atom type, - gulong **data, gulong num); - -gboolean prop_get_prealloc(Window win, Atom prop, Atom type, int size, - guchar *data, gulong num); - -gboolean prop_get_all(Window win, Atom prop, Atom type, int size, - guchar **data, gulong *num); - -gboolean prop_get_string(Window win, Atom prop, Atom type, guchar **data); -gboolean prop_get_strings(Window win, Atom prop, Atom type, - GPtrArray *data); +gboolean prop_get32(Window win, Atom prop, Atom type, guint32 *ret); +gboolean prop_get_array32(Window win, Atom prop, Atom type, guint32 **ret, + guint *nret); +gboolean prop_get_string_locale(Window win, Atom prop, char **ret); +gboolean prop_get_string_utf8(Window win, Atom prop, char **ret); +gboolean prop_get_strings_locale(Window win, Atom prop, char ***ret); +gboolean prop_get_strings_utf8(Window win, Atom prop, char ***ret); -void prop_set_strings(Window win, Atom prop, Atom type, GPtrArray *data); +void prop_set32(Window win, Atom prop, Atom type, guint32 val); +void prop_set_array32(Window win, Atom prop, Atom type, guint32 *val, + guint num); +void prop_set_string_utf8(Window win, Atom prop, char *val); +void prop_set_strings_utf8(Window win, Atom prop, char **strs); void prop_erase(Window win, Atom prop); void prop_message(Window about, Atom messagetype, long data0, long data1, - long data2, long data3); + long data2, long data3, long mask); + +#define PROP_GET32(win, prop, type, ret) \ + (prop_get32(win, prop_atoms.prop, prop_atoms.type, ret)) +#define PROP_GETA32(win, prop, type, ret, nret) \ + (prop_get_array32(win, prop_atoms.prop, prop_atoms.type, ret, \ + nret)) +#define PROP_GETS(win, prop, type, ret) \ + (prop_get_string_##type(win, prop_atoms.prop, ret)) +#define PROP_GETSS(win, prop, type, ret) \ + (prop_get_strings_##type(win, prop_atoms.prop, ret)) + +#define PROP_SET32(win, prop, type, val) \ + prop_set32(win, prop_atoms.prop, prop_atoms.type, val) +#define PROP_SETA32(win, prop, type, val, num) \ + prop_set_array32(win, prop_atoms.prop, prop_atoms.type, val, num) +#define PROP_SETS(win, prop, val) \ + prop_set_string_utf8(win, prop_atoms.prop, val) +#define PROP_SETSS(win, prop, strs) \ + prop_set_strings_utf8(win, prop_atoms.prop, strs) + +#define PROP_ERASE(win, prop) prop_erase(win, prop_atoms.prop) #define PROP_MSG(about, msgtype, data0, data1, data2, data3) \ - (prop_message(about, prop_atoms.msgtype, data0, data1, data2, data3)) - -/* Set an 8-bit property from a string */ -#define PROP_SETS(win, prop, type, value) \ - (XChangeProperty(ob_display, win, prop_atoms.prop, prop_atoms.type, 8, \ - PropModeReplace, (guchar*)value, strlen(value))) -/* Set an 8-bit property array from a GPtrArray of strings */ -#define PROP_SETSA(win, prop, type, value) \ - (prop_set_strings(win, prop_atoms.prop, prop_atoms.type, value)) - -/* Set a 32-bit property from a single value */ -#define PROP_SET32(win, prop, type, value) \ - (XChangeProperty(ob_display, win, prop_atoms.prop, prop_atoms.type, 32, \ - PropModeReplace, (guchar*)&value, 1)) -/* Set a 32-bit property from an array */ -#define PROP_SET32A(win, prop, type, value, num) \ - (XChangeProperty(ob_display, win, prop_atoms.prop, prop_atoms.type, 32, \ - PropModeReplace, (guchar*)value, num)) - -/* Get an 8-bit property into a string */ -#define PROP_GETS(win, prop, type, value) \ - (prop_get_string(win, prop_atoms.prop, prop_atoms.type, \ - (guchar**)&value)) -/* Get an 8-bit property into a GPtrArray of strings - (The strings must be freed, the GPtrArray must already be created.) */ -#define PROP_GETSA(win, prop, type, value) \ - (prop_get_strings(win, prop_atoms.prop, prop_atoms.type, \ - value)) - -/* Get an entire 8-bit property into an array (which must be freed) */ -#define PROP_GET8U(win, prop, type, value, num) \ - (prop_get_all(win, prop_atoms.prop, prop_atoms.type, 8, \ - (guchar**)&value, &num)) - -/* Get 1 element of a 32-bit property into a given variable */ -#define PROP_GET32(win, prop, type, value) \ - (prop_get_prealloc(win, prop_atoms.prop, prop_atoms.type, 32, \ - (guchar*)&value, 1)) - -/* Get an amount of a 32-bit property into an array (which must be freed) */ -#define PROP_GET32A(win, prop, type, value, num) \ - (prop_get32(win, prop_atoms.prop, prop_atoms.type, (gulong**)&value, num)) - -/* Get an entire 32-bit property into an array (which must be freed) */ -#define PROP_GET32U(win, prop, type, value, num) \ - (prop_get_all(win, prop_atoms.prop, prop_atoms.type, 32, \ - (guchar**)&value, &num)) - -#define PROP_ERASE(win, prop) (prop_erase(win, prop_atoms.prop)) + (prop_message(about, prop_atoms.msgtype, data0, data1, data2, data3, \ + SubstructureNotifyMask | SubstructureRedirectMask)) #endif