X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FTocWidget.h;h=3f67606302705f2cb049477e46a2c7c9a9745782;hb=b7f6b979d0f889f08e735f35378bb20ba3788b4b;hp=d2ca8b83758cc19636b0b048ad6f7b336ab412b2;hpb=86392456e8c847c7a1507e35cd7bdee799e3564c;p=lyx.git diff --git a/src/frontends/qt4/TocWidget.h b/src/frontends/qt4/TocWidget.h index d2ca8b8375..3f67606302 100644 --- a/src/frontends/qt4/TocWidget.h +++ b/src/frontends/qt4/TocWidget.h @@ -16,7 +16,9 @@ #include "ui_TocUi.h" #include "Cursor.h" +#include "FuncCode.h" +#include #include class QModelIndex; @@ -43,8 +45,10 @@ public: 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: /// @@ -63,16 +67,33 @@ protected Q_SLOTS: void on_moveDownTB_clicked(); void on_moveInTB_clicked(); void on_moveOutTB_clicked(); + void filterContents(); 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; @@ -85,6 +106,8 @@ private: bool persistent_; /// GuiView & gui_view_; + // Timer for scheduling expensive update operations + QTimer * timer_; }; } // namespace frontend