]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/TocWidget.h
Use <cstdint> instead of <boost/cstdint.hpp>
[lyx.git] / src / frontends / qt4 / TocWidget.h
index 7c7ca3f0e33b2265afe7306313aa7be64c7351b7..9cb21bfcbfc61f8b1ebdd9221de44f1aeed38efe 100644 (file)
@@ -16,7 +16,9 @@
 #include "ui_TocUi.h"
 
 #include "Cursor.h"
+#include "FuncCode.h"
 
+#include <QTimer>
 #include <QWidget>
 
 class QModelIndex;
@@ -38,13 +40,18 @@ public:
        void init(QString const & str);
        ///
        void doDispatch(Cursor & cur, FuncRequest const & fr);
+       ///send request to lyx::dispatch with proper guiview handle
+       ///(if ToC is detached current_view can be different window)
+       void sendDispatch(FuncRequest fr);
        ///
        bool getStatus(Cursor & cur, FuncRequest const & fr, FuncStatus & status)
                const;
 
 public Q_SLOTS:
-       /// Update the display of the dialog whilst it is still visible.
+       /// Schedule an update of the dialog, delaying expensive operations
        void updateView();
+       /// Update completely without delay
+       void updateViewNow();
 
 protected Q_SLOTS:
        ///
@@ -67,13 +74,29 @@ protected Q_SLOTS:
 
        void showContextMenu(const QPoint & pos);
 
+private Q_SLOTS:
+       /// Perform the expensive update operations
+       void finishUpdateView();
+
 private:
        ///
        void enableControls(bool enable = true);
        ///
+       bool canOutline()
+               { return current_type_ == "tableofcontents"; }
+       /// It is not possible to have synchronous navigation in a correct
+       /// and efficient way with the label and change type because Toc::item()
+       /// does a linear search. Even when fixed, it might even not be desirable
+       /// to do so if we want to support drag&drop of labels and references.
+       bool canNavigate()
+               { return current_type_ != "label" && current_type_ != "change"; }
+       ///
+       bool isSortable()
+               { return current_type_ != "tableofcontents"; }
+       ///
        void setTreeDepth(int depth);
        ///
-       void outline(int func_code);
+       void outline(FuncCode func_code);
        /// finds the inset that is connected to the current item,
        /// if any, otherwise return null
        Inset * itemInset() const;
@@ -86,6 +109,8 @@ private:
        bool persistent_;
        ///
        GuiView & gui_view_;
+       // Timer for scheduling expensive update operations
+       QTimer * timer_;
 };
 
 } // namespace frontend