]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt/GuiWorkArea_Private.h
Make string-widget combination more l7n friendly
[lyx.git] / src / frontends / qt / GuiWorkArea_Private.h
index 6342eaba4ac153fc7b1bf6201453ba39f5bd140b..6acd9886ddabf51f25dd1cef5420000e4db775eb 100644 (file)
@@ -22,8 +22,6 @@
 
 namespace lyx {
 
-class Buffer;
-
 namespace frontend {
 
 class GuiCompleter;
@@ -70,7 +68,6 @@ public:
 /**
  * Implementation of the work area (buffer view GUI)
 */
-class CaretWidget;
 
 struct GuiWorkArea::Private
 {
@@ -85,12 +82,18 @@ struct GuiWorkArea::Private
 
        ///
        void dispatch(FuncRequest const & cmd0);
+       /// Make caret visible and signal that its geometry needs to be updated
+       void resetCaret();
        /// recompute the shape and position of the caret
        void updateCaretGeometry();
        /// show the caret if it is not visible
        void showCaret();
        /// hide the caret if it is visible
        void hideCaret();
+       /* Draw the caret. Parameter \c horiz_offset is not 0 when there
+        * has been horizontal scrolling in current row
+        */
+       void drawCaret(QPainter & painter, int horiz_offset) const;
        /// Set the range and value of the scrollbar and connect to its valueChanged
        /// signal.
        void updateScrollbar();
@@ -107,21 +110,21 @@ struct GuiWorkArea::Private
        void updateScreen(QRectF const & rc);
 
        ///
-       GuiWorkArea * p;
+       GuiWorkArea * p = nullptr;
        ///
-       BufferView * buffer_view_;
+       BufferView * buffer_view_ = nullptr;
        ///
-       GuiView * lyx_view_;
+       GuiView * lyx_view_ = nullptr;
 
        /// Do we need an intermediate image when painting (for now macOS and Wayland)
-       bool use_backingstore_;
+       bool use_backingstore_ = false;
        ///
        QImage screen_;
 
-       ///
-       CaretWidget * caret_;
        /// is the caret currently displayed
-       bool caret_visible_;
+       bool caret_visible_ = false;
+       ///
+       bool needs_caret_geometry_update_ = true;
        ///
        QTimer caret_timeout_;
 
@@ -131,25 +134,25 @@ struct GuiWorkArea::Private
        DoubleClick dc_event_;
 
        ///
-       bool need_resize_;
+       bool need_resize_ = false;
 
        /// the current preedit text of the input method
        docstring preedit_string_;
        /// Number of lines used by preedit text
-       int preedit_lines_;
+       int preedit_lines_ = 1;
        /// the attributes of the preedit text
        QList<QInputMethodEvent::Attribute> preedit_attr_;
 
        /// Ratio between physical pixels and device-independent pixels
        /// We save the last used value to detect changes of the
        /// current pixel_ratio of the viewport.
-       double last_pixel_ratio_;
+       double last_pixel_ratio_ = 1.0;
        ///
        GuiCompleter * completer_;
 
        /// Special mode in which Esc and Enter (with or without Shift)
        /// are ignored
-       bool dialog_mode_;
+       bool dialog_mode_ = false;
        /// store the name of the context menu when the mouse is
        /// pressed. This is used to get the correct context menu
        /// when the menu is actually shown (after releasing on Windows)
@@ -160,15 +163,15 @@ struct GuiWorkArea::Private
        ///
        support::FileName file_name_;
        ///
-       bool shell_escape_;
+       bool shell_escape_ = false;
        ///
-       bool read_only_;
+       bool read_only_ = false;
        ///
        docstring vc_status_;
        ///
-       bool clean_;
+       bool clean_ = true;
        ///
-       bool externally_modified_;
+       bool externally_modified_ = false;
 
 }; // GuiWorkArea