]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/WorkArea.h
Extracted from r14281
[lyx.git] / src / frontends / WorkArea.h
index b3ee602e57ff0982cc114d2d1ea47330effecf1a..c8a846c9f537dc9924e6225708d3c61aab3e94ca 100644 (file)
 
 #include "frontends/key_state.h"
 #include "frontends/LyXKeySym.h"
+#include "frontends/Timeout.h"
 
-class LyXView;
-class FuncRequest;
 class BufferView;
-class ViewMetricsInfo;
 
 namespace lyx {
 namespace frontend {
@@ -38,10 +36,17 @@ class Painter;
  */
 class WorkArea {
 public:
-       WorkArea(LyXView & owner, int w, int h);
+       WorkArea(BufferView * buffer_view = 0);
 
        virtual ~WorkArea() {}
 
+       void setBufferView(BufferView * buffer_view);
+
+       ///
+       BufferView & bufferView();
+       ///
+       BufferView const & bufferView() const;
+
        /// return the painter object for this work area
        virtual Painter & getPainter() = 0;
 
@@ -60,27 +65,46 @@ public:
        virtual void setScrollbarParams(int height, int pos, int line_height) = 0;
 
        /// redraw the screen, without using existing pixmap
-       virtual void redraw(BufferView & bv, ViewMetricsInfo const & vi);
+       virtual void redraw();
+
+       ///
+       void processKeySym(LyXKeySymPtr key, key_modifier::state state);
 
        /// grey out (no buffer)
        void greyOut();
 
        /// paint the cursor and store the background
-       virtual void showCursor(int x, int y, int h, Cursor_Shape shape) = 0;
+       virtual void showCursor(int x, int y, int h, CursorShape shape) = 0;
 
        /// hide the cursor
        virtual void removeCursor() = 0;
 
+       /// Show the cursor
+       void showCursor();
+       /// Hide the cursor
+       void hideCursor();
+       /// toggle the cursor's visibility
+       void toggleCursor();
+
 protected:
        /// cause the display of the given area of the work area
        virtual void expose(int x, int y, int w, int h) = 0;
 
+       ///
+       BufferView * buffer_view_;
+
 private:
        ///
        void checkAndGreyOut();
 
        ///
        bool greyed_out_;
+
+       ///
+       bool cursor_visible_;
+
+       ///
+       Timeout cursor_timeout_;
 };
 
 } // namespace frontend