summaryrefslogtreecommitdiff
path: root/src/BaseDisplay.h
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-05-25 00:29:44 +0000
committerDana Jansens <danakj@orodu.net>2002-05-25 00:29:44 +0000
commit8794d357e67abddf9fda9db77b235e294d0ec590 (patch)
tree97e618433ff557b2b2d0842498d8464d4fba8717 /src/BaseDisplay.h
parente640ee15ad19f24e0ad8351933fea5bafe98d380 (diff)
import from bb-cvs
added slit and enable-clobber defines back in Makefile.am
Diffstat (limited to 'src/BaseDisplay.h')
-rw-r--r--src/BaseDisplay.h367
1 files changed, 0 insertions, 367 deletions
diff --git a/src/BaseDisplay.h b/src/BaseDisplay.h
deleted file mode 100644
index 8bd13e89..00000000
--- a/src/BaseDisplay.h
+++ /dev/null
@@ -1,367 +0,0 @@
-// BaseDisplay.h for Openbox
-// Copyright (c) 2001 Sean 'Shaleh' Perry <shaleh@debian.org>
-// Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-
-#ifndef __BaseDisplay_hh
-#define __BaseDisplay_hh
-
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-
-// forward declaration
-class BaseDisplay;
-class ScreenInfo;
-
-#include "Timer.h"
-#include "Geometry.h"
-#include "Util.h"
-#include <vector>
-#include <list>
-
-#define AttribShaded (1l << 0)
-#define AttribMaxHoriz (1l << 1)
-#define AttribMaxVert (1l << 2)
-#define AttribOmnipresent (1l << 3)
-#define AttribWorkspace (1l << 4)
-#define AttribStack (1l << 5)
-#define AttribDecoration (1l << 6)
-
-#define StackTop (0)
-#define StackNormal (1)
-#define StackBottom (2)
-
-#define DecorNone (0)
-#define DecorNormal (1)
-#define DecorTiny (2)
-#define DecorTool (3)
-
-typedef struct _openbox_hints {
- unsigned long flags, attrib, workspace, stack, decoration;
-} OpenboxHints;
-
-typedef struct _openbox_attributes {
- unsigned long flags, attrib, workspace, stack, decoration;
- int premax_x, premax_y;
- unsigned int premax_w, premax_h;
-} OpenboxAttributes;
-
-#define PropOpenboxHintsElements (5)
-#define PropOpenboxAttributesElements (9)
-
-#ifndef __EMX__
-void bexec(const char *, char *);
-#endif // !__EMX__
-
-char *bstrdup(const char *);
-
-class BaseDisplay {
-private:
- struct cursor {
- Cursor session, move, ll_angle, lr_angle, ul_angle, ur_angle;
- } cursor;
-
- struct shape {
- Bool extensions;
- int event_basep, error_basep;
- } shape;
-
-#ifndef NOCLOBBER
- unsigned int MaskList[8];
- size_t MaskListLength;
-#endif // NOCLOBBER
-
- Atom xa_wm_colormap_windows, xa_wm_protocols, xa_wm_state,
- xa_wm_delete_window, xa_wm_take_focus, xa_wm_change_state,
- motif_wm_hints;
-
- // NETAttributes
- Atom openbox_attributes, openbox_change_attributes, openbox_hints;
-
- // NETStructureMessages
- Atom openbox_structure_messages, openbox_notify_startup,
- openbox_notify_window_add, openbox_notify_window_del,
- openbox_notify_window_focus, openbox_notify_current_workspace,
- openbox_notify_workspace_count, openbox_notify_window_raise,
- openbox_notify_window_lower;
-
- // message_types for client -> wm messages
- Atom openbox_change_workspace, openbox_change_window_focus,
- openbox_cycle_window_focus;
-
-#ifdef NEWWMSPEC
-
- // root window properties
- Atom net_supported, net_client_list, net_client_list_stacking,
- net_number_of_desktops, net_desktop_geometry, net_desktop_viewport,
- net_current_desktop, net_desktop_names, net_active_window, net_workarea,
- net_supporting_wm_check, net_virtual_roots;
-
- // root window messages
- Atom net_close_window, net_wm_moveresize;
-
- // application window properties
- Atom net_properties, net_wm_name, net_wm_desktop, net_wm_window_type,
- net_wm_state, net_wm_strut, net_wm_icon_geometry, net_wm_icon, net_wm_pid,
- net_wm_handled_icons;
-
- // application protocols
- Atom net_wm_ping;
-
-#endif // NEWWMSPEC
-
- Bool _startup, _shutdown;
- Display *display;
-
- typedef std::vector<ScreenInfo*> ScreenInfoList;
- ScreenInfoList screenInfoList;
-
- typedef std::list<BTimer*> TimerList;
- TimerList timerList;
-
- char *display_name, *application_name;
- unsigned int server_grabs, colors_per_channel;
-
-
-protected:
- // pure virtual function... you must override this
- virtual void process_event(XEvent *) = 0;
-
- // the masks of the modifiers which are ignored in button events.
- int NumLockMask, ScrollLockMask;
-
-
-public:
- BaseDisplay(const char *, char * = 0);
- virtual ~BaseDisplay();
-
- inline const Atom &getWMChangeStateAtom() const
- { return xa_wm_change_state; }
- inline const Atom &getWMStateAtom() const
- { return xa_wm_state; }
- inline const Atom &getWMDeleteAtom() const
- { return xa_wm_delete_window; }
- inline const Atom &getWMProtocolsAtom() const
- { return xa_wm_protocols; }
- inline const Atom &getWMTakeFocusAtom() const
- { return xa_wm_take_focus; }
- inline const Atom &getWMColormapAtom() const
- { return xa_wm_colormap_windows; }
- inline const Atom &getMotifWMHintsAtom() const
- { return motif_wm_hints; }
-
- // this atom is for normal app->WM hints about decorations, stacking,
- // starting workspace etc...
- inline const Atom &getOpenboxHintsAtom() const
- { return openbox_hints;}
-
- // these atoms are for normal app->WM interaction beyond the scope of the
- // ICCCM...
- inline const Atom &getOpenboxAttributesAtom() const
- { return openbox_attributes; }
- inline const Atom &getOpenboxChangeAttributesAtom() const
- { return openbox_change_attributes; }
-
- // these atoms are for window->WM interaction, with more control and
- // information on window "structure"... common examples are
- // notifying apps when windows are raised/lowered... when the user changes
- // workspaces... i.e. "pager talk"
- inline const Atom &getOpenboxStructureMessagesAtom() const
- { return openbox_structure_messages; }
-
- // *Notify* portions of the NETStructureMessages protocol
- inline const Atom &getOpenboxNotifyStartupAtom() const
- { return openbox_notify_startup; }
- inline const Atom &getOpenboxNotifyWindowAddAtom() const
- { return openbox_notify_window_add; }
- inline const Atom &getOpenboxNotifyWindowDelAtom() const
- { return openbox_notify_window_del; }
- inline const Atom &getOpenboxNotifyWindowFocusAtom() const
- { return openbox_notify_window_focus; }
- inline const Atom &getOpenboxNotifyCurrentWorkspaceAtom() const
- { return openbox_notify_current_workspace; }
- inline const Atom &getOpenboxNotifyWorkspaceCountAtom() const
- { return openbox_notify_workspace_count; }
- inline const Atom &getOpenboxNotifyWindowRaiseAtom() const
- { return openbox_notify_window_raise; }
- inline const Atom &getOpenboxNotifyWindowLowerAtom() const
- { return openbox_notify_window_lower; }
-
- // atoms to change that request changes to the desktop environment during
- // runtime... these messages can be sent by any client... as the sending
- // client window id is not included in the ClientMessage event...
- inline const Atom &getOpenboxChangeWorkspaceAtom() const
- { return openbox_change_workspace; }
- inline const Atom &getOpenboxChangeWindowFocusAtom() const
- { return openbox_change_window_focus; }
- inline const Atom &getOpenboxCycleWindowFocusAtom() const
- { return openbox_cycle_window_focus; }
-
-#ifdef NEWWMSPEC
-
- // root window properties
- inline const Atom &getNETSupportedAtom() const
- { return net_supported; }
- inline const Atom &getNETClientListAtom() const
- { return net_client_list; }
- inline const Atom &getNETClientListStackingAtom() const
- { return net_client_list_stacking; }
- inline const Atom &getNETNumberOfDesktopsAtom() const
- { return net_number_of_desktops; }
- inline const Atom &getNETDesktopGeometryAtom() const
- { return net_desktop_geometry; }
- inline const Atom &getNETDesktopViewportAtom() const
- { return net_desktop_viewport; }
- inline const Atom &getNETCurrentDesktopAtom() const
- { return net_current_desktop; }
- inline const Atom &getNETDesktopNamesAtom() const
- { return net_desktop_names; }
- inline const Atom &getNETActiveWindowAtom() const
- { return net_active_window; }
- inline const Atom &getNETWorkareaAtom() const
- { return net_workarea; }
- inline const Atom &getNETSupportingWMCheckAtom() const
- { return net_supporting_wm_check; }
- inline const Atom &getNETVirtualRootsAtom() const
- { return net_virtual_roots; }
-
- // root window messages
- inline const Atom &getNETCloseWindowAtom() const
- { return net_close_window; }
- inline const Atom &getNETWMMoveResizeAtom() const
- { return net_wm_moveresize; }
-
- // application window properties
- inline const Atom &getNETPropertiesAtom() const
- { return net_properties; }
- inline const Atom &getNETWMNameAtom() const
- { return net_wm_name; }
- inline const Atom &getNETWMDesktopAtom() const
- { return net_wm_desktop; }
- inline const Atom &getNETWMWindowTypeAtom() const
- { return net_wm_window_type; }
- inline const Atom &getNETWMStateAtom() const
- { return net_wm_state; }
- inline const Atom &getNETWMStrutAtom() const
- { return net_wm_strut; }
- inline const Atom &getNETWMIconGeometryAtom() const
- { return net_wm_icon_geometry; }
- inline const Atom &getNETWMIconAtom() const
- { return net_wm_icon; }
- inline const Atom &getNETWMPidAtom() const
- { return net_wm_pid; }
- inline const Atom &getNETWMHandledIconsAtom() const
- { return net_wm_handled_icons; }
-
- // application protocols
- inline const Atom &getNETWMPingAtom() const
- { return net_wm_ping; }
-
-#endif // NEWWMSPEC
-
- inline ScreenInfo *getScreenInfo(unsigned int s) {
- ASSERT(s < screenInfoList.size());
- return screenInfoList[s];
- }
-
- inline const Bool &hasShapeExtensions() const
- { return shape.extensions; }
- inline const Bool &doShutdown() const
- { return _shutdown; }
- inline const Bool &isStartup() const
- { return _startup; }
-
- inline const Cursor &getSessionCursor() const
- { return cursor.session; }
- inline const Cursor &getMoveCursor() const
- { return cursor.move; }
- inline const Cursor &getLowerLeftAngleCursor() const
- { return cursor.ll_angle; }
- inline const Cursor &getLowerRightAngleCursor() const
- { return cursor.lr_angle; }
- inline const Cursor &getUpperLeftAngleCursor() const
- { return cursor.ul_angle; }
- inline const Cursor &getUpperRightAngleCursor() const
- { return cursor.ur_angle; }
-
- inline Display *getXDisplay() { return display; }
-
- inline const char *getXDisplayName() const
- { return (const char *) display_name; }
- inline const char *getApplicationName() const
- { return (const char *) application_name; }
-
- inline const unsigned int numberOfScreens() const
- { return ScreenCount(display); }
- inline const int &getShapeEventBase() const
- { return shape.event_basep; }
-
- inline void shutdown() { _shutdown = True; }
- inline void run() { _startup = _shutdown = False; }
-
- const Bool validateWindow(Window);
-
- void grabButton(unsigned int, unsigned int, Window, Bool, unsigned int, int,
- int, Window, Cursor) const;
- void ungrabButton(unsigned int button, unsigned int modifiers,
- Window grab_window) const;
-
- void grab();
- void ungrab();
- void eventLoop();
- void addTimer(BTimer *);
- void removeTimer(BTimer *);
-
- // another pure virtual... this is used to handle signals that BaseDisplay
- // doesn't understand itself
- virtual Bool handleSignal(int) = 0;
-};
-
-
-class ScreenInfo {
-private:
- BaseDisplay &basedisplay;
- Visual *visual;
- Window root_window;
- Colormap colormap;
-
- int depth, screen_number;
- Size m_size;
-
-
-public:
- ScreenInfo(BaseDisplay &, int);
-
- inline BaseDisplay &getBaseDisplay() { return basedisplay; }
-
- inline Visual *getVisual() const { return visual; }
- inline const Window &getRootWindow() const { return root_window; }
- inline const Colormap &getColormap() const { return colormap; }
-
- inline const int &getDepth() const { return depth; }
- inline const int &getScreenNumber() const { return screen_number; }
-
-// inline const unsigned int &getWidth() const { return width; }
-// inline const unsigned int &getHeight() const { return height; }
- inline const Size &size() const { return m_size; }
-};
-
-
-#endif // __BaseDisplay_hh