]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiWorkArea.h
rename a few view functions from foo() to fooView()
[lyx.git] / src / frontends / qt4 / GuiWorkArea.h
index b44cad93c26589cddafe1d505c3de9e657256976..2bafbeb5b3669ccbf5322bcbd6e9f63876cea3be 100644 (file)
@@ -4,7 +4,6 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author unknown
  * \author John Levon
  * \author Abdelrazak Younes
  *
 #ifndef WORKAREA_H
 #define WORKAREA_H
 
-#ifdef emit
-#undef emit
-#endif
-
 #include "frontends/WorkArea.h"
 
-#include "QLPainter.h"
-
-#include "funcrequest.h"
-#include "frontends/Timeout.h"
+#include "FuncRequest.h"
+#include "support/Timeout.h"
 
 #include <QAbstractScrollArea>
 #include <QMouseEvent>
-#include <QWheelEvent>
 #include <QResizeEvent>
 #include <QKeyEvent>
-#include <QPaintEvent>
 #include <QTimer>
-#include <QImage>
 #include <QPixmap>
 
 #include <queue>
 
-class Painter;
-
 class QWidget;
 class QDragEnterEvent;
 class QDropEvent;
-class QMouseEvent;
+class QWheelEvent;
+class QPaintEvent;
 
 namespace lyx {
 namespace frontend {
 
-class GuiView;
-
 /// for emulating triple click
 class double_click {
 public:
-       int x;
-       int y;
-       Qt::ButtonState state;
+       Qt::MouseButton state;
        bool active;
 
        bool operator==(QMouseEvent const & e) {
-               return x == e.x() && y == e.y()
-                       && state == e.button();
+               return state == e.button();
        }
 
        double_click()
-               : x(0), y(0), state(Qt::NoButton), active(false) {}
+               : state(Qt::NoButton), active(false) {}
 
        double_click(QMouseEvent * e)
-               : x(e->x()), y(e->y()),
-               state(e->button()), active(true) {}
+               : state(e->button()), active(true) {}
 };
 
 /** Qt only emits mouse events when the mouse is being moved, but
@@ -95,47 +78,31 @@ public:
  * Qt-specific implementation of the work area
  * (buffer view GUI)
 */
-class GuiWorkArea: public QAbstractScrollArea, public WorkArea {
-
+       class CursorWidget;
+class GuiWorkArea : public QAbstractScrollArea, public WorkArea
+{
        Q_OBJECT
 
 public:
+       ///
+       GuiWorkArea(Buffer & buffer, LyXView & lv);
 
-       GuiWorkArea(int width, int height, QWidget * parent, BufferView * buffer_view = 0);
+       ///
+       bool hasFocus() const { return QAbstractScrollArea::hasFocus(); }
+       bool isVisible() const { return QAbstractScrollArea::isVisible(); }
 
-       virtual ~GuiWorkArea();
        /// return the width of the content pane
-       virtual int width() const { return workWidth_; }
-
+       virtual int width() const { return viewport()->width(); }
        /// return the height of the content pane
-       virtual int height() const { return workHeight_; }
+       virtual int height() const { return viewport()->height(); }
        ///
        virtual void setScrollbarParams(int height, int pos, int line_height);
-
        ///
-       virtual void dragEnterEvent(QDragEnterEvent * event);
-
-       ///
-       virtual void dropEvent(QDropEvent* event);
-
-       /// return the widget's painter
-       virtual Painter & getPainter() { return (Painter &) painter_; }
-
-       /// return the backing pixmap
-       QPaintDevice * paintDevice() { return &paint_device_; }
+       virtual void scheduleRedraw() { schedule_redraw_ = true; }
 
        /// update the passed area.
        void update(int x, int y, int w, int h);
 
-       /// return a screen copy of the defined area.
-       QPixmap copyScreen(int x, int y, int w, int h) const;
-
-       /// Draw a pixmap onto the backing pixmap.
-       /**
-       QPixmap is implicitely shared so no need to pass by reference.
-       */
-       void drawScreen(int x, int y, QPixmap pixmap);
-
        /// copies specified area of pixmap to screen
        virtual void expose(int x, int y, int exp_width, int exp_height);
 
@@ -145,35 +112,33 @@ public:
        /// hide the cursor
        virtual void removeCursor();
 
-protected:
-
+private:
+       ///
+       void focusInEvent(QFocusEvent *);
+       ///
+       void focusOutEvent(QFocusEvent *);
        /// repaint part of the widget
-       void paintEvent(QPaintEvent * e);
+       void paintEvent(QPaintEvent * ev);
        /// widget has been resized
-       void resizeEvent(QResizeEvent * e);
+       void resizeEvent(QResizeEvent * ev);
        /// mouse button press
-       void mousePressEvent(QMouseEvent * e);
+       void mousePressEvent(QMouseEvent * ev);
        /// mouse button release
-       void mouseReleaseEvent(QMouseEvent * e);
+       void mouseReleaseEvent(QMouseEvent * ev);
        /// mouse double click of button
-       void mouseDoubleClickEvent(QMouseEvent * e);
+       void mouseDoubleClickEvent(QMouseEvent * ev);
        /// mouse motion
-       void mouseMoveEvent(QMouseEvent * e);
+       void mouseMoveEvent(QMouseEvent * ev);
        /// wheel event
-       void wheelEvent(QWheelEvent * e);
+       void wheelEvent(QWheelEvent * ev);
        /// key press
-       void keyPressEvent(QKeyEvent * e);
-
-protected:
+       void keyPressEvent(QKeyEvent * ev);
        /// IM events
-       void inputMethodEvent(QInputMethodEvent * e);
-
-public slots:
-
-       /// Timeout event Slot for keyboard bufferring.
-       /// \todo This is not used currently in the code, remove?
-       void keyeventTimeout();
+       void inputMethodEvent(QInputMethodEvent * ev);
+       /// IM query
+       QVariant inputMethodQuery(Qt::InputMethodQuery query) const;
 
+public Q_SLOTS:
        /// Adjust the LyX buffer view with the position of the scrollbar.
        /**
        * The action argument is not used in the the code, it is there
@@ -181,60 +146,30 @@ public slots:
        * emits an 'int' action.
        */
        void adjustViewWithScrollBar(int action = 0);
+       /// timer to limit triple clicks
+       void doubleClickTimeout();
 
 private:
-       /// Buffer view width.
-       int workWidth_;
-
-       /// Buffer view height.
-       int workHeight_;
-
-       /// Our painter.
-       QLPainter painter_;
-
        /// The slot connected to SyntheticMouseEvent::timeout.
        void generateSyntheticMouseEvent();
 
        ///
        SyntheticMouseEvent synthetic_mouse_event_;
-
-       /// Our client side painting device.
-       //QImage paint_device_;
-       QPixmap paint_device_;
-
-       /// Our server side painting device.
-       //QPixmap screen_device_;
-
-       /// \todo remove
-       QTimer step_timer_;
-
-       /// \todo remove
-       std::queue<boost::shared_ptr<QKeyEvent> > keyeventQueue_;
-
+       ///
        double_click dc_event_;
 
        ///
-       int cursor_x_;
-       ///
-       int cursor_y_;
-       ///
-       int cursor_w_;
-       ///
-       int cursor_h_;
-       ///
-       QPixmap hcursor_;
-       ///
-       QPixmap vcursor_;
+       CursorWidget * cursor_;
        ///
-       bool show_hcursor_;
+       void updateScreen();
        ///
-       bool show_vcursor_;
+       QPixmap screen_;
        ///
-       bool lshape_cursor_;
+       bool need_resize_;
        ///
-       QColor cursor_color_;
+       bool schedule_redraw_;
        ///
-       CursorShape cursor_shape_;
+       int preedit_lines_;
 };
 
 } // namespace frontend