X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fblackbox.hh;h=2d5d5f6d917324e0a40c4d695047998f405b54b6;hb=75f84f9557b36f6d57a30d5c57aa1cfa2cd5dd6f;hp=0e39cc2f48e3a2cc7b727a1b90f31db81b73dfec;hpb=b8ee3dbc4565efb19338c5cf1948f0f4e2f24fd6;p=chaz%2Fopenbox diff --git a/src/blackbox.hh b/src/blackbox.hh index 0e39cc2f..2d5d5f6d 100644 --- a/src/blackbox.hh +++ b/src/blackbox.hh @@ -47,11 +47,10 @@ extern "C" { #include #include -#include "i18n.hh" -#include "BaseDisplay.hh" -#include "Configuration.hh" -#include "Timer.hh" -#include "XAtom.hh" +#include "basedisplay.hh" +#include "configuration.hh" +#include "timer.hh" +#include "xatom.hh" #define AttribShaded (1l << 0) #define AttribMaxHoriz (1l << 1) @@ -89,24 +88,14 @@ class BScreen; class Blackbox; class BlackboxWindow; class BWindowGroup; -class Basemenu; -class Toolbar; -class Slit; - -extern I18n i18n; class Blackbox : public BaseDisplay, public TimeoutHandler { private: struct BCursor { - Cursor session, move, ll_angle, lr_angle; + Cursor session, move, ll_angle, lr_angle, ul_angle, ur_angle; }; BCursor cursor; - struct MenuTimestamp { - std::string filename; - time_t timestamp; - }; - struct BResource { Time double_click_interval; @@ -115,81 +104,83 @@ private: timeval auto_raise_delay; unsigned long cache_life, cache_max; std::string titlebar_layout; + unsigned int mod_mask; // modifier mask used for window-mouse interaction + + +#ifdef XINERAMA + bool xinerama_placement, xinerama_maximize, xinerama_snap; +#endif // XINERAMA } resource; typedef std::map WindowLookup; typedef WindowLookup::value_type WindowLookupPair; WindowLookup windowSearchList; + typedef std::map WindowScreenLookup; + typedef WindowScreenLookup::value_type WindowScreenLookupPair; + WindowScreenLookup systraySearchList; + typedef std::map GroupLookup; typedef GroupLookup::value_type GroupLookupPair; GroupLookup groupSearchList; - typedef std::map MenuLookup; - typedef MenuLookup::value_type MenuLookupPair; - MenuLookup menuSearchList; - - typedef std::map ToolbarLookup; - typedef ToolbarLookup::value_type ToolbarLookupPair; - ToolbarLookup toolbarSearchList; - - typedef std::map SlitLookup; - typedef SlitLookup::value_type SlitLookupPair; - SlitLookup slitSearchList; - - typedef std::list MenuTimestampList; - MenuTimestampList menuTimestamps; - typedef std::list ScreenList; ScreenList screenList; BScreen *active_screen; - BlackboxWindow *focused_window; + BlackboxWindow *focused_window, *changing_window; BTimer *timer; Configuration config; XAtom *xatom; - bool no_focus, reconfigure_wait, reread_menu_wait; + bool no_focus, reconfigure_wait; Time last_time; char **argv; - std::string menu_file, rc_file; + std::string rc_file; Blackbox(const Blackbox&); Blackbox& operator=(const Blackbox&); void load_rc(void); void save_rc(void); - void real_rereadMenu(void); void real_reconfigure(void); virtual void process_event(XEvent *); public: - Blackbox(char **m_argv, char *dpy_name = 0, char *rc = 0, char *menu = 0); + Blackbox(char **m_argv, char *dpy_name = 0, char *rc = 0); virtual ~Blackbox(void); - Basemenu *searchMenu(Window window); BWindowGroup *searchGroup(Window window); + BScreen *searchSystrayWindow(Window window); BlackboxWindow *searchWindow(Window window); BScreen *searchScreen(Window window); - Toolbar *searchToolbar(Window); - Slit *searchSlit(Window); - void saveMenuSearch(Window window, Basemenu *data); +#ifdef XINERAMA + inline bool doXineramaPlacement(void) const + { return resource.xinerama_placement; } + inline bool doXineramaMaximizing(void) const + { return resource.xinerama_maximize; } + inline bool doXineramaSnapping(void) const + { return resource.xinerama_snap; } + + void saveXineramaPlacement(bool x); + void saveXineramaMaximizing(bool x); + void saveXineramaSnapping(bool x); +#endif // XINERAMA + + void saveSystrayWindowSearch(Window window, BScreen *screen); void saveWindowSearch(Window window, BlackboxWindow *data); void saveGroupSearch(Window window, BWindowGroup *data); - void saveToolbarSearch(Window window, Toolbar *data); - void saveSlitSearch(Window window, Slit *data); - void removeMenuSearch(Window window); + void removeSystrayWindowSearch(Window window); void removeWindowSearch(Window window); void removeGroupSearch(Window window); - void removeToolbarSearch(Window window); - void removeSlitSearch(Window window); inline XAtom *getXAtom(void) { return xatom; } - + inline BlackboxWindow *getFocusedWindow(void) { return focused_window; } + inline BlackboxWindow *getChangingWindow(void) { return changing_window; } inline Configuration *getConfig() { return &config; } inline const Time &getDoubleClickInterval(void) const @@ -198,8 +189,6 @@ public: inline const char *getStyleFilename(void) const { return resource.style_file.c_str(); } - inline const char *getMenuFilename(void) const - { return menu_file.c_str(); } inline int getColorsPerChannel(void) const { return resource.colors_per_channel; } @@ -225,15 +214,20 @@ public: { return cursor.ll_angle; } inline Cursor getLowerRightAngleCursor(void) const { return cursor.lr_angle; } + inline Cursor getUpperLeftAngleCursor(void) const + { return cursor.ul_angle; } + inline Cursor getUpperRightAngleCursor(void) const + { return cursor.ur_angle; } + + inline unsigned int getMouseModMask(void) const + { return resource.mod_mask; } - void setFocusedWindow(BlackboxWindow *w); + void setFocusedWindow(BlackboxWindow *win); + void setChangingWindow(BlackboxWindow *win); void shutdown(void); void saveStyleFilename(const std::string& filename); - void addMenuTimestamp(const std::string& filename); void restart(const char *prog = 0); void reconfigure(void); - void rereadMenu(void); - void checkMenu(void); bool validateWindow(Window window); @@ -241,71 +235,7 @@ public: virtual void timeout(void); -#ifndef HAVE_STRFTIME enum { B_AmericanDate = 1, B_EuropeanDate }; -#endif // HAVE_STRFTIME - - inline Atom getWMChangeStateAtom(void) const - { return xatom->getAtom(XAtom::wm_change_state); } - inline Atom getWMStateAtom(void) const - { return xatom->getAtom(XAtom::wm_state); } - inline Atom getWMDeleteAtom(void) const - { return xatom->getAtom(XAtom::wm_delete_window); } - inline Atom getWMProtocolsAtom(void) const - { return xatom->getAtom(XAtom::wm_protocols); } - inline Atom getWMTakeFocusAtom(void) const - { return xatom->getAtom(XAtom::wm_take_focus); } - inline Atom getWMColormapAtom(void) const - { return xatom->getAtom(XAtom::wm_colormap_windows); } - inline Atom getMotifWMHintsAtom(void) const - { return xatom->getAtom(XAtom::motif_wm_hints); } - - // this atom is for normal app->WM hints about decorations, stacking, - // starting workspace etc... - inline Atom getBlackboxHintsAtom(void) const - { return xatom->getAtom(XAtom::blackbox_hints); } - - // these atoms are for normal app->WM interaction beyond the scope of the - // ICCCM... - inline Atom getBlackboxAttributesAtom(void) const - { return xatom->getAtom(XAtom::blackbox_attributes); } - inline Atom getBlackboxChangeAttributesAtom(void) const - { return xatom->getAtom(XAtom::blackbox_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 Atom getBlackboxStructureMessagesAtom(void) const - { return xatom->getAtom(XAtom::blackbox_structure_messages); } - - // *Notify* portions of the NETStructureMessages protocol - inline Atom getBlackboxNotifyStartupAtom(void) const - { return xatom->getAtom(XAtom::blackbox_notify_startup); } - inline Atom getBlackboxNotifyWindowAddAtom(void) const - { return xatom->getAtom(XAtom::blackbox_notify_window_add); } - inline Atom getBlackboxNotifyWindowDelAtom(void) const - { return xatom->getAtom(XAtom::blackbox_notify_window_del); } - inline Atom getBlackboxNotifyWindowFocusAtom(void) const - { return xatom->getAtom(XAtom::blackbox_notify_window_focus); } - inline Atom getBlackboxNotifyCurrentWorkspaceAtom(void) const - { return xatom->getAtom(XAtom::blackbox_notify_current_workspace); } - inline Atom getBlackboxNotifyWorkspaceCountAtom(void) const - { return xatom->getAtom(XAtom::blackbox_notify_workspace_count); } - inline Atom getBlackboxNotifyWindowRaiseAtom(void) const - { return xatom->getAtom(XAtom::blackbox_notify_window_raise); } - inline Atom getBlackboxNotifyWindowLowerAtom(void) const - { return xatom->getAtom(XAtom::blackbox_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 Atom getBlackboxChangeWorkspaceAtom(void) const - { return xatom->getAtom(XAtom::blackbox_change_workspace); } - inline Atom getBlackboxChangeWindowFocusAtom(void) const - { return xatom->getAtom(XAtom::blackbox_change_window_focus); } - inline Atom getBlackboxCycleWindowFocusAtom(void) const - { return xatom->getAtom(XAtom::blackbox_cycle_window_focus); } };