diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-03-21 07:54:23 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-03-21 07:54:23 +0000 |
| commit | a648c05a7a2608e7e909317f5afe8427a0ea0d68 (patch) | |
| tree | 9a8355e87192adeec50ee7eaff227decc8af8ffd /c/client.h | |
| parent | 474f689132d906a553bdc695d3c179652cbe8c53 (diff) | |
kill the c dir
Diffstat (limited to 'c/client.h')
| -rw-r--r-- | c/client.h | 401 |
1 files changed, 0 insertions, 401 deletions
diff --git a/c/client.h b/c/client.h deleted file mode 100644 index d0f5266b..00000000 --- a/c/client.h +++ /dev/null @@ -1,401 +0,0 @@ -#ifndef __client_h -#define __client_h - -#include "geom.h" -#include "obexport.h" -#include <glib.h> -#include <X11/Xlib.h> - -struct ClientWrap; -struct Frame; - - -/*! Holds an icon in ARGB format */ -typedef struct Icon { - unsigned long w, h; - unsigned long *data; -} Icon; - -/*! The MWM Hints as retrieved from the window property - This structure only contains 3 elements, even though the Motif 2.0 - structure contains 5. We only use the first 3, so that is all gets - defined. -*/ -typedef struct MwmHints { - /*! A bitmask of Client::MwmFlags values */ - unsigned long flags; - /*! A bitmask of Client::MwmFunctions values */ - unsigned long functions; - /*! A bitmask of Client::MwmDecorations values */ - unsigned long decorations; -} MwmHints; -/*! The number of elements in the Client::MwmHints struct */ -#define MWM_ELEMENTS 3 - -/*! Possible flags for MWM Hints (defined by Motif 2.0) */ -typedef enum { - MwmFlag_Functions = 1 << 0, /*!< The MMW Hints define funcs */ - MwmFlag_Decorations = 1 << 1 /*!< The MWM Hints define decor */ -} MwmFlags; - -/*! Possible functions for MWM Hints (defined by Motif 2.0) */ -typedef enum { - MwmFunc_All = 1 << 0, /*!< All functions */ - MwmFunc_Resize = 1 << 1, /*!< Allow resizing */ - MwmFunc_Move = 1 << 2, /*!< Allow moving */ - MwmFunc_Iconify = 1 << 3, /*!< Allow to be iconfied */ - MwmFunc_Maximize = 1 << 4 /*!< Allow to be maximized */ - /*MwmFunc_Close = 1 << 5 /!< Allow to be closed */ -} MwmFunctions; - -/*! Possible decorations for MWM Hints (defined by Motif 2.0) */ -typedef enum { - MwmDecor_All = 1 << 0, /*!< All decorations */ - MwmDecor_Border = 1 << 1, /*!< Show a border */ - MwmDecor_Handle = 1 << 2, /*!< Show a handle (bottom) */ - MwmDecor_Title = 1 << 3, /*!< Show a titlebar */ - /*MwmDecor_Menu = 1 << 4, /!< Show a menu */ - MwmDecor_Iconify = 1 << 5, /*!< Show an iconify button */ - MwmDecor_Maximize = 1 << 6 /*!< Show a maximize button */ -} MemDecorations; - - -typedef struct Client { - Window window; - - struct Frame *frame; - - /*! The number of unmap events to ignore on the window */ - int ignore_unmaps; - - /*! The id of the group the window belongs to */ - Window group; - /*! Whether or not the client is a transient window. This is guaranteed to - be TRUE if transient_for != NULL, but not guaranteed to be FALSE if - transient_for == NULL. */ - gboolean transient; - /*! The client which this client is a transient (child) for */ - struct Client *transient_for; - /*! The clients which are transients (children) of this client */ - GSList *transients; - /*! The desktop on which the window resides (0xffffffff for all - desktops) */ - unsigned int desktop; - - /*! Normal window title */ - gchar *title; - /*! Window title when iconified */ - gchar *icon_title; - - /*! The application that created the window */ - gchar *res_name; - /*! The class of the window, can used for grouping */ - gchar *res_class; - /*! The specified role of the window, used for identification */ - gchar *role; - - /*! The type of window (what its function is) */ - WindowType type; - - /*! Position and size of the window - This will not always be the actual position of the window on screen, it - is, rather, the position requested by the client, to which the window's - gravity is applied. - */ - Rect area; - - /*! The window's strut - The strut defines areas of the screen that are marked off-bounds for - window placement. In theory, where this window exists. - */ - Strut strut; - - /*! The logical size of the window - The "logical" size of the window is refers to the user's perception of - the size of the window, and is the value that should be displayed to the - user. For example, with xterms, this value it the number of characters - being displayed in the terminal, instead of the number of pixels. - */ - Size logical_size; - - /*! Width of the border on the window. - The window manager will set this to 0 while the window is being managed, - but needs to restore it afterwards, so it is saved here. - */ - guint border_width; - - /*! The minimum aspect ratio the client window can be sized to. - A value of 0 means this is ignored. - */ - float min_ratio; - /*! The maximum aspect ratio the client window can be sized to. - A value of 0 means this is ignored. - */ - float max_ratio; - - /*! The minimum size of the client window - If the min is > the max, then the window is not resizable - */ - Size min_size; - /*! The maximum size of the client window - If the min is > the max, then the window is not resizable - */ - Size max_size; - /*! The size of increments to resize the client window by */ - Size size_inc; - /*! The base size of the client window - This value should be subtracted from the window's actual size when - displaying its size to the user, or working with its min/max size - */ - Size base_size; - - /*! Window decoration and functionality hints */ - MwmHints mwmhints; - - /*! Where to place the decorated window in relation to the undecorated - window */ - int gravity; - - /*! The state of the window, one of WithdrawnState, IconicState, or - NormalState */ - long wmstate; - - /*! True if the client supports the delete_window protocol */ - gboolean delete_window; - - /*! Was the window's position requested by the application? if not, we - should place the window ourselves when it first appears */ - gboolean positioned; - - /*! Can the window receive input focus? */ - gboolean can_focus; - /*! Urgency flag */ - gboolean urgent; - /*! Notify the window when it receives focus? */ - gboolean focus_notify; - /*! Does the client window have the input focus? */ - gboolean focused; - - /*! The window uses shape extension to be non-rectangular? */ - gboolean shaped; - - /*! The window is modal, so it must be processed before any windows it is - related to can be focused */ - gboolean modal; - /*! Only the window's titlebar is displayed */ - gboolean shaded; - /*! The window is iconified */ - gboolean iconic; - /*! The window is maximized to fill the screen vertically */ - gboolean max_vert; - /*! The window is maximized to fill the screen horizontally */ - gboolean max_horz; - /*! The window should not be displayed by pagers */ - gboolean skip_pager; - /*! The window should not be displayed by taskbars */ - gboolean skip_taskbar; - /*! The window is a 'fullscreen' window, and should be on top of all - others */ - gboolean fullscreen; - /*! The window should be on top of other windows of the same type */ - gboolean above; - /*! The window should be underneath other windows of the same type */ - gboolean below; - - /*! The layer in which the window will be stacked, windows in lower layers - are always below windows in higher layers. */ - StackLayer layer; - - /*! A bitmask of values in the Decoration enum - The values in the variable are the decorations that the client wants to - be displayed around it. - */ - int decorations; - - /*! A bitmask of values in the Decoration enum. - Specifies the decorations that should NOT be displayed on the client. - */ - int disabled_decorations; - - /*! A bitmask of values in the Function enum - The values in the variable specify the ways in which the user is allowed - to modify this window. - */ - int functions; - - /*! Icons for the client as specified on the client window */ - Icon *icons; - /*! The number of icons in icons */ - int nicons; - - /*! The icon for the client specified in the WMHints or the KWM hints */ - Pixmap pixmap_icon; - /*! The mask for the pixmap_icon, or None if its not masked */ - Pixmap pixmap_icon_mask; - - /* The instance of the wrapper class if one exists */ - struct ClientWrap *wrap; -} Client; - -extern GSList *client_list; -extern GHashTable *client_map; - -void client_startup(); -void client_shutdown(); - -/*! Manages all existing windows */ -void client_manage_all(); -/*! Manages a given window */ -void client_manage(Window win); -/*! Unmanages all managed windows */ -void client_unmanage_all(); -/*! Unmanages a given client */ -void client_unmanage(Client *client); - -/*! Sets the client list on the root window from the client_list */ -void client_set_list(); - -/*! Reapplies the maximized state to the window - Use this to make the window readjust its maximized size to new - surroundings (struts, etc). */ -void client_remaximize(Client *self); - -/*! Shows the window if it should be shown, or hides it - Used when changing desktops, the window's state, etc. */ -void client_showhide(Client *self); - -/*! Returns if the window should be treated as a normal window. - Some windows (desktops, docks, splash screens) have special rules applied - to them in a number of places regarding focus or user interaction. */ -gboolean client_normal(Client *self); - -/*! Internal version of the Client::resize function - This also maintains things like the client's minsize, and size increments. - @param anchor The corner to keep in the same position when resizing. - @param x The x coordiante of the new position for the client. - @param y The y coordiante of the new position for the client. - @param w The width component of the new size for the client. - @param h The height component of the new size for the client. - @param user Specifies whether this is a user-requested change or a - program requested change. For program requested changes, the - constraints are not checked. - @param final If user is true, then this should specify if this is a final - configuration. e.g. Final should be FALSE if doing an - interactive move/resize, and then be TRUE for the last call - only. -*/ -void client_configure(Client *self, Corner anchor, int x, int y, int w, int h, - gboolean user, gboolean final); - -/*! Fullscreen's or unfullscreen's the client window - @param fs true if the window should be made fullscreen; false if it should - be returned to normal state. - @param savearea true to have the client's current size and position saved; - otherwise, they are not. You should not save when mapping a - new window that is set to fullscreen. This has no effect - when restoring a window from fullscreen. -*/ -void client_fullscreen(Client *self, gboolean fs, gboolean savearea); - -/*! Iconifies or uniconifies the client window - @param iconic true if the window should be iconified; false if it should be - restored. - @param curdesk If iconic is FALSE, then this determines if the window will - be uniconified to the current viewable desktop (true) or to - its previous desktop (false) -*/ -void client_iconify(Client *self, gboolean iconic, gboolean curdesk); - -/*! Maximize or unmaximize the client window - @param max true if the window should be maximized; false if it should be - returned to normal size. - @param dir 0 to set both horz and vert, 1 to set horz, 2 to set vert. - @param savearea true to have the client's current size and position saved; - otherwise, they are not. You should not save when mapping a - new window that is set to fullscreen. This has no effect - when unmaximizing a window. -*/ -void client_maximize(Client *self, gboolean max, int dir, - gboolean savearea); - -/*! Shades or unshades the client window - @param shade true if the window should be shaded; false if it should be - unshaded. -*/ -void client_shade(Client *self, gboolean shade); - -/*! Request the client to close its window. */ -void client_close(Client *self); - -/*! Sends the window to the specified desktop */ -void client_set_desktop(Client *self, unsigned int target); - -/*! Return a modal child of the client window - @return A modal child of the client window, or 0 if none was found. -*/ -Client *client_find_modal_child(Client *self); - -/*! Validate client, by making sure no Destroy or Unmap events exist in - the event queue for the window. - @return true if the client is valid; false if the client has already - been unmapped/destroyed, and so is invalid. -*/ -gboolean client_validate(Client *self); - -/*! Sets the wm_state to the specified value */ -void client_set_wm_state(Client *self, long state); - -/*! Adjusts the window's net_state - This should not be called as part of the window mapping process! It is for - use when updating the state post-mapping.<br> - client_apply_startup_state is used to do the same things during the mapping - process. -*/ -void client_set_state(Client *self, Atom action, long data1, long data2); - -/*! Attempt to focus the client window */ -gboolean client_focus(Client *self); - -/*! Remove focus from the client window */ -void client_unfocus(Client *self); - -/*! Calculates the stacking layer for the client window */ -void client_calc_layer(Client *self); - -/*! Updates the window's transient status, and any parents of it */ -void client_update_transient_for(Client *self); -/*! Update the protocols that the window supports and adjusts things if they - change */ -void client_update_protocols(Client *self); -/*! Updates the WMNormalHints and adjusts things if they change */ -void client_update_normal_hints(Client *self); - -/*! Updates the WMHints and adjusts things if they change - @param initstate Whether to read the initial_state property from the - WMHints. This should only be used during the mapping - process. -*/ -void client_update_wmhints(Client *self); -/*! Updates the window's title */ -void client_update_title(Client *self); -/*! Updates the window's icon title */ -void client_update_icon_title(Client *self); -/*! Updates the window's application name and class */ -void client_update_class(Client *self); -/*! Updates the strut for the client */ -void client_update_strut(Client *self); -/*! Updates the window's icons */ -void client_update_icons(Client *self); -/*! Updates the window's kwm icon */ -void client_update_kwm_icon(Client *self); - -/*! Set up what decor should be shown on the window and what functions should - be allowed (Client::_decorations and Client::_functions). - This also updates the NET_WM_ALLOWED_ACTIONS hint. -*/ -void client_setup_decor_and_functions(Client *self); - -/*! Retrieves the window's type and sets Client->type */ -void client_get_type(Client *self); - -#endif |
