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
Summary: Adds tootip, different icons depending on checked state and fixed functionality
Test Plan:
- Open a document
- click bookmark action
- the bookmarked page should appear in the bookmarks tab of the contextDrawer
Reviewers: #okular, #plasma:_mobile, ngraham
Reviewed By: ngraham
Subscribers: ngraham, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D22904
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
Summary:
This shall improve the documentation of several area classes,
including NormalizedPoint, NormalizedRect, RegularArea, RegularAreaRect.
This shall also clarify when absolute coordinates and when normalized
coordinates are used.
Describes the normalized coordinate system in NormalizedPoint, with a new term “reference area” do describe mapping.
TODO:
Page view rotation.
This is not done consistently in Okular, but can be changed later. I think this documentation will help (me) with that then.
Test Plan: Run doxygen
Reviewers: #okular, aacid
Reviewed By: #okular, aacid
Subscribers: aacid, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D21266
Summary:
This adds some important documentation on TextEntity and other classes, and improves some of the existing documentation.
This includes changing parameter names from ‘rect’ to ‘area’, because I found ‘rect’ misleading.
Test Plan: Run doxygen
Reviewers: #okular, aacid
Reviewed By: #okular, aacid
Subscribers: aacid, yurchor, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D21271
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:
This patch adds an "Open Containing Folder" menu item to the file menu, similar to
other KDE apps like Gwenview that have it there. This action is especially useful
for the case when you've downloaded a PDF from the internet that opens itself in
Okular. The location of this file may not be clear or easy to find without this
feature, and on several occasiona I have found myself wishing for it when this
happens.
Test Plan:
- Delete or move aside `~/.local/config/kxmlgui5/okular/part.rc`
- Menu item is enabled and works when there is an open document: {F6940449, size=full}
- Menu item is disabled when there is no open document: {F6940448, size=full}
Reviewers: #okular, aacid, sander
Reviewed By: #okular, aacid
Subscribers: shubham, davidhurka, okular-devel
Tags: #okular
Differential Revision: https://phabricator.kde.org/D22145