Summary:
With formatting there is an internal value, which represents
the true value of a field additionaly to the normal,
visible, text.
For fields which have formatting rules these might differ
and for calculations the internal value is used. The behavior
to format on focus in / focus out events is similar to
that of Acrobat reader.
Test Plan: Needs unit test
Reviewers: aacid
Subscribers: okular-devel
Tags: #okular
Maniphest Tasks: T8886
Differential Revision: https://phabricator.kde.org/D13171
Summary:
Now //fontBoundaries// always has smaller width than //boundingRect// from
```
void QPainter::drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr)
```
which is required to enclose the whole text. The difference is only several pixels, but sometimes it can cause visual problems. You can see the sidebar without and with this patch in Russian language with Noto Sans 10pt font on a picture below.
{F7177644}
Now the first and the last symbols are fully visible.
Reviewers: #okular
Subscribers: okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D23012
The previous code used two consecutive calls to the method
slotChangeDrawingToolEngine to reset the m_drawingEngine
member (i.e., to delete it and to create a new one from scratch).
That worked; however, as a side effect the calls to
slotChangeDrawingToolEngine also set the cursor to an arrow,
which happens every time one continuous stroke is finished.
This went unnoticed because when drawing in presentation mode
the cursor is an arrow anyway. However, in anticipation
of future patches that change the cursor to a cross-hair
when drawing, this explicit setting of the arrow shape
needs to go. Therefore this patch replaces the two calls
to slotChangeDrawingToolEngine by the code they contain,
minus the code to set the cursor shape. The new code is
only one line longer, and more readable too.
Summary:
Configuration:
- Add push button to select custom stamp image
- Check if loaded image is usable as stamp or throw error
- Keep image proportions in previewer
- Move previewer below the combobox to display larger preview
Annotation tool:
- Keep stamp image proportion in annotation preview (while left mouse button is down)
- Adding the annotation with one-click (without holding the left mouse button and dragging) adds the stamp with original proportions
BUG: 370381
BUG: 383652
CCBUG: 383651
FIXED-IN: 1.9.0
Closes T8074
TODO:
- [ ] Check if filters in file chooser make sense / propose better alternative
- [x] Update doc ( @yurchor will do it after we merge this)
Test Plan:
From stamp annotation configuration dialog:
- Show a warning regarding limitations of the feature's current implementation
- Click push button next to combo box opens a file selector
- Selecting a corrupted image file should throw an error
- Selecting a good image file shows the preview of the image
- Select a horizontal image shows a large clear preview
- Select a vertical image file shows a smaller preview without messing up the visual of the config dialog
- Input a valid icon name in the combobox and the preview of the icon is shown
From page view, select the stamp annotation with horizontal image file (not squared):
- Click and hold. The preview maintains proportions
- Single click. The stamp image in the pdf maintains proportions and has the same size of the click and hold preview.
- Add an annotation of the Okular custom stamps (internal SVG so treated slightly differently) do not create problems
Reviewers: #okular, ngraham
Reviewed By: ngraham
Subscribers: pino, aacid, yurchor, ngraham, okular-devel
Tags: #okular
Maniphest Tasks: T8074
Differential Revision: https://phabricator.kde.org/D22064
The code that draws a thin gradient at the right and bottom
boundaries of a page implicitly assumed that the display was
not scaled, i.e., that logical pixel where identical to
physical pixels. Nobody really noticed because that gradient
was so thin. Anyway, this patch fixes the gradient for
scaled displays.
I considered using a QLinearGradient, but decided against it:
The code would have been longer, and the manual code in the
patch can exploit the fact that all lines are horizontal
or vertical. Therefore, expensive scan-conversion can be
avoided.
Pages get a black rectangle around them as 'outline' after
being rendered. This rendering was not pixel-perfect at
fractional scalings: apparently, fractional line widths and
positions get rounded differently. The result was that
sometimes there was a small gap between outline and page.
This pages fixes the problem by making the pen for the
outline 'cosmetic', i.e., one physical pixel wide.
With that, its position can be such that it encloses
the page without any gap.
Okular renders a simple 'shadow' at the right and the bottom of each
page. The code for this is a bit fragile: After the page is rendered,
Okular paints a black outline, and then the shadow. The shadow is
a hand-implemented gradient, painted line by line. Finally, the
remaining area is painted in the background color. No pixel is
ever touched twice. Unfortunately, the code is buggy, and in hidpi /
fractional scaling situations, some pixels are never touched.
This results in rendering glitches as reported in
https://bugs.kde.org/show_bug.cgi?id=383943
Instead of trying to fix the previous approach, this patch makes the
code more robust by changing the order of the painting operations.
After painting the page, the code now first paints the background,
which is now enlarged to cover everything off the page. Finally,
the black outline and shadow are drawn on the previously drawn
background. This makes sures that no pixel is ever left uninitialized.
It also allows to simplify the shadow drawing operation a bit.
BUG: 383943
According to
https://doc.qt.io/qt-5/qregion-obsolete.html#rects
the method QRegion::rects is obsolete and should be avoided.
Let's do that by moving to a range-based for over the QRegion.
That is easier to read anyway.
Summary:
The config dialog of each annotation tool is now a form layout without group boxes. Everything is aligned.
Reviewers: #okular, #vdg, ngraham, aacid
Reviewed By: #okular, #vdg, ngraham, aacid
Subscribers: sander, davidhurka, aacid, okular-devel, knambiar, ngraham
Tags: #okular
Maniphest Tasks: T8076
Differential Revision: https://phabricator.kde.org/D10859
Previously, when using a screen scaling factor larger than 1, the
drawings by mouse or stylus in presentation mode were slightly blocky.
The underlying cause was
a) a few integer types used for non-integer coordinates
b) the intermediate use of a QPixmap without the correct
devicePixelRatio
Additionally, this patch uses a QPainterPath to draw the path,
rather than a sequence of individual lines. This improves
the line quality a tiny bit, because the lines are properly
joined.
BUG: 384143
Differential Revision: https://phabricator.kde.org/D21836
Summary:
The current icon (draw-text) is semantically incorrect. This patch makes the Text Selection tool use the icons added in D21632.
BUG: 408391
FIXED-IN: 1.8.0
Test Plan: {F6874885, size=full}
Reviewers: #vdg, #okular, ngraham
Reviewed By: #vdg, ngraham
Subscribers: okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D21633
Summary: I changed the `input-mouse` icon so that it would look more like a real mouse. In order to keep the proper icon for the Browse tool, I have to change the icon to `transform-browse`.
Test Plan: {F6874739, size=full}
Reviewers: #okular, #vdg, ngraham
Reviewed By: #vdg, ngraham
Subscribers: ngraham, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D21630
Summary:
Currently, the Toolbar's selection mode menu shows the rectangular selection mode
by default, which is not the most useful or commonly used selection mode.
This patch makes the Text Selection tool the one that's shown by default, since that's
the kind of selection that's the most useful given the sort of document that Okular
is typically used to view.
Test Plan:
- Delete `~/.config/okularrc` and `~/.config/okularpartrc`
- Open Okular
- See that the selection mode toolbar button shows Text Selection by default:
{F6874497, size=full}
Reviewers: #okular, #vdg, ndavis
Reviewed By: #vdg, ndavis
Subscribers: ndavis, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D21624
Summary:
Currently, `ToolAction` menus (of which there is only one, the selection tool menu)
activate the current tool on click, and require a click-and-hold to choose a new tool.
This is a somewhat unfamiliar user interface that I myself struggled with when initially
encountering it, and I've encountered user complaints about it as well.
This patch adjusts the behavior so that clicking on the arrow on the right side of the
button will open the pop-up and allow choosing another tool, which is a more common
method of implementing the feature. The patch also adjusts the tooltop accordingly.
Test Plan: {F6874466, size=full}
Reviewers: #okular, #vdg, ndavis
Reviewed By: #vdg, ndavis
Subscribers: ndavis, abetts, filipf, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D21622
Summary:
Currently, some of the items in the {nav Tools} menu have "tool" in the name, and some
do not. This is in any event redundant since they're in a menu with that word in it
already. In the toolbar, these actions become more inconsistent since their names change
and can even differ between what's shown in the pop-up menu and what's shown on the
button text.
This patch regularizes the names, stops changing the names for the toolbar versions, and
updates the docbook accordingly.
Test Plan:
{F6874459, size=full}
{F6874458, size=full}
Reviewers: #okular, #vdg, filipf
Reviewed By: #vdg, filipf
Subscribers: filipf, okular-devel, kde-doc-english
Tags: #okular, #documentation
Differential Revision: https://phabricator.kde.org/D21621
Summary:
Windows MSVC Qt5.11 build fails:
```
conversion from 'initializer list' to 'QSizeF' requires a narrowing conversion
```
Pass QSize, and let QSizeF Ctor `QSizeF(const QSize &)` do the conversion.
Test Plan: - build on Windows MSVC
Reviewers: aacid
Reviewed By: aacid
Subscribers: aacid, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D21543
Summary:
Use `LineAnnotPainter` to generate accurate icons.
Looks like this:
{F6852054}
Depends on D21248
Test Plan:
- open "Edit annotation tool" for straight line and check combo box items for start and stop style
- test on HiDPI
Reviewers: #okular, sander
Reviewed By: sander
Subscribers: davidhurka, knambiar, ngraham, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D21416
Summary:
This implements drawing the various line ending styles for 2 point lines in non-PDF documents.
Looks like this:
{F6833437}
CCBUG: 381629
Test Plan:
- open a *.txt document
- draw line annotations with different arrow styles: Square, Diamond, OpenArrow, ClosedArrow, ROpenArrow, RClosedArrow, Butt, Slash, Circle
- ... as start and as end style (start needs D21238 to be configurable in GUI)
- ... filled or not (fill color can't be configured in GUI yet)
- ... with different leader line settings
- ... at various angles
- rotate and scale page
- leader line with setting 100 gives 100 pixel line at 100% zoom (use kruler to verify)
Reviewers: #okular, aacid, sander
Reviewed By: sander
Subscribers: ngraham, sander, knambiar, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D21248
Summary:
“Inner Color” configuration of Polygon tool was overlapping with the line start/end styles intended for only Straight Line tool. Fix it.
CCBUG: 381629
Test Plan:
1. Configure annotations
2. Create/Edit Polygon tool
3. Observe that no Line Start/End styles are visible
4. Create/Edit Straight Line tool
5. Observe that line start/end styles can be configured
Reviewers: #okular, tobiasdeiminger
Reviewed By: tobiasdeiminger
Subscribers: tobiasdeiminger, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D21332
Summary:
When you select a square with the right mouse button, and you go past the margin of the window (but where there is still space to go), okular scrolls the document so you can select more.
With this patch this automatic scrolling goes at 60 fps instead of 10, I made it so that the speed of the scroll is the same
Reviewers: #okular, aacid, sander, ngraham
Reviewed By: sander, ngraham
Subscribers: sander, ngraham, aacid, ahmedbilal, okular-devel, kezik
Tags: #okular
Differential Revision: https://phabricator.kde.org/D20437
Summary: Similar to the line ending style, add support for line start style for the Straight Line annotation tool
Test Plan:
1. Go to Configure annotations
2. Create (or edit existing) Straight Line tool
3. Set the ‘Line Start’ option on Style and Apply
4. Use the Straight Line tool to draw a line and check the line starting style.
Reviewers: #okular, tobiasdeiminger
Reviewed By: tobiasdeiminger
Subscribers: ngraham, tobiasdeiminger, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D21238
Summary:
For "Straight Line" annotations, the "Leader Lines" (if any) shall be perpendicular to the main line segment. Current code missed to consider page aspect ratio when calculating the main segment angle, which caused non-perpendicular leader lines.
Note: Bug is only visible with non-PDF documents (i.e. where Okular draws line annotation, instead of generator).
Before:
{F6818453}
After:
{F6818452}
Test Plan:
- open a txt file, the generated page will have aspect ratio 3:4
- configure a "Straight Line" annotation with long leader line
- create a line annotation at 45 degree angle
- check the leader line, it shall be perpendicular to the main line
Reviewers: sander
Reviewed By: sander
Subscribers: aacid, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D21136