summaryrefslogtreecommitdiff
path: root/c/client.h
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-03-21 07:54:23 +0000
committerDana Jansens <danakj@orodu.net>2003-03-21 07:54:23 +0000
commita648c05a7a2608e7e909317f5afe8427a0ea0d68 (patch)
tree9a8355e87192adeec50ee7eaff227decc8af8ffd /c/client.h
parent474f689132d906a553bdc695d3c179652cbe8c53 (diff)
kill the c dir
Diffstat (limited to 'c/client.h')
-rw-r--r--c/client.h401
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