#endif // TIME_WITH_SYS_TIME
#include "Resource.h"
-#include "LinkedList.h"
#include "BaseDisplay.h"
#include "Timer.h"
+#include <map>
+#include <list>
+
//forward declaration
class BScreen;
class Openbox;
class Openbox : public BaseDisplay, public TimeoutHandler {
private:
typedef struct MenuTimestamp {
+ virtual ~MenuTimestamp() {
+ if (filename != (char *) 0)
+ delete [] filename;
+ }
char *filename;
time_t timestamp;
} MenuTimestamp;
unsigned long cache_life, cache_max;
} resource;
- typedef DataSearch<OpenboxWindow> WindowSearch;
- LinkedList<WindowSearch> *windowSearchList, *groupSearchList;
- typedef DataSearch<Basemenu> MenuSearch;
- LinkedList<MenuSearch> *menuSearchList;
- typedef DataSearch<Toolbar> ToolbarSearch;
- LinkedList<ToolbarSearch> *toolbarSearchList;
+ typedef std::map<Window, OpenboxWindow*> WindowLookup;
+ typedef WindowLookup::value_type WindowLookupPair;
+ WindowLookup windowSearchList, 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;
#ifdef SLIT
- typedef DataSearch<Slit> SlitSearch;
- LinkedList<SlitSearch> *slitSearchList;
+ typedef std::map<Window, Slit*> SlitLookup;
+ typedef SlitLookup::value_type SlitLookupPair;
+ SlitLookup slitSearchList;
#endif // SLIT
- LinkedList<MenuTimestamp> *menuTimestamps;
- LinkedList<BScreen> *screenList;
+ typedef std::list<MenuTimestamp*> MenuTimestampList;
+ MenuTimestampList menuTimestamps;
+
+ typedef std::list<BScreen*> ScreenList;
+ ScreenList screenList;
- OpenboxWindow *focused_window, *masked_window;
+ BScreen *current_screen;
+ OpenboxWindow *masked_window;
BTimer *timer;
#ifdef HAVE_GETPID
OpenboxWindow *searchGroup(Window, OpenboxWindow *);
OpenboxWindow *searchWindow(Window);
- inline OpenboxWindow *getFocusedWindow() { return focused_window; }
+ OpenboxWindow *focusedWindow();
+ void focusWindow(OpenboxWindow *w);
BScreen *getScreen(int);
BScreen *searchScreen(Window);
{ masked = w; masked_window = bw; }
inline void setNoFocus(Bool f) { no_focus = f; }
- void setFocusedWindow(OpenboxWindow *w);
void shutdown();
void setStyleFilename(const char *);
void setMenuFilename(const char *);