X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FScreen.hh;h=2fbf20fd1414406c7bfc34450a5bff2ea4dcf2b6;hb=39bd954b8bf197fa08f73ffade953fe531463796;hp=60418cd708eeb4ae569f2952a900c1545ba589ce;hpb=be2f47223c17c399e05436a34ba4140f2fc44fc9;p=chaz%2Fopenbox diff --git a/src/Screen.hh b/src/Screen.hh index 60418cd7..2fbf20fd 100644 --- a/src/Screen.hh +++ b/src/Screen.hh @@ -26,7 +26,6 @@ extern "C" { #include -#include #ifdef TIME_WITH_SYS_TIME # include @@ -58,6 +57,7 @@ extern "C" { class Slit; // forward reference class BFont; class XAtom; +struct Strut; enum TextJustify { LeftJustify = 1, RightJustify, CenterJustify }; @@ -97,12 +97,6 @@ struct MenuStyle { int bullet, bullet_pos; }; -struct Strut { - unsigned int top, bottom, left, right; - - Strut(void): top(0), bottom(0), left(0), right(0) {} -}; - class BScreen : public ScreenInfo { private: bool root_colormap_installed, managed, geom_visible; @@ -137,6 +131,9 @@ private: unsigned long event_mask; Rect usableArea; +#ifdef XINERAMA + RectList xineramaUsableArea; +#endif // XINERAMA typedef std::list StrutList; StrutList strutList; @@ -150,14 +147,17 @@ private: bool sloppy_focus, auto_raise, auto_edge_balance, ordered_dither, opaque_move, full_max, focus_new, focus_last, click_raise, - hide_toolbar, window_to_window_snap, window_corner_snap; + allow_scroll_lock, hide_toolbar, window_to_window_snap, + window_corner_snap, aa_fonts, ignore_shaded, ignore_maximized, + workspace_warping; BColor border_color; unsigned int workspaces; int toolbar_placement, toolbar_width_percent, placement_policy, - edge_snap_threshold, row_direction, col_direction; + edge_snap_threshold, row_direction, col_direction, root_scroll; - unsigned int handle_width, bevel_width, frame_width, border_width; + unsigned int handle_width, bevel_width, frame_width, border_width, + resize_zones; #ifdef HAVE_STRFTIME std::string strftime_format; @@ -180,7 +180,8 @@ private: BColor readDatabaseColor(const std::string &rname, const std::string &default_color, const Configuration &style); - BFont *readDatabaseFont(const std::string &rname, const Configuration &style); + BFont *readDatabaseFont(const std::string &rbasename, + const Configuration &style); void InitMenu(void); void LoadStyle(void); @@ -188,12 +189,14 @@ private: void updateWorkArea(void); public: enum { RowSmartPlacement = 1, ColSmartPlacement, CascadePlacement, - UnderMousePlacement, LeftRight, RightLeft, TopBottom, BottomTop }; + UnderMousePlacement, ClickMousePlacement, LeftRight, RightLeft, + TopBottom, BottomTop, IgnoreShaded, IgnoreMaximized }; enum { RoundBullet = 1, TriangleBullet, SquareBullet, NoBullet }; enum { Restart = 1, RestartOther, Exit, Shutdown, Execute, Reconfigure, WindowShade, WindowIconify, WindowMaximize, WindowClose, WindowRaise, WindowLower, WindowStick, WindowKill, SetStyle }; enum FocusModel { SloppyFocus, ClickToFocus }; + enum RootScrollDirection { NoScroll, NormalScroll, ReverseScroll }; BScreen(Blackbox *bb, unsigned int scrn); ~BScreen(void); @@ -204,6 +207,7 @@ public: inline bool doAutoRaise(void) const { return resource.auto_raise; } inline bool doClickRaise(void) const { return resource.click_raise; } inline bool isScreenManaged(void) const { return managed; } + inline bool doAAFonts(void) const { return resource.aa_fonts; } inline bool doImageDither(void) const { return image_control->doDither(); } inline bool doOrderedDither(void) const { return resource.ordered_dither; } inline bool doOpaqueMove(void) const { return resource.opaque_move; } @@ -215,6 +219,10 @@ public: { return resource.window_to_window_snap; } inline bool getWindowCornerSnap(void) const { return resource.window_corner_snap; } + inline bool allowScrollLock(void) const { return resource.allow_scroll_lock; } + inline bool doWorkspaceWarping(void) const + { return resource.workspace_warping; } + inline int rootScrollDirection(void) const { return resource.root_scroll; } inline const GC &getOpGC(void) const { return opGC; } @@ -240,12 +248,18 @@ public: { return resource.frame_width; } inline unsigned int getBorderWidth(void) const { return resource.border_width; } - - inline unsigned int getCurrentWorkspaceID(void) + inline unsigned int getResizeZones(void) const + { return resource.resize_zones; } + inline bool getPlaceIgnoreShaded(void) const + { return resource.ignore_shaded; } + inline bool getPlaceIgnoreMaximized(void) const + { return resource.ignore_maximized; } + + inline unsigned int getCurrentWorkspaceID(void) const { return current_workspace->getID(); } - inline unsigned int getWorkspaceCount(void) + inline unsigned int getWorkspaceCount(void) const { return workspacesList.size(); } - inline unsigned int getIconCount(void) { return iconList.size(); } + inline unsigned int getIconCount(void) const { return iconList.size(); } inline unsigned int getNumberOfWorkspaces(void) const { return resource.workspaces; } inline int getPlacementPolicy(void) const @@ -257,6 +271,8 @@ public: inline int getColPlacementDirection(void) const { return resource.col_direction; } + void changeWorkspaceCount(unsigned int new_count); + inline void setRootColormapInstalled(bool r) { root_colormap_installed = r; } void saveSloppyFocus(bool s); void saveAutoRaise(bool a); @@ -267,6 +283,7 @@ public: void saveColPlacementDirection(int d); void saveEdgeSnapThreshold(int t); void saveImageDither(bool d); + void saveAAFonts(bool f); void saveOpaqueMove(bool o); void saveFullMax(bool f); void saveFocusNew(bool f); @@ -274,6 +291,12 @@ public: void saveHideToolbar(bool h); void saveWindowToWindowSnap(bool s); void saveWindowCornerSnap(bool s); + void saveResizeZones(unsigned int z); + void savePlaceIgnoreShaded(bool i); + void savePlaceIgnoreMaximized(bool i); + void saveAllowScrollLock(bool a); + void saveWorkspaceWarping(bool w); + void saveRootScrollDirection(int d); inline void iconUpdate(void) { iconmenu->update(); } #ifdef HAVE_STRFTIME @@ -293,7 +316,12 @@ public: BlackboxWindow *getIcon(unsigned int index); + // allAvailableAreas should be used whenever possible instead of this function + // as then Xinerama will work correctly. const Rect& availableArea(void) const; +#ifdef XINERAMA + const RectList& allAvailableAreas(void) const; +#endif // XINERAMA void updateAvailableArea(void); void addStrut(Strut *strut); void removeStrut(Strut *strut); @@ -306,9 +334,6 @@ public: void addNetizen(Netizen *n); void removeNetizen(Window w); - void addDesktopWindow(Window window); - void removeDesktopWindow(Window window); - void addSystrayWindow(Window window); void removeSystrayWindow(Window window); @@ -320,7 +345,7 @@ public: void manageWindow(Window w); void unmanageWindow(BlackboxWindow *w, bool remap); void raiseWindows(Window *workspace_stack, unsigned int num); - void lowerDesktops(void); + void lowerWindows(Window *workspace_stack, unsigned int num); void reassociateWindow(BlackboxWindow *w, unsigned int wkspc_id, bool ignore_sticky); void propagateWindowName(const BlackboxWindow *bw); @@ -331,14 +356,14 @@ public: void save_rc(void); void reconfigure(void); void toggleFocusModel(FocusModel model); - void updateFocusModel(void); void rereadMenu(void); void shutdown(void); void showPosition(int x, int y); void showGeometry(unsigned int gx, unsigned int gy); void hideGeometry(void); - void buttonPressEvent(XButtonEvent *xbutton); + void buttonPressEvent(const XButtonEvent *xbutton); + void propertyNotifyEvent(const XPropertyEvent *pe); void updateNetizenCurrentWorkspace(void); void updateNetizenWorkspaceCount(void);