Commit Graph

67 Commits

Author SHA1 Message Date
Enrico Forestieri
f496ec373b Solve the "soft-hyphen" (0x00ad) symbol problem.
After the str-metrics merge, the kludge for displaying symbols whose
code point corresponds to a soft-hyphen was not working anymore.
The solution is replicating the offending glyphs with index 0x00ad
at a different index. They were replicated at 0x00ac, whose glyph
was missing in all affected fonts.

However, this would not work by alone because, if a system font with
same family name exists, it would be picked up instead of the right one
(at least on non-Windows platforms). For this reason, the style of the
fonts has been changed from "Regular" to "Lyx", so that we can discriminate
the right font. However, this requires using at least Qt 4.8. If an
older Qt is used *and* a system font with same family name is already
available, the affected glyphs will all turn out on screen as the
"logical not" symbol.

I have also set the executable flag on the font files, because on Windows
they are loaded only in this case.

This solves #9229.
2015-01-21 14:12:42 +01:00
Jean-Marc Lasgouttes
3830ce46db Squash warnings reported by gcc 4.9
Most of these are just about conversion from double to int.

Of note also the replacement of an horrible reinterpret_cast by a proper solution.
2015-01-14 11:52:14 +01:00
Enrico Forestieri
d4428ceb81 Adjust preprocessor guards for Qt5/X11.
This fixes the -geometry command line option and restores the
"Use icons from system's theme" checkbox in the preferences.

There is still code addressing Qt4 and xlib that has to be
audited. This code cannot be compiled with Qt5 because the
default backend is now xcb and not xlib. I have marked such
code with a "FIXME QT5" comment.
2015-01-11 19:44:35 +01:00
Vincent van Ravesteijn
c313b1c8eb str_metrics: Prevent clipping of chars with negative bearing
This happens when part of the word is selected.

To reproduce:
1. Start a new document
2. Type "af"
3. Select 'a'
4. Observe that the right part of the 'f' is clipped away.

This patch uses QRegion to set a clip region that is everything except
the part that is drawn in another color.

Fixes: #9223.
2015-01-06 22:02:07 +01:00
Enrico Forestieri
498ab8ff23 Tweak the shape of the parbreak separator.
The shape of the parbreak separator is slightly changed in order to
better distinguish it from the forced newline. This allows using the
same color of the plain version without risk of confusion.
2014-10-25 23:38:52 +02:00
Stephan Witt
54a742382c #9130 Text in main work area isn't rendered with high resolution
Make QT_VERSION check for Qt5 matching Qt5.0.0 too.
2014-10-18 15:48:18 +02:00
Stephan Witt
9135dcee07 #9130 Text in main work area isn't rendered with high resolution
Introduce the concept of pixel ratio: the ratio of physical and device independent pixels.
This is useful for rendering of content on Retina-displays of Mac hardware with high resolution.
Qt has real support for this starting with Qt5 - therefore it has to be compiled conditionally.
This change uses some work of Marcelo Galvão Póvoa, thank you.
2014-10-18 11:53:16 +02:00
Stephan Witt
3aa428fdea #9245 replace Q_WS_MACX with Q_OS_MAC - the Q_OS_MAC macro is usable with Qt4 and Qt5. 2014-08-25 20:08:59 +02:00
Jean-Marc
f4fc035cf6 Better algorithm for forcing bidi drawing
The use of RLO/LRO overrides to force text orientation was really hackish and the way it was done caused dropped letters in Mac OS X (for some unknown reasons).

This new approach is much cleaner, except that it relies on features not advertised in documentation
but present at least from Qt 4.5 to Qt 5.3:
* TextFlag enum values TextForceLeftToRight and TextForceRightToLeft, which are strong versions
  of QPainter::setLayoutDirection; they are passed as a parameter of QPainter::drawText.

* QTextLayout::setFlags method, which is required to pass the above flags to QTextLayout.

The unicode override method is still used to draw strings Mac OS X because, for some reason, the direction was not really enforced in this case.
2014-07-25 19:56:51 +02:00
Jean-Marc Lasgouttes
bbe6e9f593 Revert optimization where several words are drawn at the same time
This can only be done where splitting of string is identical in row breaking and display. It will be possible to reintroduce this when row painting uses the tokenized row information.
2014-07-20 18:54:31 +02:00
Jean-Marc Lasgouttes
ec42b2e4c9 Do not split words at selection boundary
The display of partially-selected word is now done in a new Painter::text method
which displays the string twice with different clip settings. This allows to
catter for the case where Color_selectiontext is not black.

Morover, the code that uses unicode override characters to force the
direction of a string is moved to lstrings.h.

Fixes: #9116
2014-07-08 21:30:06 +02:00
Jean-Marc Lasgouttes
4176795e72 Remove support for LyXRC::force_paint_single_char
This workaround is not necessary anymore, and it complicates the code.

The variable itself will be removed after the landing of the branch on
master.
2014-07-08 21:30:05 +02:00
Jean-Marc Lasgouttes
015333d987 Rely on Qt to handle small caps text
This has the advantage of simplifying our code and to produce the
correct output: the small capitals should have the exact same width as
the lower case letters.

The slanted fonts are also translated to oblique on Qt side, but this
does not seems to have an effect in my testing. It may be that proper
oblique fonts need to be installed.
2014-05-07 12:13:27 +02:00
Richard Heck
fdbe775b9f This is the result of an audit of all static variables, looking
for possible thread conflicts, of the sort Georg resolved at
6a30211f. I have made static variables const where possible,
and marked cases that looked potentially problematic with the
comment:
	// FIXME THREAD
Many of these definitely are vulnerable to concurrent access, such
as the static variables declared at the start of output_latex.cpp.
Suppose, e.g., we were outputting latex and also displaying the
source of a different document.

I'd appreciate it if others could grep for "FIXME THREAD" and see
if some of these are harmless, or what.
2014-04-21 11:51:57 -04:00
Juergen Spitzmueller
0c447db0ca Adjust FIXME 2014-03-05 12:16:57 +01:00
Juergen Spitzmueller
5c4acd6bc0 Add FIXME 2014-03-03 10:45:40 +01:00
Richard Heck
1b1f8dd235 Audit all the LASSERT calls, and try to do something sensible at
each failure.

There are several places I was not sure what to do. These are marked
by comments beginning "LASSERT:" so they can be found easily. At the
moment, they are at:

Author.cpp:105: // LASSERT: What should we do here?
Author.cpp:121: // LASSERT: What should we do here?
Buffer.cpp:4525:        // LASSERT: Is it safe to continue here, or should we just return?
Cursor.cpp:345:         // LASSERT: Is it safe to continue here, or should we return?
Cursor.cpp:403:         // LASSERT: Is it safe to continue here, or should we return?
Cursor.cpp:1143:                // LASSERT: There have been several bugs around this code, that seem
CursorSlice.cpp:83:     // LASSERT: This should only ever be called from an InsetMath.
CursorSlice.cpp:92:     // LASSERT: This should only ever be called from an InsetMath.
LayoutFile.cpp:303:                     // LASSERT: Why would this fail?
Text.cpp:995:           // LASSERT: Is it safe to continue here?
2013-04-25 17:27:10 -04:00
Vincent van Ravesteijn
53b75399e7 Factor out painting of text decorations 2012-05-02 18:02:17 +02:00
Vincent van Ravesteijn
6327993867 Fix bug #7667: Pixmap cache and CT lead to random colors
The signature of the character in cache should take into account the
change tracking baseColor (author) and mergeColor (added/deleted). If not,
we will mixup different cached pixmaps.
2012-04-29 14:59:19 +02:00
Stephan Witt
1c58de4cc7 #7266 drawing of dotted lines with QPen and line width of 0.5 does not work well - restore line width 0 for thin line
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37884 a592a061-630c-0410-9148-cb99ea01b6c8
2011-03-08 15:35:24 +00:00
Uwe Stöhr
9fa49ecafa GuiPainter.cpp: correct attempt from r35491
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35498 a592a061-630c-0410-9148-cb99ea01b6c8
2010-09-25 14:14:50 +00:00
Pavel Sanda
b1b1e13ad4 My compilator issues warning. Uwe, please check that this was intended.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35491 a592a061-630c-0410-9148-cb99ea01b6c8
2010-09-24 12:26:28 +00:00
Peter Kümmel
85d87c0a46 use one place to adjust width of thin lines
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35302 a592a061-630c-0410-9148-cb99ea01b6c8
2010-09-07 05:14:57 +00:00
Uwe Stöhr
f01e36b646 painter: make it possible to draw lines with custom line thicknesses
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35283 a592a061-630c-0410-9148-cb99ea01b6c8
2010-09-05 14:46:58 +00:00
Uwe Stöhr
38ed6cd1a0 \lyxline is a LyX-specific macro that creates a line in the output
- this line is defined with a width of 1pt -> therefore also draw it in this size in lyx
- this line is by default black -> use black
- setting a color for this in the preferences is wrong and senseless, because the color of this line is defined by the color chosen in the text style dialog -> remove preference color

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35185 a592a061-630c-0410-9148-cb99ea01b6c8
2010-08-24 01:13:26 +00:00
Edwin Leuven
2f6ec82064 little wiggles for on-the-fly spellcheck
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33827 a592a061-630c-0410-9148-cb99ea01b6c8
2010-03-21 20:26:30 +00:00
Pavel Sanda
6fde8f8067 Introduce double underline and wavy underline styles from ulem
http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg150803.html


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29542 a592a061-630c-0410-9148-cb99ea01b6c8
2009-05-05 09:26:28 +00:00
Pavel Sanda
381b86788d Introduce strikeout text style (strike-through)
http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg150743.html

Somewhat related to http://www.lyx.org/trac/ticket/4248 .


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29523 a592a061-630c-0410-9148-cb99ea01b6c8
2009-05-03 22:45:14 +00:00
Abdelrazak Younes
dc1d8af9a2 Painter::wavyHorizontalLine(): new method for inline spellcheck purpose.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28961 a592a061-630c-0410-9148-cb99ea01b6c8
2009-03-28 16:37:28 +00:00
Vincent van Ravesteijn
a37eaf4f0b Use the new Color class (see r28420) in the Painter code.
See:
http://thread.gmane.org/gmane.editors.lyx.devel/114189

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28421 a592a061-630c-0410-9148-cb99ea01b6c8
2009-02-09 20:10:11 +00:00
Vincent van Ravesteijn
814a8411eb Reverse unwanted commits.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28388 a592a061-630c-0410-9148-cb99ea01b6c8
2009-02-08 01:11:27 +00:00
Vincent van Ravesteijn
f694cf7135 * InsetMathNest.cpp: Cosmetics.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28387 a592a061-630c-0410-9148-cb99ea01b6c8
2009-02-08 01:01:15 +00:00
Stefan Schimanski
4040382f46 * fix for r27091: draw the newly created pixmap. The reordering of the code has removed this case. So much about trivial program transformation.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27227 a592a061-630c-0410-9148-cb99ea01b6c8
2008-11-03 07:40:18 +00:00
Stefan Schimanski
d51c31ca85 * complete fix for #5327: switch back to normal drawing code if the cache
pixmap would have non-positive width or height.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27091 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-24 22:49:17 +00:00
Stefan Schimanski
0334876ca6 * temporary fix for the crash of the pixmap cache on Mac with Qt 4.4.
A better patch will follow soon, but this should go in for rc4.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27065 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-23 20:47:11 +00:00
Abdelrazak Younes
31c1982677 * GuiImage:
- switch to QImage backend instead of QPixmap. In any case this was done internally by Qt for any image loading or transformation. This should relieve the X11 server a bit for big images.
- try to clear out the memory after a transformation by calling QImage::detach(). Unfortunately there seems to be a bug somewhere in Qt... see (http://bugzilla.lyx.org/show_bug.cgi?id=5002).

* GraphicsImage: get rid of scaledDimension()


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26455 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-19 11:27:24 +00:00
Abdelrazak Younes
c1fdb12118 n-th bug fixing patch from Vincent:
Almost all methods in the GuiPainter class have something like
 
if (!isDrawingEnabled())
  return;
 
except GuiPainter::fillRectangle(...) !!
 
Adding this will solve
 
gmane.editors.lyx.devel/109857
gmane.editors.lyx.devel/109859
http://bugzilla.lyx.org/show_bug.cgi?id=4937
http://bugzilla.lyx.org/show_bug.cgi?id=5027
http://bugzilla.lyx.org/show_bug.cgi?id=5235
 
Maybe also:
http://bugzilla.lyx.org/show_bug.cgi?id=5230


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26351 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-09 21:01:18 +00:00
Pavel Sanda
8a478b5ab8 Fix bug http://bugzilla.lyx.org/show_bug.cgi?id=5093 .
Patch by Vincent.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26249 a592a061-630c-0410-9148-cb99ea01b6c8
2008-08-29 00:31:04 +00:00
Abdelrazak Younes
39a78a09d2 previous commit: forgot that
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25176 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-06 22:54:28 +00:00
Abdelrazak Younes
f45523aa7a Pimpl stuff in GuiApplication.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24895 a592a061-630c-0410-9148-cb99ea01b6c8
2008-05-23 08:43:07 +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
André Pönitz
7f461f4392 infrastructure for 'graceful asserts'
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24216 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-10 21:49:34 +00:00
André Pönitz
6a64982eb5 cleanup/compile fix
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23843 a592a061-630c-0410-9148-cb99ea01b6c8
2008-03-20 00:19:10 +00:00
André Pönitz
de17493932 simpliofy {Gui}FontLoader architecture a bit
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23842 a592a061-630c-0410-9148-cb99ea01b6c8
2008-03-20 00:00:53 +00:00
Abdelrazak Younes
bced544674 Hopefully fix monolithic build.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23380 a592a061-630c-0410-9148-cb99ea01b6c8
2008-03-02 10:20:13 +00:00
Stefan Schimanski
aa532e094f * once is enough
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23129 a592a061-630c-0410-9148-cb99ea01b6c8
2008-02-22 14:05:06 +00:00
Abdelrazak Younes
2bf1c09376 header cleanup
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23049 a592a061-630c-0410-9148-cb99ea01b6c8
2008-02-18 07:14:42 +00:00
Abdelrazak Younes
9e4780ffd8 * buttonText(): painting tweaks.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22999 a592a061-630c-0410-9148-cb99ea01b6c8
2008-02-14 08:49:45 +00:00
Abdelrazak Younes
537481ebe5 header cleanup
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22573 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-14 23:18:52 +00:00
Abdelrazak Younes
9abb7db468 getting rid of superfluous std:: statements.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22104 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-12 19:28:07 +00:00