]> Dogcows Code - chaz/openbox/blobdiff - src/blackbox.hh
handle mouse motion too
[chaz/openbox] / src / blackbox.hh
index a6e689d7666d386b18ffe3cbef6d1a5a640bb8a8..42ddeabbd2778d9129d319c498aa0c63bddfc624 100644 (file)
@@ -1,26 +1,4 @@
 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
-// blackbox.hh for Blackbox - an X11 Window manager
-// Copyright (c) 2001 - 2002 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   __blackbox_hh
 #define   __blackbox_hh
 
@@ -47,11 +25,11 @@ extern "C" {
 #include <map>
 #include <string>
 
-#include "i18n.hh"
-#include "BaseDisplay.hh"
-#include "Configuration.hh"
-#include "Timer.hh"
-#include "XAtom.hh"
+#include "otk/timer.hh"
+#include "otk/property.hh"
+#include "openbox.hh"
+#include "otk/configuration.hh"
+#include "timer.hh"
 
 #define AttribShaded      (1l << 0)
 #define AttribMaxHoriz    (1l << 1)
@@ -70,6 +48,8 @@ extern "C" {
 #define DecorTiny         (2)
 #define DecorTool         (3)
 
+namespace ob {
+
 struct BlackboxHints {
   unsigned long flags, attrib, workspace, stack, decoration;
 };
@@ -89,24 +69,14 @@ class BScreen;
 class Blackbox;
 class BlackboxWindow;
 class BWindowGroup;
-class Basemenu;
-class Toolbar;
-class Slit;
-
-extern I18n i18n;
 
-class Blackbox : public BaseDisplay, public TimeoutHandler {
+class Blackbox : public Openbox {
 private:
   struct BCursor {
     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,6 +85,12 @@ 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<Window, BlackboxWindow*> WindowLookup;
@@ -129,85 +105,71 @@ private:
   typedef GroupLookup::value_type GroupLookupPair;
   GroupLookup groupSearchList;
 
-  typedef std::map<Window, Basemenu*> MenuLookup;
-  typedef MenuLookup::value_type MenuLookupPair;
-  MenuLookup menuSearchList;
-
-  typedef std::map<Window, Toolbar*> ToolbarLookup;
-  typedef ToolbarLookup::value_type ToolbarLookupPair;
-  ToolbarLookup toolbarSearchList;
-
-  typedef std::map<Window, Slit*> SlitLookup;
-  typedef SlitLookup::value_type SlitLookupPair;
-  SlitLookup slitSearchList;
-
-  typedef std::list<MenuTimestamp*> MenuTimestampList;
-  MenuTimestampList menuTimestamps;
-
   typedef std::list<BScreen*> ScreenList;
   ScreenList screenList;
 
   BScreen *active_screen;
   BlackboxWindow *focused_window, *changing_window;
-  BTimer *timer;
-  Configuration config;
-  XAtom *xatom;
+  otk::OBTimer *timer;
+  otk::Configuration config;
+  otk::OBProperty *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(int argc, char **m_argv, 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 otk::OBProperty *getXAtom(void) { return xatom; }
 
   inline BlackboxWindow *getFocusedWindow(void) { return focused_window; }
   inline BlackboxWindow *getChangingWindow(void) { return changing_window; }
 
-  inline Configuration *getConfig() { return &config; }
+  inline otk::Configuration *getConfig() { return &config; }
   inline const Time &getDoubleClickInterval(void) const
   { return resource.double_click_interval; }
   inline const Time &getLastTime(void) const { return last_time; }
 
   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; }
@@ -237,27 +199,26 @@ public:
     { 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 *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);
 
   virtual bool handleSignal(int sig);
 
-  virtual void timeout(void);
+  static void timeout(Blackbox *t);
 
-#ifndef   HAVE_STRFTIME
   enum { B_AmericanDate = 1, B_EuropeanDate };
-#endif // HAVE_STRFTIME
 };
 
+}
 
 #endif // __blackbox_hh
This page took 0.02575 seconds and 4 git commands to generate.