Commit Graph

65 Commits

Author SHA1 Message Date
Guillaume Munch
3391fed36a Make the generation of children's tocs more robust
Let the children directly access the TocBuilders, instead of concatenating
after the fact.
2017-01-14 23:13:14 +01:00
Guillaume Munch
461fda9ca9 Collect the outliner names for the children's tocs
Fixes missing outliner names in various situations. Now if the warning "Missing
outliner name" appears in the console, this correctly hints at an actual issue
with the layout.
2017-01-14 23:13:14 +01:00
Guillaume Munch
cde3f6b84c TocWidget: Remove possibly dangling BufferView pointer 2016-12-31 15:16:15 +01:00
Guillaume Munch
d1dddde6d8 Remove tooltips from the data of Toc Items
After the previous commit, tooltip in the outliner are formatted automatically,
along with the other tooltips. A previous commit had already removed the
expensive call to tooltipText() that, although it gave a better rendering, was
very expensive (cf64064). This patch finishes to remove the custom tooltip
from the model data in the outliner.

(It would be nice to reintroduce a tooltip based on tooltipText(), but there
seemed to be a consensus that in that case one would prefer a less expensive
approach that computes the tooltip on the fly.)
2016-07-03 17:28:46 +02:00
Guillaume Munch
b032e2dfaf Replace support/shared_ptr.h and boost::shared_ptr with std::shared_ptr
shared_ptrs now only require the <memory> header.
2016-06-09 15:21:39 +01:00
Guillaume Munch
6a662cbb27 TocModel: clean-up 2016-05-31 00:14:13 +01:00
Guillaume Munch
e3540f33e1 Simplify class structure in TocBackend
Deriving from std::vector to provide helper functions appears a touch
excessive. Use typedef instead and move helper functions to the base class. New
header Toc.h provided to replace forward-declarations.

Remove TocIterator which is useless.
2016-05-29 17:55:42 -04:00
Guillaume Munch
39343d65af Fix compilation with MSVC in c++98 mode 2015-10-01 21:51:08 +01:00
Guillaume Munch
d5a5fbb8ee Enhancements and bugfixes to the TOCs
* New TOC "math-macro". This means that math macros can now be accessed in the
  outline pane in their order of appearance or in alphabetical order, and can be
  searched using the filter.

* Lists of floats now show subfloats deeper in the navigation menu

* The arbitrary 30 element cut-off after which nothing is shown except "Open
  Navigator..." is removed. Menus now have no limit in size, so Qt may display
  them scrollable. In exchange, we always show "Open outliner..." at the
  beginning. I tested for performance issues with a rather complex document and
  it is fine; but this does not exclude corner cases with lots of TOC entries of
  a certain kind. If necessary, populating the navigation sub-menu should be
  delayed like the main menu.

* Elements that do not contribute to the output (e.g. in a note, a disabled
  branch) are now preceded with a symbol indicating this status. (The machinery
  was already there; I wonder why it was not implemented already.) I have chosen
  U+274E NEGATIVE SQUARED CROSS MARK.

* Fix the contextual menus in the outliner (bug introduced at 94e992c5).

* Toc item now move to the caption when present, but first center on the float,
  to prevent the situation where the caption is at the top of the screen and the
  contents of the float is off-screen above the caption.
  (Internally, the action of the toc items can now be customised)

* Fix the LyXHTML output. Disabled captions no longer appear in the list of
  figures.
2015-10-01 21:44:22 +01:00
Georg Baum
b6aed54c45 Fix cppcheck variable scope warnings
These were all flagged by "(style) The scope of the variable 'x' can be reduced."
Narowing the scope improves readability, and if it is in a loop then the
compiler will be clever enough to produce efficient code, we do not need
manual optimization for POD types.
2015-09-20 10:42:35 +02:00
Guillaume Munch
9b7ccbfc80 New class InsetCaptionable
This generalises the new use of TocBuilder (97e8101) to listings and wraps and
removes some duplicate code.

Make sure that we will never write an empty float type again in the future
(#9760)
2015-09-15 15:25:33 +01:00
Guillaume Munch
94e992c5ed Better construction of the TOC for floats and captions
We introduce TocBuilder for building TOCs that take into account both float
insets and their captions.

* Floats without caption are shown with their content.

* Floats with a caption are shown with their caption, but clicking the entry now
  correctly moves to the float and not to the caption.

* Subsequent captions produce additional entries in the TOC.

* Figures and subfigures are correctly ordered in the outliner.

* New TOC "senseless" for captions appearing alone (a bit like broken references
are still displayed in the menu and outliner).

* Disable LFUN_CAPTION_INSERT if there is already a caption in a listing

Known issues:

* Inconsistent output for includes located inside floats

* We should record the end of the float in addition of the beginning for a more
  accurate cursor -> outliner entry conversion
2015-09-15 15:25:33 +01:00
Georg Baum
699a6db9fa Add some missing member variable initializations
These were all found by cppcheck. Even in constructors that are there "only
because of std containers" the class should be initialized correctly. You can
never know whether such an object does not get used, and then a nice crash
caused by dereferencing a NULL-pointer is better than undefined behaviour.
2015-09-13 19:47:21 +02:00
Pavel Sanda
de9d8cc0ba Header cleanup cont. 2013-05-22 19:58:58 -07:00
Richard Heck
bb36296275 Remove unused code. 2013-03-08 16:22:01 -05:00
Stephan Witt
141fbb6f8c Prepare LyX code to compile and link with Qt5:
* some functionality is in new modules now
  new header locations and library names: QtConcurrent and QtWidgets
* method setResizeMode is renamed to setSectionResizeMode
* deprecated QAbstractItemModel::reset() is dropped now
* platform specific code like QApplication::syncX() is not common anymore
* QString::fromAscii() is dropped now
* some QDesktopServices methods has been moved to QStandardPaths
2013-02-03 19:26:21 +01:00
Pavel Sanda
0a9735c5f7 LyX 2.1 will support only Qt>=4.5.
(http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg175737.html)

Now start with simple cases.
2012-11-04 01:22:32 +01:00
Richard Heck
6e6f036f03 Fix bug #7709. Seems we need to reset the source model here.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40245 a592a061-630c-0410-9148-cb99ea01b6c8
2011-11-23 16:52:46 +00:00
Richard Heck
6be38da1ff This commented-out line has been there since r13692! I think we can
get rid of it.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40217 a592a061-630c-0410-9148-cb99ea01b6c8
2011-11-18 23:32:58 +00:00
Vincent van Ravesteijn
28b167bfff Make sure the Table of Contents is always on top in the model combobox of the TocWidget.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34290 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-26 01:36:24 +00:00
Vincent van Ravesteijn
c6c0559be0 Fix bug #6672 (part 2): Add tooltips to the outliner.
At some point we should implement that the tooltips are only shown when they are not completely shown in the outliner. However, this requires extending the QTreeView class. 

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34287 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-26 00:43:08 +00:00
Richard Heck
b4791d97b3 Fix another potential manifestation of bug #6522.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33873 a592a061-630c-0410-9148-cb99ea01b6c8
2010-03-26 16:36:29 +00:00
Abdelrazak Younes
2a3f27a80c Code simplification.
TocTypeModel is not needed outside TocModel.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33707 a592a061-630c-0410-9148-cb99ea01b6c8
2010-03-10 21:00:34 +00:00
Richard Heck
0bddd759d7 Another try at #6522. This works here, for the most part, with no ill
effects that I can see. That said, I believe there is still a crash you
could get. I'll explain in a moment.

Since we may run into this kind of thing again, let me explain why this
is necessary. The problem was that resetting the model was causing a
signal to be emitted that the current index had changed, which was
triggering an update of the Buffer, eventually. I'm not sure why this
did not happen in Qt 4.5, but in Qt 4.6, you have to call
beginResetModel() before doing anything, so that the combo box will
remember its previous setting. Then you can change the data; then you
can call endResetModel(). This will attempt to restore the previous
setting. Only if it cannot do so will currentIndexChanged() be emitted.

You can see, therefore, that if whatever the user did caused the current
setting to become invalid---e.g., she deleted the only footnote---then
the signal will be emitted and LyX will still crash. Still, that is a
fair bit better than presently.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33702 a592a061-630c-0410-9148-cb99ea01b6c8
2010-03-10 18:41:28 +00:00
Richard Heck
c653974e9d Revert r33630 and do something more sensible.
I don't think this fixes the underlying problem, but I think that
problem is very extensive. Fixing it would involve a re-thinking of
where and how we call updateBuffer()---the old updateLabels().

This fix also reveals another problem with the TOC, again due to the
early call of on_typeCO_currentIndexChanged(). But that problem is a
slightly different one, I think.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33680 a592a061-630c-0410-9148-cb99ea01b6c8
2010-03-08 19:52:48 +00:00
Richard Heck
1fcc1c0f18 Fix bug 6522 and its relatives in trunk. I am not absolutely sure this
is right, though. Someone please check.

The problem, in branch, was that (in Qt 4.6.x, anyway) the call to
reset() eventually triggers the on_typeCO_currentIndexChanged() method,
which eventually leads to GuiView::setFocus(), which leads to
GuiWorkArea::focusInEvent(), which tries to start the cursor, whose
position hasn't been updated yet, from what I can see.

The problem in trunk is similar. The crash happens, I think, because,
while we are in the middle of resetting the model, the same method is
triggered, which leads us to try to access the model while we are in the
middle of resetting it.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33630 a592a061-630c-0410-9148-cb99ea01b6c8
2010-03-05 20:47:50 +00:00
Abdelrazak Younes
377cdd5f6c Transfer LyXfunc code to GuiApplication::dispatch() and getStatus(). Now
a lot of simplification is possible. Except some instability period...


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33389 a592a061-630c-0410-9148-cb99ea01b6c8
2010-02-09 16:11:13 +00:00
Jürgen Spitzmüller
3ec9ac5ff5 * TocWidget.cpp: disable sort option for TOC (bug 5983).
* TocModel.cpp: whitespace

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30760 a592a061-630c-0410-9148-cb99ea01b6c8
2009-07-24 13:58:02 +00:00
Uwe Stöhr
8f3acbb484 remove unused includes of convert.h
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29772 a592a061-630c-0410-9148-cb99ea01b6c8
2009-05-21 21:02:14 +00:00
Vincent van Ravesteijn
695870771f Add "Copy label as reference" to context menu of the TOC.
(Note: it is not perfect yet for references in the same model as the labels).

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29156 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-08 21:40:42 +00:00
André Pönitz
1fc477efac thrid attempt at changing the naming pattern of the intermediated 'mocced' files
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27420 a592a061-630c-0410-9148-cb99ea01b6c8
2008-11-14 14:28:50 +00:00
Abdelrazak Younes
7bd33462a0 Avoid a complete Toc reset in case when only a toc item update is needed.
* Buffer: new updateTocItem() signal (with Delegates and GuiView associates).
* TocBackend: take care of the signal emission instead of the Cursor::checkBufferStructure()
* TocModel: new updateTocItem() method.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26636 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-30 09:50:54 +00:00
Abdelrazak Younes
6bd9b43ce5 cosmetics and doxygen.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26634 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-30 07:38:34 +00:00
André Pönitz
0985bab38e cosmetics
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26629 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-29 21:53:24 +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
Richard Heck
bb11f79ca0 I need some sleep.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26358 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-11 21:35:26 +00:00
Richard Heck
7380e914d4 Fix bug: TOC depth slider wasn't reset when switching to empty documents.
This doubly fixes the previous bug, too.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26357 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-11 21:15:45 +00:00
Richard Heck
e2b8ea875d Fix bug reported by Helge. Vincent found the problem, really, which was a
pair of uninitialized variables. The reason the crash doesn't happen when 
you open the User Guide is that they get set in TocModel::populate() before 
the slider's maximum value is fixed. It was setting that value to some huge
number that caused the problem.

I've added an assertion to make sure we don't run into this kind of problem
again. Probably not necessary, but it can't hurt.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26356 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-11 21:02:18 +00:00
Abdelrazak Younes
bd569ada80 Local aware sorting of the toc type.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25304 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-18 11:35:24 +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
Abdelrazak Younes
d353a6f899 Mac compile fix.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25241 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-12 17:34:01 +00:00
Abdelrazak Younes
825bac4b43 Fix crash on new document.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25237 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-12 15:43:31 +00:00
Abdelrazak Younes
edd117f27a remove unneeded TocModel::clear() method.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25236 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-12 15:34:12 +00:00
Abdelrazak Younes
6876ffa65b Simplify TocModel by using UserRole data.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25235 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-12 15:31:10 +00:00
Abdelrazak Younes
2003a50e14 Fix http://bugzilla.lyx.org/show_bug.cgi?id=4904
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25070 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-02 13:59:00 +00:00
Abdelrazak Younes
fb212b9112 Factorize out some code between TocModel.cpp and Menus.cpp.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24801 a592a061-630c-0410-9148-cb99ea01b6c8
2008-05-16 13:49:49 +00:00
Abdelrazak Younes
fb31797d13 reverse Toc searching: use DocIterator instead of ParconsIterator.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24800 a592a061-630c-0410-9148-cb99ea01b6c8
2008-05-16 13:11:43 +00:00
Abdelrazak Younes
2dfc84a22c More accurate toc navigation (LFUN_PARAGRAPH_GOTO).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24798 a592a061-630c-0410-9148-cb99ea01b6c8
2008-05-16 12:48:13 +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
Jean-Marc Lasgouttes
9b4a26a252 rename assert.h to lassert.h
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24559 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-30 08:26:40 +00:00