Commit Graph

41 Commits

Author SHA1 Message Date
Guillaume Munch
1cc14a31ca TocWidget: fix an erroneous collapse and optimise updates based on profiling
TocModels::reset() in GuiView::structureChanged() collapses the TocWidget, and
therefore requires an update right after, which was missing.

In fact, profiling TocWidget::updateView() shows that delaying the update is
good only for fast keypresses (essentially movement). It costs 5% of a
char-forward operation in a document with approx. 100 table of contents
items. The update optimisation has been rewritten to take this data into
account.
2016-05-31 00:14:13 +01:00
Guillaume Munch
27607b76f5 TocWidget: clean-up the timer logic
The timer logic introduced to solve bug #7138 was not entirely reliable; in
particular it resulted in spurious updates (noticeable by the treeview
collapsing just after one opens a branch, in particular).

This commit cleans up the timer logic. I followed the original design decision
of having an immediate update followed by a delayed update. Now the updates are
appropriately compressed and done after a delay of 2s (as can be noticed with
the treeview still collapsing, unfortunately, but after a more predictable
delay...).
2016-05-29 17:55:42 -04:00
Guillaume Munch
2f9d323396 TocWidget: Fix perf regression
4d1ad336 fixed #9754 but caused perf issues by cancelling the gains of having a
timer (introduced after #7138). This introduces in GuiToc::enableView() a
lightweight check of whether the widget should be updated. The logic is inspired
from GuiViewSource::enableView().
2016-05-29 17:55:42 -04:00
Guillaume Munch
0e740018ff Whitespace 2016-05-29 17:55:42 -04:00
Pavel Sanda
121fdba366 Attempt to workaround movement and editation slowness.
If it turns out to be too annoying for other we can disable it again.
Hopefully fix #7138.

http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg164385.html



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36951 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-19 22:27:21 +00:00
Richard Heck
805231ccbe This can just take a FuncCode.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33584 a592a061-630c-0410-9148-cb99ea01b6c8
2010-02-26 19:51:06 +00:00
Richard Heck
c127d83b66 A little cleanup while perusing TocWidget....
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33583 a592a061-630c-0410-9148-cb99ea01b6c8
2010-02-26 19:48:20 +00:00
Jürgen Spitzmüller
23a58c0214 * TocWidget.{cpp,h}:
* TocWidgetUi.ui:
	- add filter bar.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33457 a592a061-630c-0410-9148-cb99ea01b6c8
2010-02-13 08:30:16 +00:00
Vincent van Ravesteijn
86392456e8 Implement the getStatus mechanism for the context menu of the toc.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29200 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-11 11:43:13 +00:00
Vincent van Ravesteijn
49fb2980eb TOC context menu (part 3)
* TocWidget: Deconstify cur in doDispatch because I need a non-const Cursor when dispatching to Insets.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29162 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-09 18:24:28 +00:00
Vincent van Ravesteijn
a465fcb55e TOC context menu (part 2)
* TocWidget: add context menu to toc.

* Menus: specify origin of cmd.

* GuiView: if cmd coming from toc, dispatch to GuiToc.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29155 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-08 21:06:58 +00:00
Vincent van Ravesteijn
f7f24a2709 TOC context menu (part 1): Only scroll the document to the item when the user left-clicks on the item.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29154 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-08 17:39:14 +00:00
Pavel Sanda
2ca370b135 Add persistent view switch to the outliner.
http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg144343.html



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26684 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-02 15:00:43 +00:00
Abdelrazak Younes
4b8f0d359c Add a new 'Sort' box to the Navigator so that each list can be optionally sorted.
* TocModel: redesign so that sorted list are available.
* TocWidget/TocUi: handle the new Sort check box.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26602 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-28 17:14:29 +00:00
Abdelrazak Younes
81bc06db34 Navigator:
- some cleanup in TocWidget
- fix Read-only document navigation.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25292 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-17 15:44:14 +00:00
Abdelrazak Younes
6ad1b1cd09 General cleanup of the Outline/Navigator:
- Make use the Qt Model/View separation concept, TocWidget is now really just a view of the current toc model.
- the toc type combo now use a model defined in TocModels.
- the models are not deleted at each reset, they are now just cleared out.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25289 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-17 15:10:03 +00:00
André Pönitz
5791f8a894 cosmetics; compile fix
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25239 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-12 16:46:46 +00:00
Abdelrazak Younes
158863fd3b TocWidget: Small reorg in order to fix http://bugzilla.lyx.org/show_bug.cgi?id=4940
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25230 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-11 18:13:14 +00:00
Abdelrazak Younes
1d3fcde7f7 Code simplification.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25006 a592a061-630c-0410-9148-cb99ea01b6c8
2008-05-30 11:59:57 +00:00
Abdelrazak Younes
655f696612 set the focus on the work area after clicking on a navigator item.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25005 a592a061-630c-0410-9148-cb99ea01b6c8
2008-05-30 11:33:24 +00:00
Abdelrazak Younes
0d61832d22 simplify navigator. Get rid of the selectionModel() based navigation as this was too buggy. The tree now react to 'clicked' and activated signal. Changing a selection with the keyboard won't trigger a cursor jump, the user will have to hit 'Enter' for that. This is a ui change that probably needs to be documented (if it was already).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24812 a592a061-630c-0410-9148-cb99ea01b6c8
2008-05-17 17:03:53 +00:00
Abdelrazak Younes
ffa722e0b7 Cleanup Toc dialog and GuiView interaction. The toc models are now part of GuiView. The TocWidget is just a view of this model.
* GuiView::tocModel(): new method to access the toc models.
* TocModels: new class with code transferred from GuiToc.
* TocWidget: only needs a TocModels reference.

Thoughts:
- We should find a way to get rid of GuiToc.{c,h}
- tocModels() should perhaps be transferred to GuiWorkArea instead of GuiView in order to have Buffer dependent navigators.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24578 a592a061-630c-0410-9148-cb99ea01b6c8
2008-05-02 12:09:51 +00:00
Abdelrazak Younes
bf27334cfa Some dialog consistency work:
* Dialog::updateData(): try to reset the dialog even if there's no Buffer.
* GuiView::updateBufferDependent():
- renamed to updateDialogs()
- don't hide when there's no current work area, try to disable instead.
- now also take care of toolbars and other elements. 
* TocWidget: delay item selection to avoid unwanted node collapsing after setting a new model.

Expect crash and/or assertions for dialogs that are not ready for this non-hiding change. I will fix them iteratively.
There are still too many dialogs updates going on...


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24529 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-27 22:24:20 +00:00
Pavel Sanda
bddf480792 Comments from Andre'.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23463 a592a061-630c-0410-9148-cb99ea01b6c8
2008-03-04 21:45:54 +00:00
Pavel Sanda
6b2d20c8a6 ToC tree redrawing after resets.
http://bugzilla.lyx.org/show_bug.cgi?id=3740


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23436 a592a061-630c-0410-9148-cb99ea01b6c8
2008-03-04 12:39:03 +00:00
Abdelrazak Younes
8c73b3d2ce simplify GuiToc / TocWidget interaction. Much can still be simplified...
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22953 a592a061-630c-0410-9148-cb99ea01b6c8
2008-02-12 07:47:16 +00:00
André Pönitz
f5eb303b4b next one
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20801 a592a061-630c-0410-9148-cb99ea01b6c8
2007-10-06 20:54:31 +00:00
Abdelrazak Younes
9e3823945a Restore docked outline widget. Warning: still instable!
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20147 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-08 17:28:14 +00:00
André Pönitz
c9ea6e6eef the fun begins....
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20077 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-05 20:33:29 +00:00
André Pönitz
9a95d2a936 rename a few view functions from foo() to fooView()
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20024 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-03 20:28:26 +00:00
André Pönitz
a1cec91afa move our stuff off the Q* namespace
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19935 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-31 05:53:55 +00:00
André Pönitz
8cea333572 fix building with automake; break scons, cmake and qmake
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19427 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-11 15:48:15 +00:00
Jürgen Spitzmüller
9e4022e235 From Ozgur Ugras BARAN: Fix bug 3529
* src/frontends/qt4/TocWidget.{cpp,h}:
	-  new member disconnectSelectionModel()
	- (select): replace blockSignal() directives for tocTV selectionModel() 
	   with disconnect (the above new function) and reconnect relevant signal

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18338 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-15 11:26:24 +00:00
Abdelrazak Younes
5b5ee8cc32 Fix bugs 3528 and 3534 by Ozgur Ugras BARAN and myself:
* ControlToc::updateBackend(): emit Buffer::structureChanged()

* QToc:
  - updateToc(), updateType(), typeModel(): deleted.

* TocWidget
  - updateGui() manually with ControlToc::typenames()
  - on_typeCO_activated(): changed to on_typeCO_currentIndexChanged()



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18258 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-10 16:25:11 +00:00
Abdelrazak Younes
ab2324315b TOC Widget beautification by Stefan Schimanski:
* lib/images: 3 new icons 
* TocUi/TocWidget: Replace labeled button with icon buttons.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18202 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-04 17:37:05 +00:00
André Pönitz
a1607b414a renaming in frontends/qt4/ui: s/Q//g
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17936 a592a061-630c-0410-9148-cb99ea01b6c8
2007-04-24 08:56:28 +00:00
Jürgen Spitzmüller
8874db5f22 Fix loop when opening TOC widget in an empty document, basically by Richard Heck.
* src/frontends/qt4/TocWidget.[Ch]: 
	- rename enableButtons to enableControls and include slider enabling/disabling
	- only set slider if there is some content

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17835 a592a061-630c-0410-9148-cb99ea01b6c8
2007-04-17 10:27:53 +00:00
Abdelrazak Younes
61dde5d797 Cleanup of the Toc model and controller: The objective is to let the View (TocWidget) decide which kind of list it want to show. The type given by InsetCommandParam() (as read by the controller (ControlToc) then just becomes a hint to the View. Most of the commit is about getting rid of the controller maintained list of types.
* TocBackend
  - addType(), types_, types(): deleted.

* ControlToc
  - tocs(): new
  - selectedType(): access to selected_type_
  - initialiseParams(): transfer code from QToc::update() and look for selected type.
  - getTypes(), getContents(): deleted

* QToc: do not maintain current type. Get the info from the View.
  - setTocModel(): deleted

* TocWidget: always pass the currently selected type to the model/controller.
  - setTocModel(): new slot.
  - updateGui(): transfer code to setTocModel().


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17455 a592a061-630c-0410-9148-cb99ea01b6c8
2007-03-16 14:14:55 +00:00
Abdelrazak Younes
e69f006911 We don't need a QMainWindow parent.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17420 a592a061-630c-0410-9148-cb99ea01b6c8
2007-03-12 15:45:08 +00:00
Jürgen Spitzmüller
d588c13f3f Make r17416 compile.
Abdel, are Windows compiler really that dumb?

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17418 a592a061-630c-0410-9148-cb99ea01b6c8
2007-03-12 15:11:18 +00:00
Abdelrazak Younes
cb81965b1e * ControlToc:
- initialiseParams(): overload ControlCommand::initialiseParams() so that we can update the model at this point (QToc is the controller _and_ the model).
  - update(): new 
  - updateBackend(): new protected method to update the TocBackend (called for the "Update" button).

* QToc:
  - is now a QObject
  - modelReset: new Qt signal to indicate a model reset to associated dialog(s).
  - QToc(): avoid the duplicate update() call that will be done in the show command anyway.

* Dialogs.C
  - use new TocWidget in a DockView.

* TocWidget.[Ch]: renamed from QTocDialog. This striped down widget is only a widget that connects to the 'QToc' model/controller.

* DockView.h: new template class that encapsulates a given Widget inside a DockWidget and presents a Dialog::View interface.

* QTocUi.ui:
  - now is a simple Widget.
  - rearrange the buttons a bit
  - get rid of the unneeded close button.
  - modify the shortcut to "Promote" to 'r' because of a clash with "Alt-p" number (we really need real, always valid, shortcuts for all outline action!)




git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17416 a592a061-630c-0410-9148-cb99ea01b6c8
2007-03-12 14:23:44 +00:00