Basically, I replaced all methods in the font_metrics namespace by a proper virtual interface FontMetrics. The FontLoader is _the_ container for FontMetrics.
This patch should also bring some optimizations in a number of place in the code. This is because we do not need any more to search for the LyXFont at each font_metrics call. In effect, the speed advantage is not as sensible and this is a bit deceiving considering that this was my primary motivation behind the patch. But I like the patch anyway as it cleans up the relation and interfacing between fonts, metrics and frontends.
* frontends/FontMetrics.h: new virtual interface. Renamed from font_metrics.h
* qt4/GuiFontMetrics: corresponding qt4 implememtation. Renamed from qfont_metrics.C. The smallCaps particular case treatment has been transfered here as well as the width cache for MacOSX and Windows.
* qt4/QLPainter.C: the smallCapsText has been reworked to return the width of the drawn text.C
all other files: replace font_metric helper function call with corresponding FontMetrics method calls.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15265 a592a061-630c-0410-9148-cb99ea01b6c8
* rename output_changes to outputChanges
* rename tracking_changes to trackChanges
* add FIXMEs for later revision
* remove trackChanges(); the CT data structure will always be set up
* decouple LFUNs changes-output/change-accept/change-reject/
all-changes-accept/all-changes-reject from LFUN changes-track
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15261 a592a061-630c-0410-9148-cb99ea01b6c8
* BufferView
- layoutChanged: new boost signal.
- LyXView owner(), owner_: deleted
* text3.C
- emit BufferView::layoutChanged instead of calling LyXView::setLayout directly
- LFUN_MOUSE_RELEASE: delete LyXView updateMenubar() and updateToolbars() direct calls.
The update is of both bars is done in WorkArea::dispatch().
* WorkArea.C
- dispatch(): add LyXView updateMenubar() call.
* LyXView
- connects to BufferView::layoutChanged directly to Toolbars::setLayout()
- setLayout(): deleted.
* qt4/GuiImplementation: modify BufferView construction (without LyXView).
All other files: cleanup header declaration of LyXView.h
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15153 a592a061-630c-0410-9148-cb99ea01b6c8
The associated WorkArea is then responsible to connect these signals to its LyXView parent.
* BufferView:
- showDialog, showDialogWithData, showInsetDialog: new boost signals
* LyXView:
- connectBufferView(), disconnectBufferView(): new method in charge of the connection/disconnection of the above signal to associate private methods (showDialog(), etc).
* WorkArea
- setBufferView(): will connect/disconnect the BufferView to its LyXView parent.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15068 a592a061-630c-0410-9148-cb99ea01b6c8
* LyXView: save two setLayout() calls that are done in updateLayoutChoice() anyway.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14833 a592a061-630c-0410-9148-cb99ea01b6c8
in the text.
* src/insets/insetbase.h (notifyCursorLeaves): return a bool
indicating whether cursor is invalidated.
* src/mathed/math_nestinset.C (notifyCursorLeaves):
* src/mathed/math_hullinset.C (notifyCursorLeaves): adapt to
prototype change.
* src/mathed/math_scriptinset.[Ch] (notifyCursorLeaves): return
true when an inset has been deleted.
* src/BufferView.C (mouseSetCursor): do not call dEPM when cursor
is invalidated by notifyCursorLeaves.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14796 a592a061-630c-0410-9148-cb99ea01b6c8
Log:
* BufferView/pimpl:
- scrollDocView(): call to BufferView::update() deleted.
- scrollDocView(): second part is now in setCursorFromScrollbar()
- setCursorFromScrollbar(): new method.
* WorkArea:
- setBufferView(): show the cursor immediately
- redraw(): call to updateScrollbar()
- updateScrollbar(): new method
- scrollBufferView(): fix it and show the cursor immediately.
* qt4/GuiWorkArea
- setScrollbarParams(): now disable the Qt scrollbar tracking.
- paintEvent(): scrollbar related code deleted
* qt3/QWorkArea
- setScrollbarParams(): now disable the Qt scrollbar tracking.
* qt3/QContentPane
- paintEvent(): scrollbar related code deleted
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14704 a592a061-630c-0410-9148-cb99ea01b6c8
With this change, the only difference between BufferView.h and BufferView_pimpl.h is "cursor.h" so I think it is time to merge the two classes at last.
BufferView:
* showErrorList(), getErrorList(): transfered to LyXView.
BufferView::pimpl
* addError(), showReadonly(), connectBuffer(), disconnectBuffer(): transfered to LyXView.
CutAndPaste.C: adapted to API changes
frontends/controllers/ControlErrorList.C: ditto
lyxfunc.C: ditto
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14458 a592a061-630c-0410-9148-cb99ea01b6c8
The performance may suffer a bit because we do the second drawing step in all cases. This could be possibly optimized out by checking the return value of the BufferView::update() method in "lyxfunc.C:1610". But it is maybe better to keep those two parts of the frontend ignorant of each other: the event handling and the drawing.
BufferView:
* needRedra(), need_redraw_: deleted.
* updateMetrics(): now public.
* update(): only do the first drawing step. Returns true if a full updateMetrics is needed before drawing on screen.
WorkArea:
* redraw(): no check on BufferView::needRedraw(), call updateMetrics() unconditionally.
* processKeySim(): uneeded "redraw()" call commented out. When/if the call to LyXView::redrawWorkArea() in "lyxfunc.C:1610" is not needed anymore, this line should be uncommented out.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14456 a592a061-630c-0410-9148-cb99ea01b6c8
* frontends/LyXView:
- redrawWorkArea(): new temporary method called from within
BufferView::pimpl::update() that calls WorkArea::redraw()
in order to do the actual screen redrawing.
* frontends/WorkArea:
- the redraw() method now check if the the attached bufferView
needs a screen redraw().
* BufferView:
- needsRedraw(): new method for WorkArea::redraw()
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14381 a592a061-630c-0410-9148-cb99ea01b6c8
* BufferView, BufferView::pimpl:
- metrics_info_: private variable holding ViewMetricsInfo
- viewMetricsInfo(): accessor function
- updateMetrics(): renamed from metrics(), sets metrics_info_
- update(): change to use updateMetrics()
* frontends/WorkArea:
- redraw(): get the ViewMetricsInfo through accessor to BufferView.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14331 a592a061-630c-0410-9148-cb99ea01b6c8
* BufferView,BufferView::Pimple:
- workArea_ removed
* frontends/LyXView:
- now contains a pointer reference to the current
WorkArea instead of the BufferView.
- workArea(): temporary access method
* frontends/WorkArea:
- bufferView(): new access methods.
* GuiImplementation: updated due to above changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14329 a592a061-630c-0410-9148-cb99ea01b6c8
* BufferView and Bufferview::pimpl: repaintAll() methods deleted.
* rowpainter.C:
- refreshInside : new variable in the anonymous namespace.
- use of refreshInside instead of the repaintAll() methods
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14324 a592a061-630c-0410-9148-cb99ea01b6c8
is changed
* src/cursor.C: remove unused 'using std::swap'
* src/BufferView.C: ditto
* src/CutAndPaste.[Ch]
(switchBetweenClasses): replace ParagraphList argument with InsetText
argument. This avoids an unnecessary swap in lyxfunc.C.
* src/CutAndPaste.C
(pasteSelectionHelper): Adjust to the changes above
(pasteSelectionHelper): Use ParagraphList::swap instead of std::swap.
This fixes the crash.
* src/lyxfunc.C
(LyXFunc::dispatch): Adjust to switchBetweenClasses changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13895 a592a061-630c-0410-9148-cb99ea01b6c8
session support that
* handle recent opened files (previously lastfile)
* save/load bookmarks when quit lyx
* save/load buffer cursor location whan a file is closed
* save/load windows position and size when a file is closed
* add rc entries load_session, use_lastfilepos,
screen_geometry_height, screen_geometry_width,
screen_geometry_xysaved.
* trigger LFUN_QUIT when Alt-F4 or close-button is used to close lyx.
* remove lastfile.h lastfile.C (merged in session.h, session.C)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13561 a592a061-630c-0410-9148-cb99ea01b6c8