From 425dc7d948574237fd0dad216be553ca5ee90e53 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Thu, 3 Mar 2016 00:21:12 +0100 Subject: [PATCH 01/23] FindPoppler.cmake: Fix endif mismatched condition by removing it --- cmake/modules/FindPoppler.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/FindPoppler.cmake b/cmake/modules/FindPoppler.cmake index 10e1ec71c..11af41eef 100644 --- a/cmake/modules/FindPoppler.cmake +++ b/cmake/modules/FindPoppler.cmake @@ -162,7 +162,7 @@ int main() set(popplerVersionMessage "0.12.1") else (HAVE_POPPLER_0_28) set(popplerVersionMessage "0.5.4") - endif (HAVE_POPPLER_0_28) + endif () if (NOT Poppler_FIND_QUIETLY) message(STATUS "Found Poppler-Qt4: ${POPPLER_LIBRARY}, (>= ${popplerVersionMessage})") endif (NOT Poppler_FIND_QUIETLY) From a8edfba5d00e3ce0bdd99aaaf592dc4b4de2f5fc Mon Sep 17 00:00:00 2001 From: Nicolas Frattaroli Date: Mon, 21 Mar 2016 23:20:35 +0100 Subject: [PATCH 02/23] Fix indentation REVIEW: 127372 --- ui/pagepainter.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ui/pagepainter.cpp b/ui/pagepainter.cpp index 57e8620cd..3bcd8bc4c 100644 --- a/ui/pagepainter.cpp +++ b/ui/pagepainter.cpp @@ -63,10 +63,10 @@ void PagePainter::paintCroppedPageOnPainter( QPainter * destPainter, const Okula Okular::DocumentObserver *observer, int flags, int scaledWidth, int scaledHeight, const QRect &limits, const Okular::NormalizedRect &crop, Okular::NormalizedPoint *viewPortPoint ) { - /* Calculate the cropped geometry of the page */ - QRect scaledCrop = crop.geometry( scaledWidth, scaledHeight ); - int croppedWidth = scaledCrop.width(); - int croppedHeight = scaledCrop.height(); + /* Calculate the cropped geometry of the page */ + QRect scaledCrop = crop.geometry( scaledWidth, scaledHeight ); + int croppedWidth = scaledCrop.width(); + int croppedHeight = scaledCrop.height(); QColor paperColor = Qt::white; QColor backgroundColor = paperColor; From 1371ccfa28cf777dd04d3f67a1947e41b02dba0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20M=C3=A1t=C3=A9?= Date: Tue, 22 Mar 2016 00:29:53 +0100 Subject: [PATCH 03/23] Show TOC marker for parents if the children is collapsed BUGS: 342076 REVIEWS: 127013 --- ui/tocmodel.cpp | 71 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/ui/tocmodel.cpp b/ui/tocmodel.cpp index ce9336621..fcc76584b 100644 --- a/ui/tocmodel.cpp +++ b/ui/tocmodel.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include @@ -148,11 +149,38 @@ QModelIndex TOCModelPrivate::indexForItem( TOCItem *item ) const void TOCModelPrivate::findViewport( const Okular::DocumentViewport &viewport, TOCItem *item, QList< TOCItem* > &list ) const { - if ( item->viewport.isValid() && item->viewport.pageNumber == viewport.pageNumber ) - list.append( item ); + TOCItem *todo = item; - foreach ( TOCItem *child, item->children ) - findViewport( viewport, child, list ); + while ( todo ) + { + TOCItem *current = todo; + todo = 0; + TOCItem *pos = 0; + + foreach ( TOCItem *child, current->children ) + { + if ( child->viewport.isValid() ) + { + if ( child->viewport.pageNumber <= viewport.pageNumber ) + { + pos = child; + if ( child->viewport.pageNumber == viewport.pageNumber ) + { + break; + } + } + else + { + break; + } + } + } + if ( pos ) + { + list.append( pos ); + todo = pos; + } + } } @@ -189,7 +217,31 @@ QVariant TOCModel::data( const QModelIndex &index, int role ) const break; case Qt::DecorationRole: if ( item->highlight ) - return KIcon( QApplication::layoutDirection() == Qt::RightToLeft ? "arrow-left" : "arrow-right" ); + { + const QVariant icon = KIcon( QApplication::layoutDirection() == Qt::RightToLeft ? "arrow-left" : "arrow-right" ); + TOCItem *lastHighlighted = d->currentPage.last(); + + // in the mobile version our parent is not a QTreeView; add icon to the last highlighted item + // TODO misusing parent() here, fix + QTreeView *view = dynamic_cast< QTreeView* > ( QObject::parent() ); + if ( !view ) + { + if ( item == lastHighlighted ) + return icon; + return QVariant(); + } + + if ( view->isExpanded( index ) ) + { + // if this is the last highlighted node, its child is on a page below, thus it needs icon + if ( item == lastHighlighted ) + return icon; + } + else + { + return icon; + } + } break; case PageItemDelegate::PageRole: if ( item->viewport.isValid() ) @@ -282,6 +334,7 @@ void TOCModel::fill( const Okular::DocumentSynopsis *toc ) if ( !index.isValid() ) continue; + // TODO misusing parent() here, fix QMetaObject::invokeMethod( QObject::parent(), "expand", Qt::QueuedConnection, Q_ARG( QModelIndex, index ) ); } } @@ -293,6 +346,7 @@ void TOCModel::fill( const Okular::DocumentSynopsis *toc ) if ( !index.isValid() ) continue; + // TODO misusing parent() here, fix QMetaObject::invokeMethod( QObject::parent(), "expand", Qt::QueuedConnection, Q_ARG( QModelIndex, index ) ); } } @@ -329,13 +383,6 @@ void TOCModel::setCurrentViewport( const Okular::DocumentViewport &viewport ) QList< TOCItem* > newCurrentPage; d->findViewport( viewport, d->root, newCurrentPage ); - // HACK: for now, support only the first item found - if ( newCurrentPage.count() > 0 ) - { - TOCItem *first = newCurrentPage.first(); - newCurrentPage.clear(); - newCurrentPage.append( first ); - } d->currentPage = newCurrentPage; From 155dc14b55f8f02c72038abb4b4c6db3daa28b81 Mon Sep 17 00:00:00 2001 From: Daniel Lichtenberger Date: Wed, 23 Mar 2016 01:58:38 +0100 Subject: [PATCH 04/23] Added ability to view embedded files The selected embedded file(s) are extracted to QDir::tempPath() and the default application associated with the file type is launched with KRun. Double-click on an embedded file also launches the view action. The temporary files are cleaned up automatically when the dialog is closed. REVIEW: 127351 BUGS: 295567 --- ui/embeddedfilesdialog.cpp | 54 +++++++++++++++++++++++++++++++++++++- ui/embeddedfilesdialog.h | 6 +++++ ui/guiutils.cpp | 13 +++++---- ui/guiutils.h | 2 ++ 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/ui/embeddedfilesdialog.cpp b/ui/embeddedfilesdialog.cpp index b400e879b..b44b5aa96 100644 --- a/ui/embeddedfilesdialog.cpp +++ b/ui/embeddedfilesdialog.cpp @@ -11,15 +11,19 @@ #include #include +#include #include +#include #include #include +#include #include #include #include #include #include +#include #include "core/document.h" #include "guiutils.h" @@ -38,10 +42,12 @@ static QString dateToString( const QDateTime & date ) EmbeddedFilesDialog::EmbeddedFilesDialog(QWidget *parent, const Okular::Document *document) : KDialog(parent) { setCaption(i18nc("@title:window", "Embedded Files")); - setButtons(Close | User1); + setButtons(Close | User1 | User2); setDefaultButton(Close); setButtonGuiItem(User1, KStandardGuiItem::save()); + setButtonGuiItem(User2, KGuiItem(i18nc("@action:button", "View"), "document-open")); enableButton(User1, false); + enableButton(User2, false); m_tw = new QTreeWidget(this); setMainWidget(m_tw); @@ -81,14 +87,18 @@ EmbeddedFilesDialog::EmbeddedFilesDialog(QWidget *parent, const Okular::Document m_tw->updateGeometry(); connect(this, SIGNAL(user1Clicked()), this, SLOT(saveFile())); + connect(this, SIGNAL(user2Clicked()), this, SLOT(viewFile())); + connect(m_tw, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(attachViewContextMenu(QPoint))); connect(m_tw, SIGNAL(itemSelectionChanged()), this, SLOT(updateSaveButton())); + connect(m_tw, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(viewFileItem(QTreeWidgetItem*,int))); } void EmbeddedFilesDialog::updateSaveButton() { bool enable = (m_tw->selectedItems().count() > 0); enableButton(User1, enable); + enableButton(User2, enable); } void EmbeddedFilesDialog::saveFile() @@ -101,6 +111,22 @@ void EmbeddedFilesDialog::saveFile() } } +void EmbeddedFilesDialog::viewFile() +{ + QList selected = m_tw->selectedItems(); + foreach(QTreeWidgetItem *twi, selected) + { + Okular::EmbeddedFile* ef = qvariant_cast< Okular::EmbeddedFile* >( twi->data( 0, EmbeddedFileRole ) ); + viewFile( ef ); + } +} + +void EmbeddedFilesDialog::viewFileItem( QTreeWidgetItem* item, int /*column*/ ) +{ + Okular::EmbeddedFile* ef = qvariant_cast< Okular::EmbeddedFile* >( item->data( 0, EmbeddedFileRole ) ); + viewFile( ef ); +} + void EmbeddedFilesDialog::attachViewContextMenu( const QPoint& /*pos*/ ) { QList selected = m_tw->selectedItems(); @@ -124,6 +150,32 @@ void EmbeddedFilesDialog::attachViewContextMenu( const QPoint& /*pos*/ ) } } +void EmbeddedFilesDialog::viewFile( Okular::EmbeddedFile* ef ) +{ + // get name and extension + QFileInfo fileInfo(ef->name()); + + // save in temporary directory with a unique name resembling the attachment name, + // using QTemporaryFile's XXXXXX placeholder + QTemporaryFile *tmpFile = new QTemporaryFile( + QDir::tempPath() + + QDir::separator() + + fileInfo.baseName() + + ".XXXXXX" + + (fileInfo.completeSuffix().isEmpty() ? QString("") : "." + fileInfo.completeSuffix()) + ); + GuiUtils::writeEmbeddedFile( ef, this, *tmpFile ); + + // set readonly to prevent the viewer application from modifying it + tmpFile->setPermissions( QFile::ReadOwner ); + + // keep temporary file alive while the dialog is open + m_openedFiles.push_back( QSharedPointer< QTemporaryFile >( tmpFile ) ); + + // view the temporary file with the default application + new KRun( QUrl( "file://" + tmpFile->fileName() ), this ); +} + void EmbeddedFilesDialog::saveFile( Okular::EmbeddedFile* ef ) { GuiUtils::saveEmbeddedFile( ef, this ); diff --git a/ui/embeddedfilesdialog.h b/ui/embeddedfilesdialog.h index f3e2d038f..bb8354088 100644 --- a/ui/embeddedfilesdialog.h +++ b/ui/embeddedfilesdialog.h @@ -13,6 +13,8 @@ #include class QTreeWidget; +class QTemporaryFile; +class QTreeWidgetItem; namespace Okular { class Document; @@ -29,11 +31,15 @@ Q_OBJECT void saveFile(); void attachViewContextMenu( const QPoint& pos ); void updateSaveButton(); + void viewFile(); + void viewFileItem( QTreeWidgetItem* index, int column ); private: void saveFile( Okular::EmbeddedFile* ); + void viewFile( Okular::EmbeddedFile* ); QTreeWidget *m_tw; + QList< QSharedPointer > m_openedFiles; }; #endif diff --git a/ui/guiutils.cpp b/ui/guiutils.cpp index 3bf3ad64b..b43210583 100644 --- a/ui/guiutils.cpp +++ b/ui/guiutils.cpp @@ -206,15 +206,18 @@ void saveEmbeddedFile( Okular::EmbeddedFile *ef, QWidget *parent ) KFileDialog::ConfirmOverwrite ); if ( path.isEmpty() ) return; + QFile targetFile( path ); + writeEmbeddedFile( ef, parent, targetFile ); +} - QFile f( path ); - if ( !f.open( QIODevice::WriteOnly ) ) +void writeEmbeddedFile( Okular::EmbeddedFile *ef, QWidget *parent, QFile& target ) { + if ( !target.open( QIODevice::WriteOnly ) ) { - KMessageBox::error( parent, i18n( "Could not open \"%1\" for writing. File was not saved.", path ) ); + KMessageBox::error( parent, i18n( "Could not open \"%1\" for writing. File was not saved.", target.fileName() ) ); return; } - f.write( ef->data() ); - f.close(); + target.write( ef->data() ); + target.close(); } Okular::Movie* renditionMovieFromScreenAnnotation( const Okular::ScreenAnnotation *annotation ) diff --git a/ui/guiutils.h b/ui/guiutils.h index fffe04488..bedb2fa37 100644 --- a/ui/guiutils.h +++ b/ui/guiutils.h @@ -17,6 +17,7 @@ class QImage; class QPixmap; class QSize; class QWidget; +class QFile; class KIconLoader; namespace Okular { @@ -45,6 +46,7 @@ namespace GuiUtils KIconLoader* iconLoader(); void saveEmbeddedFile( Okular::EmbeddedFile *ef, QWidget *parent ); + void writeEmbeddedFile( Okular::EmbeddedFile *ef, QWidget *parent, QFile& targetFile ); /** * Returns the movie object that is referenced by a rendition action of the passed screen @p annotation From 174b86e20bf30637f7eeba7496542f25fa2d1ddf Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Wed, 23 Mar 2016 02:02:45 +0100 Subject: [PATCH 05/23] Also add the View to the context menu --- ui/embeddedfilesdialog.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ui/embeddedfilesdialog.cpp b/ui/embeddedfilesdialog.cpp index b44b5aa96..ec0d2b1c5 100644 --- a/ui/embeddedfilesdialog.cpp +++ b/ui/embeddedfilesdialog.cpp @@ -138,16 +138,21 @@ void EmbeddedFilesDialog::attachViewContextMenu( const QPoint& /*pos*/ ) QMenu menu( this ); QAction* saveAsAct = menu.addAction( KIcon( "document-save-as" ), i18nc( "@action:inmenu", "&Save As..." ) ); + QAction* viewAct = menu.addAction( KIcon( "document-open" ), i18nc( "@action:inmenu", "&View..." ) ); QAction* act = menu.exec( QCursor::pos() ); if ( !act ) return; + Okular::EmbeddedFile* ef = qvariant_cast< Okular::EmbeddedFile* >( selected.at( 0 )->data( 0, EmbeddedFileRole ) ); if ( act == saveAsAct ) { - Okular::EmbeddedFile* ef = qvariant_cast< Okular::EmbeddedFile* >( selected.at( 0 )->data( 0, EmbeddedFileRole ) ); saveFile( ef ); } + else if ( act == viewAct ) + { + viewFile( ef ); + } } void EmbeddedFilesDialog::viewFile( Okular::EmbeddedFile* ef ) From c183dd8bd300b39e55e3309b6b279b6e7b8e19c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20M=C3=A1t=C3=A9?= Date: Wed, 6 Apr 2016 00:31:57 +0200 Subject: [PATCH 06/23] Set viewport to the position clicked on the thumbnail list Also fix the mouse cursor shape REVIEW: 127526 BUGS: 162219 --- ui/thumbnaillist.cpp | 50 +++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/ui/thumbnaillist.cpp b/ui/thumbnaillist.cpp index 8704bfa82..8a6b12df3 100644 --- a/ui/thumbnaillist.cpp +++ b/ui/thumbnaillist.cpp @@ -731,31 +731,21 @@ void ThumbnailListPrivate::mouseReleaseEvent( QMouseEvent * e ) return e->ignore(); QRect r = item->visibleRect(); - const int margin = ThumbnailWidget::margin(); const QPoint p = e->pos() - item->pos(); - if ( r.contains( p - QPoint( margin / 2, margin / 2 ) ) ) - { - setCursor( Qt::OpenHandCursor ); - } - else + // jump center of viewport to cursor if it wasn't dragged + if ( m_mouseGrabPos.isNull() ) { - setCursor( Qt::ArrowCursor ); - if ( m_mouseGrabPos.isNull() ) - { - if ( m_document->viewport().pageNumber != item->pageNumber() ) - { - m_document->setViewportPage( item->pageNumber() ); - r = item->visibleRect(); - Okular::DocumentViewport vp = Okular::DocumentViewport( item->pageNumber() ); - vp.rePos.normalizedX = 0.5; - vp.rePos.normalizedY = (double) r.height() / 2.0 / (double) item->pixmapHeight(); - vp.rePos.pos = Okular::DocumentViewport::Center; - vp.rePos.enabled = true; - m_document->setViewport( vp ); - } - } + m_document->setViewportPage( item->pageNumber() ); + r = item->visibleRect(); + Okular::DocumentViewport vp = Okular::DocumentViewport( item->pageNumber() ); + vp.rePos.normalizedX = double(p.x()) / double(item->rect().width()); + vp.rePos.normalizedY = double(p.y()) / double(item->rect().height()); + vp.rePos.pos = Okular::DocumentViewport::Center; + vp.rePos.enabled = true; + m_document->setViewport( vp ); } + setCursor( Qt::OpenHandCursor ); m_mouseGrabPos.setX( 0 ); m_mouseGrabPos.setY( 0 ); } @@ -763,7 +753,25 @@ void ThumbnailListPrivate::mouseReleaseEvent( QMouseEvent * e ) void ThumbnailListPrivate::mouseMoveEvent( QMouseEvent * e ) { if ( e->buttons() == Qt::NoButton ) + { + ThumbnailWidget* item = itemFor( e->pos() ); + if ( !item ) // mouse on the spacing between items + return e->ignore(); + + QRect r = item->visibleRect(); + const int margin = ThumbnailWidget::margin(); + const QPoint p = e->pos() - item->pos(); + if ( r.contains( p - QPoint( margin / 2, margin / 2 ) ) ) + { + setCursor( Qt::OpenHandCursor ); + } + else + { + setCursor( Qt::ArrowCursor ); + } + return e->ignore(); + } // no item under the mouse or previously selected if ( !m_mouseGrabItem ) return e->ignore(); From 312126cc1b0b1e6ba2e37519fb2a5a6412e00c51 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Wed, 6 Apr 2016 19:19:30 +0200 Subject: [PATCH 07/23] Make the test a bit more "verbose" on error --- tests/parttest.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/parttest.cpp b/tests/parttest.cpp index d1ea783a0..9afa47dac 100644 --- a/tests/parttest.cpp +++ b/tests/parttest.cpp @@ -121,7 +121,20 @@ void PartTest::testFowardPDF() QProcess process; process.setWorkingDirectory(tempDir.name()); process.start("pdflatex", QStringList() << "-synctex=1" << "-interaction=nonstopmode" << texDestination); + bool started = process.waitForStarted(); + if (!started) { + qDebug() << "start error:" << process.error(); + qDebug() << "start stdout:" << process.readAllStandardOutput(); + qDebug() << "start stderr:" << process.readAllStandardError(); + } + QVERIFY(started); + process.waitForFinished(); + if (process.exitStatus() != QProcess::NormalExit || process.exitCode() != 0) { + qDebug() << "exit error:" << process.error() << "status" << process.exitStatus() << "code" << process.exitCode(); + qDebug() << "exit stdout:" << process.readAllStandardOutput(); + qDebug() << "exit stderr:" << process.readAllStandardError(); + } const QString pdfResult = tempDir.name() + "synctextest.pdf"; From 852e9586d1ca35837f53376d4832ba496f957703 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Wed, 6 Apr 2016 23:03:56 +0200 Subject: [PATCH 08/23] Increase version for KDE Applications 16.04 RC --- core/version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/version.h b/core/version.h index 3bb390954..08a1c25cf 100644 --- a/core/version.h +++ b/core/version.h @@ -10,10 +10,10 @@ #ifndef _OKULAR_VERSION_H_ #define _OKULAR_VERSION_H_ -#define OKULAR_VERSION_STRING "0.24.60" +#define OKULAR_VERSION_STRING "0.24.90" #define OKULAR_VERSION_MAJOR 0 #define OKULAR_VERSION_MINOR 24 -#define OKULAR_VERSION_RELEASE 60 +#define OKULAR_VERSION_RELEASE 90 #define OKULAR_MAKE_VERSION( a,b,c ) (((a) << 16) | ((b) << 8) | (c)) #define OKULAR_VERSION \ From 445b9f383d9151667bb07a167ec2b6aa6ae1b769 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Wed, 13 Apr 2016 22:08:21 +0200 Subject: [PATCH 09/23] Increase version for KDE Applications 16.04 GIT_SILENT --- core/version.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/version.h b/core/version.h index 08a1c25cf..b6104326c 100644 --- a/core/version.h +++ b/core/version.h @@ -10,10 +10,10 @@ #ifndef _OKULAR_VERSION_H_ #define _OKULAR_VERSION_H_ -#define OKULAR_VERSION_STRING "0.24.90" +#define OKULAR_VERSION_STRING "0.25.0" #define OKULAR_VERSION_MAJOR 0 -#define OKULAR_VERSION_MINOR 24 -#define OKULAR_VERSION_RELEASE 90 +#define OKULAR_VERSION_MINOR 25 +#define OKULAR_VERSION_RELEASE 0 #define OKULAR_MAKE_VERSION( a,b,c ) (((a) << 16) | ((b) << 8) | (c)) #define OKULAR_VERSION \ From 97db55e8501d215e96023efabfbcdd2d69a5cb9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burkhard=20L=C3=BCck?= Date: Sun, 22 May 2016 10:10:15 +0200 Subject: [PATCH 10/23] Add info about using custom stamps describe procedure to create user defined stamps REVIEW:127974 --- doc/index.docbook | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/index.docbook b/doc/index.docbook index 9442f4545..696ec7762 100644 --- a/doc/index.docbook +++ b/doc/index.docbook @@ -2356,6 +2356,16 @@ Context menu actions like Rename Bookmarks etc.) + + Using Custom Stamps + + + Create the icon you want to use for your own stamp and save it in any graphics format supported by &okular; + Click the Add button, select type Stamp and enter a name for your stamp. + Enter the full path to your custom icon into the dropdown box in the Stamp Symbol group + + + From 58231bae174424c0ced23582b3e17d1683c02057 Mon Sep 17 00:00:00 2001 From: Olivier CHURLAUD Date: Sun, 29 May 2016 20:05:46 +0200 Subject: [PATCH 11/23] Add metainfo file for kapidox, remove unused lines from Mainpage Reviewed by: aacid --- Mainpage.dox | 3 --- metainfo.yaml | 11 +++++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 metainfo.yaml diff --git a/Mainpage.dox b/Mainpage.dox index c1374b705..f38ca0019 100644 --- a/Mainpage.dox +++ b/Mainpage.dox @@ -859,6 +859,3 @@ the pages vector with them. Afterwards we fill our Okular::DocumentInfo object with data. Since extracting the HTML meta data would need a lot of code we work with static data here. [to be continued] */ - -// DOXYGEN_EXCLUDE = conf generators shell ui -// DOXYGEN_FILE_PATTERNS = core/*.h *.dox diff --git a/metainfo.yaml b/metainfo.yaml new file mode 100644 index 000000000..900446f0b --- /dev/null +++ b/metainfo.yaml @@ -0,0 +1,11 @@ +maintainer: aacid +description: Okular, the unified document viewer +platforms: + - name: All +release: true + +public_lib: true +public_source_dirs: + - core + - Mainpage.dox +logo: ui/data/icons/hi128-apps-okular.png From 55c2f4a3f7e17c81301c4d98a348df50cdd7e546 Mon Sep 17 00:00:00 2001 From: Olivier CHURLAUD Date: Tue, 31 May 2016 12:46:12 +0200 Subject: [PATCH 12/23] Metainfo: add irc and mailinglist for kapidox generation GIT_SILENT --- metainfo.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/metainfo.yaml b/metainfo.yaml index 900446f0b..ad91fbf53 100644 --- a/metainfo.yaml +++ b/metainfo.yaml @@ -9,3 +9,5 @@ public_source_dirs: - core - Mainpage.dox logo: ui/data/icons/hi128-apps-okular.png +irc: okular +mailinglist: okular-devel From bae370462c5ef6ea03fa7f5ad189213dc090fb3e Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 25 Jun 2016 03:22:57 +0000 Subject: [PATCH 13/23] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- generators/chm/okularApplication_chm.desktop | 1 + generators/comicbook/okularApplication_comicbook.desktop | 1 + generators/djvu/okularApplication_djvu.desktop | 1 + generators/dvi/okularApplication_dvi.desktop | 1 + generators/epub/okularApplication_epub.desktop | 1 + generators/fax/okularApplication_fax.desktop | 1 + generators/fictionbook/okularApplication_fb.desktop | 1 + generators/kimgio/okularApplication_kimgio.desktop | 1 + generators/mobipocket/okularApplication_mobi.desktop | 1 + generators/ooo/okularApplication_ooo.desktop | 1 + generators/plucker/okularApplication_plucker.desktop | 1 + generators/poppler/okularApplication_pdf.desktop | 1 + generators/spectre/okularApplication_ghostview.desktop | 1 + generators/tiff/okularApplication_tiff.desktop | 1 + generators/txt/okularApplication_txt.desktop | 1 + generators/xps/okularApplication_xps.desktop | 1 + shell/okular.desktop | 1 + 17 files changed, 17 insertions(+) diff --git a/generators/chm/okularApplication_chm.desktop b/generators/chm/okularApplication_chm.desktop index c88dc7cbd..670bf09b1 100755 --- a/generators/chm/okularApplication_chm.desktop +++ b/generators/chm/okularApplication_chm.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/comicbook/okularApplication_comicbook.desktop b/generators/comicbook/okularApplication_comicbook.desktop index f88f92314..5bf262e35 100755 --- a/generators/comicbook/okularApplication_comicbook.desktop +++ b/generators/comicbook/okularApplication_comicbook.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/djvu/okularApplication_djvu.desktop b/generators/djvu/okularApplication_djvu.desktop index 08ae773ec..3f6fc356e 100755 --- a/generators/djvu/okularApplication_djvu.desktop +++ b/generators/djvu/okularApplication_djvu.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/dvi/okularApplication_dvi.desktop b/generators/dvi/okularApplication_dvi.desktop index bab5f8e39..e7eb08f0f 100755 --- a/generators/dvi/okularApplication_dvi.desktop +++ b/generators/dvi/okularApplication_dvi.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/epub/okularApplication_epub.desktop b/generators/epub/okularApplication_epub.desktop index 27f96114b..2ff51be69 100755 --- a/generators/epub/okularApplication_epub.desktop +++ b/generators/epub/okularApplication_epub.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/fax/okularApplication_fax.desktop b/generators/fax/okularApplication_fax.desktop index 1e339b022..5b0335b7f 100755 --- a/generators/fax/okularApplication_fax.desktop +++ b/generators/fax/okularApplication_fax.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/fictionbook/okularApplication_fb.desktop b/generators/fictionbook/okularApplication_fb.desktop index 7d1266237..bdb3c2659 100755 --- a/generators/fictionbook/okularApplication_fb.desktop +++ b/generators/fictionbook/okularApplication_fb.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/kimgio/okularApplication_kimgio.desktop b/generators/kimgio/okularApplication_kimgio.desktop index 79cd9b9c7..ca6ee40b1 100755 --- a/generators/kimgio/okularApplication_kimgio.desktop +++ b/generators/kimgio/okularApplication_kimgio.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/mobipocket/okularApplication_mobi.desktop b/generators/mobipocket/okularApplication_mobi.desktop index 7348bcade..cb83b9e60 100755 --- a/generators/mobipocket/okularApplication_mobi.desktop +++ b/generators/mobipocket/okularApplication_mobi.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/ooo/okularApplication_ooo.desktop b/generators/ooo/okularApplication_ooo.desktop index dfb05cdf7..ffa7af48c 100755 --- a/generators/ooo/okularApplication_ooo.desktop +++ b/generators/ooo/okularApplication_ooo.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/plucker/okularApplication_plucker.desktop b/generators/plucker/okularApplication_plucker.desktop index 055c78a21..24321c9f4 100755 --- a/generators/plucker/okularApplication_plucker.desktop +++ b/generators/plucker/okularApplication_plucker.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/poppler/okularApplication_pdf.desktop b/generators/poppler/okularApplication_pdf.desktop index 75114ef9a..3c6aa7f24 100755 --- a/generators/poppler/okularApplication_pdf.desktop +++ b/generators/poppler/okularApplication_pdf.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/spectre/okularApplication_ghostview.desktop b/generators/spectre/okularApplication_ghostview.desktop index c21c9e92f..791d28f22 100755 --- a/generators/spectre/okularApplication_ghostview.desktop +++ b/generators/spectre/okularApplication_ghostview.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/tiff/okularApplication_tiff.desktop b/generators/tiff/okularApplication_tiff.desktop index e7d377b44..723919313 100755 --- a/generators/tiff/okularApplication_tiff.desktop +++ b/generators/tiff/okularApplication_tiff.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/txt/okularApplication_txt.desktop b/generators/txt/okularApplication_txt.desktop index 5b5042a06..a138767ad 100644 --- a/generators/txt/okularApplication_txt.desktop +++ b/generators/txt/okularApplication_txt.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/generators/xps/okularApplication_xps.desktop b/generators/xps/okularApplication_xps.desktop index ed4085ec5..357f9020f 100755 --- a/generators/xps/okularApplication_xps.desktop +++ b/generators/xps/okularApplication_xps.desktop @@ -137,6 +137,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 diff --git a/shell/okular.desktop b/shell/okular.desktop index f3ca26838..c9d065de3 100755 --- a/shell/okular.desktop +++ b/shell/okular.desktop @@ -136,6 +136,7 @@ Comment[et]=Universaalne dokumendinäitaja Comment[fi]=Yleinen asiakirjakatselin Comment[fr]=Afficheur de document universel Comment[gl]=Visor de documentos universal +Comment[ia]=Visor de documento universal Comment[is]=Fjölhæfur skjalaskoðari Comment[it]=Visore di documenti universale Comment[ko]=만능 문서 뷰어 From ea607664d21328046be33eeb568d45010970f3bd Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Thu, 21 Jul 2016 23:46:24 +0200 Subject: [PATCH 14/23] Beta version for KDE Applications 16.08 --- core/version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/version.h b/core/version.h index b6104326c..e18c99c9b 100644 --- a/core/version.h +++ b/core/version.h @@ -10,10 +10,10 @@ #ifndef _OKULAR_VERSION_H_ #define _OKULAR_VERSION_H_ -#define OKULAR_VERSION_STRING "0.25.0" +#define OKULAR_VERSION_STRING "0.25.80" #define OKULAR_VERSION_MAJOR 0 #define OKULAR_VERSION_MINOR 25 -#define OKULAR_VERSION_RELEASE 0 +#define OKULAR_VERSION_RELEASE 80 #define OKULAR_MAKE_VERSION( a,b,c ) (((a) << 16) | ((b) << 8) | (c)) #define OKULAR_VERSION \ From 04908dba2f93842a0008ef1ba8c966621c615f9e Mon Sep 17 00:00:00 2001 From: Olivier CHURLAUD Date: Tue, 26 Jul 2016 01:37:54 +0200 Subject: [PATCH 15/23] Adding RTL reading mode feature to okular Commited on behalf of Fahad Al-Saidi REVIEW: 125397 BUG: 325650 --- conf/dlggeneral.cpp | 1 + conf/dlggeneralbase.ui | 86 +++++++++++++++++++++++++++++++++++------- conf/okular.kcfg | 3 ++ ui/pageview.cpp | 31 ++++++++++++--- 4 files changed, 102 insertions(+), 19 deletions(-) diff --git a/conf/dlggeneral.cpp b/conf/dlggeneral.cpp index ad389f392..52abd4350 100644 --- a/conf/dlggeneral.cpp +++ b/conf/dlggeneral.cpp @@ -26,6 +26,7 @@ DlgGeneral::DlgGeneral( QWidget * parent, Okular::EmbedMode embedMode ) m_dlg->kcfg_SyncThumbnailsViewport->setVisible( false ); m_dlg->kcfg_DisplayDocumentTitle->setVisible( false ); m_dlg->kcfg_WatchFile->setVisible( false ); + m_dlg->kcfg_rtlReadingDirection->setVisible(false); } m_dlg->kcfg_ShellOpenFileInTabs->setVisible( embedMode == Okular::NativeShellMode ); } diff --git a/conf/dlggeneralbase.ui b/conf/dlggeneralbase.ui index 1cf6ea955..6486747d2 100755 --- a/conf/dlggeneralbase.ui +++ b/conf/dlggeneralbase.ui @@ -11,7 +11,16 @@ - + + 0 + + + 0 + + + 0 + + 0 @@ -23,7 +32,16 @@ 6 - + + 9 + + + 9 + + + 9 + + 9 @@ -31,7 +49,16 @@ 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -133,7 +160,16 @@ 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -176,7 +212,16 @@ 6 - + + 9 + + + 9 + + + 9 + + 9 @@ -184,7 +229,16 @@ 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -222,16 +276,22 @@ 6 - + + 0 + + + 0 + + + 0 + + 0 - - - - 0 - 0 - + + + Right to left reading direction diff --git a/conf/okular.kcfg b/conf/okular.kcfg index e75861e43..3d60b04a7 100644 --- a/conf/okular.kcfg +++ b/conf/okular.kcfg @@ -96,6 +96,9 @@ true + + false + Name diff --git a/ui/pageview.cpp b/ui/pageview.cpp index 3ebf7dcb0..bb540cbb5 100644 --- a/ui/pageview.cpp +++ b/ui/pageview.cpp @@ -223,7 +223,7 @@ public: KAction * aFitWindowToPage; int setting_viewCols; - + bool rtl_Mode; // Keep track of whether tablet pen is currently pressed down bool penDown; }; @@ -335,6 +335,7 @@ PageView::PageView( QWidget *parent, Okular::Document *document ) d->actionCollection = 0; d->aPageSizes=0; d->setting_viewCols = Okular::Settings::viewColumns(); + d->rtl_Mode = Okular::Settings::rtlReadingDirection(); d->mouseModeActionGroup = 0; d->penDown = false; d->aMouseMagnifier = 0; @@ -803,6 +804,12 @@ void PageView::reparseConfig() slotRelayoutPages(); } + if (Okular::Settings::rtlReadingDirection() != d->rtl_Mode ) + { + d->rtl_Mode = Okular::Settings::rtlReadingDirection(); + slotRelayoutPages(); + } + updatePageStep(); if ( d->annotator ) @@ -4332,15 +4339,27 @@ void PageView::slotRelayoutPages() } else if ( facingPages ) { - // page edges 'touch' the center of the viewport - actualX = ( (centerFirstPage && item->pageNumber() % 2 == 1) || - (!centerFirstPage && item->pageNumber() % 2 == 0) ) ? - (fullWidth / 2) - item->croppedWidth() - 1 : (fullWidth / 2) + 1; + if (Okular::Settings::rtlReadingDirection()){ + // RTL reading mode + actualX = ( (centerFirstPage && item->pageNumber() % 2 == 0) || + (!centerFirstPage && item->pageNumber() % 2 == 1) ) ? + (fullWidth / 2) - item->croppedWidth() - 1 : (fullWidth / 2) + 1; + } else { + // page edges 'touch' the center of the viewport + actualX = ( (centerFirstPage && item->pageNumber() % 2 == 1) || + (!centerFirstPage && item->pageNumber() % 2 == 0) ) ? + (fullWidth / 2) - item->croppedWidth() - 1 : (fullWidth / 2) + 1; + } } else { // page is centered within its virtual column - actualX = insertX + (cWidth - item->croppedWidth()) / 2; + //actualX = insertX + (cWidth - item->croppedWidth()) / 2; + if (Okular::Settings::rtlReadingDirection()){ + actualX = fullWidth - insertX - cWidth +( (cWidth - item->croppedWidth()) / 2); + } else { + actualX = insertX + (cWidth - item->croppedWidth()) / 2; + } } item->moveTo( actualX, (continuousView ? insertY : origInsertY) + (rHeight - item->croppedHeight()) / 2 ); From 519fddd3a58233616c673b39bb1706282002f1c7 Mon Sep 17 00:00:00 2001 From: Yuri Chornoivan Date: Tue, 26 Jul 2016 09:42:01 +0300 Subject: [PATCH 16/23] Update docs for the new RTL direction option --- doc/configure.png | Bin 26691 -> 28230 bytes doc/index.docbook | 12 ++++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/doc/configure.png b/doc/configure.png index 8e78819d1b4e9bf50e111a907d3af06b651d1b36..96ce2ee5aa70d8dea69c07063733b815b04552e9 100644 GIT binary patch literal 28230 zcmY(p1yq|)us)0ymmk?eC86 zKOF4u?(OdE@9y;NJnZhkci}&FwtxKG{sI57wY{~u^8D^1tHJ!s_Du|Dbf?_sab2^8EMz z!P4B!!uP3vn3-JsK0QA@iNLq%%lWAZ1m-3uzE6yPA0PcbF*Y+ck~DTYH9CyIKQ`Eh!2e`M2YW~V75m2r`w*GYf!_b>|23OJ6#IKd z`~OcOGJT_cJqQf<^$h(d|K)qT{-ssAHY@kQ3Y1ENxSEA~X&yKY=7*a7;vgE^U9`Y|DMQZ9_ z>AutJP#(0V(&4E{)-FP^3OReW@ZIarIZx`6YO!`tC$wkqXDS#MR}_uM=y^$?H8My#u4+ zVRvKXM(v7sGOrVXa;%?+%vpx6NcV-daVeS!137YvMxNb+Q^_f3e1F$M zgHmzY1c7B8KR>vr?_UaiE4dR%erZN--z!r%Cs>R-EG%H3qNa`Bpau@td5GYY> zp~EsHKx#wM!(_?aKfZfeVxFN4C;ADKu+i8NgMc7096%lrm3?oOPsUKv3aGjc7}F>C z%`od0jiFh#lYUU6wTx<1u*!{`A7mL)$1>!or@^K9q2E9@T48#S;3cV9Z2SM!Tyc?UnGJW7gM;MzA!js9|Y&P+fi^Lg73J zm|7e_ha$l`r0%lgeDq3sC=qfY8?ObrK_iT;z446Gn9H|{L>gKqxhLOA2kUxzelpOQ z_Ib1({^H(A2Y2O7FWwmHd!VwP$npRAa{Mkot$_S?-_IRGF^5IPdi*2Z$g?w|>@(@IC>m z9ugZZG#Ns;XJ@L$+)z9@f%F@_^9m5{nnnhR9^@)F1kO|W=`N__W1RY2^V$bK%Se34 zRbg6@=rmYT`v=MJx0f=Vr#I8!uE4`zHV-yyA1j9E{#<>f)pEYAx*5LtU6-mQHQuz< zCC#@Z4M#j4Bf(BO1Ozql>^cnW>{^Rn>*-wSb7nN5?Y#)L=N+#X828D+=?mZx0)+zm zWcB_u=K%y%Erf}fedr3mAKTeZa4gOIY-Jl|X;ZV>tEC0+td7FpIG?bvOZn!15B=C< zRMR*XuqLDMdRM(g?OC<6Q|sA3S(5EnG%Lr>Nm1cOP0~%{fO^2I_pd4&PdHB-?OJ{T z_kf2a+hv=|efj47FN(^aPBhK@mgn#X^IigAvGeH%y)wTOo8WCz2nV^-g(ic+)E z1qbv=`;;c?ybhN?7M)vo+@WAv!d0x>vWw7JB(g>3oSS!Qf{c6#rvLS<-(LYi>bEB6$xqDb2-X9Q! zc@AhrlUu>=cXqe;Qz0=nWmq<9yN$ABCmll%@^zGz@TKR!RGwT@3yF2W4r93aZC&)| z9z9u*3k_2&&4|30v;B4&OCazT&|DZ61>pvxdG_97X;)^~4J;`WFpc3qM~i>?l|CPK zTI>~HkpHN}Z%=2K6?3JPe>ca50(2u$S*S{yGpq{b3i2Ad6Sti9dLzI)`Xfm~fqQv5)>-1T3I|o!B3mWzsnf#@sPuK3pZwrEs{gD}V(>VIx z;P|=9>eT4?4Gvp0g)*Qnc(DFK@rDRrh7__;>~WW>UkQIfMfdBtp{sm6?CG0cTiu_m zS9)X>voEg51J{i4q#kl;UrwW;fx5;am{Ha$n=J#-4T>$X4S z!wz=t{lAVDd+-s^E?JxTV|R7>~8WNx1g7}*pDGyN^X3*6>? ze)Bpbtk-M!MEm*+h+w<7Oa<9W5Ih}0Xcdg z^HAN@-)@E)Up&ttqeleKcfSUPm*g+3&A8-uusfZed7QLh%fsRk;AMHsWJ&dMv_Fzx z(wVfWU0;6zb3nis+r226k2UWy^@WvbW?Rkvk}h-irMQEKy0bTh`rTl!4mPA1&a=5f zEzT+8@I9;53 zJh1w;o#w!C0m}1=(8)I)^c00Ap6vEiidr*4l?*djR@8~QKh8b{-CvilcIKEJe@^bb zmwrn1Ir_EXdAo2_%dXejOc0zV_~X0=N@4kO=>8xz@*xa=N5SnAEedG^MQ~=IACCU! zj8y3$dV0ejpAq!rH{@aP$|=HimT#sH<(&NSg_JaF?oVXMwMf~*?U^6y41zAn2bc! z8%l!~?kCH+V#@I8^$@w*EWYkg&w-g8;dA$()XJ9QfwO1K$l&Hq@!nSQ4s|Lw;uq07 zST{vwugS^GLnl_OB_H_AqfzzNzs9E#oe;c;iX(b;6As?_SmSf3e<*Z0FJto@dl4Re z{PVz_!%8!A4VG6P`$El|nS@t5kd|5F#k*Mu0X1x3`*icmc~bcP&~LAYz}1jvq$)MJ z?8at{o6LzrHDc*Rz z)&Jf`5YF4~1jT=&T#=>{iIFAs+bU}G@5(&<<`N;Sgkdf?Q$lls+s zSekk#Za0D9fz35uHAQN}&WM!i_?KIC`Q)z&!_il`4v8u4M87naGYRjAX1|f7SZ$?C z;gVac-zDP=VLgDNdBJ`Zr7mNC}S5ik-ujPkoi_l!MR z9A{K-z5^Oj$kqPe)6x6s=Rfz4g-bP829JYB^xY)mWx~Oi)?&g+8G+HUWT>Qsx$L0ik=*!jQlVx z^_>sfPU`|y?e)62FVjt3?91U1d1Z#3girjjD@>-J&|}!*p;zd=t#1%ZD#CNXZ7|M~ zH1gR-(|gR`v72?MN%Gxpetw77*Uv`gzql(7pk5CPiGS3Za_64Sg!zU=ZO!?$hk!d- z7apChR!GtRbS;Dns#o5GWAt~wR!>Mc9o_wl1Y_zj;IdZK&qjaxM& zQnvQ_AeA5`P%L*+pC{`kIY~+MHMBmPTb>x5Se4Zzl3timG-Y!e0^ux53v?D;@3T64 zr$@~><()-y81`q0R9RH`CwD+-J-3p6k@LQFeU$Sbe)(Z4=ksXfJcDG$Wwp?LLd=0qSnhNS*dx{D9Tk5#dhT z@uaijzNAnE9cZV`U5-`vp#E06-HKe#VUv{?(C*u;##_7;LWQ|@9_*wpO3uS4sfjq^ zBi1=7g7v7pZ?e>VCsTuYTCjw-JtKy>ns;ymf~ZI0T*jI^VJ=gw8z@WuErGv`LV$Oo zVf*PGe3GV~)!i;f%N9~XIZi0`d^8O`;P=6w_4O<_E^F~I!EHx zIL7$}2O5r?Qhf8sg4U27`k{)gU6)#ZFuLv_s-;xFbg!W-u}q&cq$Pg=D^xd4u)W0t~pt}lprK$lL4g2dCRft!R!TVRD=1HY}c_E|szT(6C6GsawDk>b67xHa}5N`(x zBQE?GexY(D5ZITlo$*hO_%f5BE4sMZ2Tb0D`~A&?DBpAai?htKEqMAQFuDiN=_TPQI(Z z!e<%GAbDJvt}4!@*gn0qd3r0wSn=?@Ecf06wz{S#L*>kDT*|ufO*9y`rNxCWj*G-* zyYltwKCnYhWweM_+HPLX)pI?l!X1D9qmH6zLojWWVik=Gm0bK6NZfa|K7Mdf0f2Qz z{?8_DKSeewvfR#`cs~AlFb!5@O>mD#tG``FmzTeFIDLn?iZ8=OMGzShxp=@pU8{X! z6K978D69AT#)(tG%Ym@%jx*$ah}!p;oQhS7q`%Ui^8oCN0%ULLO(k6CA&PI*44F0A*u0jZfiUsI2_sBm)b=+;caC&2RZRIb#qEiFImDAU!HxT==>bB$GCIz{R_LYYJWkPhQDM~R&L+Vtxvni@4F&fkbE^ok(OSR z?<(9*6kl~?C4MnQSt_&C^)c*;6FhU`zE>ws57G6Fhue}wzC07AjG-5v*fw4)gY!zq zf0_o5Up{q5(F;(b&+2FgcA-`)tp`lYiawYGh7Ko!TpatwLO*|3^sKjQb4$m>+aj{; z-+2A2v!crkBC6F{RTFe@`$jILYAiDajz+(i`D)S*;+G?}F{I)-$3MZ}n(GalA#aGC zcZMk>ZMD>s4Dczk>Aa-miolV>rggmqOE$;ht6s%RQZADc%wVlh66n^&jA}LQmyS>q z(;S531NKsXi%0&wjNw$Kb}3Gu-9CZb8+7Uzvt8U6Hsy^zF4qq4V2K)Oa7Ir+HIPXv zN;AhFOGH@lP>&xI%6<WduzZKJqCqX|8zfvc}PF|x;Dq~T%l%jj-(1!gTN{R8Q!+2_PHAF#|kW`bcRLmaL&3ak>&b3EP?^xVADCur7t2LE-u4zUTXD_t&NX8XsQ{# ztWky)9-GQ%8&8$*865kv-5YqF%gdV~W?I7pyJS4txGXuYG8YdduPZch6*Nf`ks45^ zW-K6QnpwYJcTT-ZnRypNmXI=cLGe5_?c(1G?*Igydu@Wh10gxmE0?Z@La*&vBS3rE z7+kC{8t(|%3v;5gkx$wV9(i}zhb#v9O?U^TXatYK!KNl*;GpL|h|QgJ-7i-s(^Yxg zi0w#{DN+d@x82`3hS1X=mM^p24uDHzuCC{!P-ZAy>wdalkNVt6O(8sN>+I^%*mJ_$ zCJl?dPKnExXLYf^t=+1+ONL2B$iUTa3^(z((ZB$x?xxduvh}mAyqEoReeJ6lM@HTrXh7u1w=K|xQ7NJo0k@}!AF6q1ErI_OKu8>^}-#7q{J!~ zo+K0K$=D;#btd?*&7+a)cuib{lYg2BZ<~WAi~gqch2EPN`3B*tlW}OCQ;++nl@}M8 zM5uQsRVxFtQl?{(jBHS4Ikfbk04oRXiWOzQBt@28{LLd|bz|D0=&JD1;0@!g)% z$eENH8-00NGaNGK0MpYzBA9tib#)k=(8=n#+yDSd-3)h0B2{mjR6!{D^%pmaJ(bo~!w5Y_r1mneb>{m{} ze7jgftGaw+Vq{4=SUS_0-&Wo4)Q8}@&4LLyDK98r^xec0xh3?iO#N_~dzJBfH}_wV zoUdGW?C@*rW3J^GwM`X7o2iH;R>}|GObK9^llh{0d-Bf2Fy6 z)rn2|;3+g&mn*WO7!UORW-gv++02_Ku-}^&d&G zn`*Gr)i0~Z&D3BPzn@l*XD(fUZYzB;+EQFHny@BI_W1|ih@yd$FI5a{hcsK#_4D{0PCA2IC8Cb%$TY~ zXrs&xQS@@`H@MEqFZ-H%r}@%|zKwS9xFbWp9)E(@l=$G;;Y}NZ_1Bw{)E2ppXU!v%u?l*s3gI%$uJ{;e;W>8bpM44wtPad# z{F}-76!Ee&`Cxl<4C$ z`B*wf1q0`cKyqk{m#g1cx>sj`AHwCW#bONvbw5f&ijo}WL>%W56BJh^ z3m`H<^c;_StTk`%)TnMfr6Jy%uVqG$CZnt(6dm$LWxh(5x4Ii0udQBk*ls+2;DHq7 zN0LkHvlO#i94+Eq9Rdv=XG-CD78lPeAGWp{69m6M6G#xr=R2a{Z*x%wyjgPYXdn{s z?S9GIOyeEz7x=($-e2jb;g+T*Ntz`zqP%;^;~=C>Lm-iF>apa`X(er1n4Q1h=A>{zvszoUC=4b~xn zp6=TF+%sVEsARrPa8(V&=Q+rt-?MhIL=q)1o9KIKzVTd2-A(zn=tl{=(VL60JCn*y zoj`X_QSKU&PurV!HP{99%ZtTGiY-Mpo>k;>K=#O`)<2j0MtI>)>t3LitkfR{iiz?= zG@N~Hrh`@?Wyx>Y2+Yhs-qm8O;4SU|Q?#*zAYQMzpD5Z_O`zK%)&e!Ty=gfr_80Gi z&|d{&7uLcS>qL!73W@abd&il8yjOL*yB~w@Ut^sLagOhb0HIe5MUJN}VFbK8ov|0?l#{DQg$1m2a%`40%nXGijdw+3WGtm1=^j8ANbKk`O6i19hlobe!e-;!ov-3euqXy@ zU*Fc$KY_k=$dqbWKOO8H9Nv|Eu$|=+%SLJ*i}@;+?Ya4@(#yc7sVxzZJ!QYXGQ}8> zdyTFF5`}C1<>}#P)rxsBwqSN_VkA%tGi`!p&;`$z0vGYzF2or3@3O*S>z7mOsP2pD?k6{WSVjuWl7Lp)sSxIW(M?Vtrqv^lEr zhz9ZJD!F*P-|g$Tb7=@UN&%{;tMQ5M>M?uMeBR`eLZA zPbr-ecbLkufA!9E9knS<9@wprPFV^|(n4u6PWc{=ahDGWepL#4p_cM{zznxW-Sqg< zA4E&m1n1X=>eX|Xys-HC;YDi8@{X_*NMxP19LAChNZoBWR~BDlVThr6-OeB+KpBB$ z$WnHh)%bQL{7Y7|GffJqxhy|F)XO_$nqAWJBpO|yAbcETr+wf+Vvn?rG{L7~SS>n1 z?Z)r*JuOuLcP@$ek2Xb%vFX&{Xq&VIq&~~;l3%3Pl$w8|k;q;nPvQ*uH{Gok^)|`3 zQ@Y&fa2Q3~L=ve*zzSYutK$eXTFs3w8k5Ky_p=#y`e*uKO_bi>=7b;TJD|(njnt0F+SPF0R~4Bq(<|E zU3-)kV`E@JVv#gJ;9Ytm`s7yq@`5$+x()A&MSR<7G8~Dygbk^Em`v*pk3=~1hCq9> z?ryK7cKQ3_!Y8tAO`GA%jp(a+U-X{(U7|cKIs@}5 z+`sPUyK7A(^AKVfE*rK>h1u`8q%^N{1H#zvWa9T@MKjTD{q#Q}LKe9l2THtJV>|WE zN;*H0M%x%mVPb7)XDnio!h-_Tj<4)(Dp5*M+C$a{fq)c&n`5X_0IlKdWj!_31bjt! z49lol8eqg|SzYZT09F=?+%X5%>u~==eueF=FPcTOh~Fzq;f#F5iEbLk(k9uV)ywN{aF5qAcKVRpxK0J zcApJ^gW@j!b*j&2d38Csp_ zfvFx33mVxp>bFAnJ9L-2xGm2n)l`cGd6;htQ!MW}=b2XPXChBXM^Z6G=wlclVo&LY6f;NEQQX$O)J3 zg>*5tc-{w?)21dTfkx9wN@0uQm;`U@cE(@4EleV=rp6ye2Sf%`=fEa0T^N?UO7?X`!V|MKxL{Wfds~Hm4EBj>sqOA3(?6Kc|CbF z$669pzeBBPQ-|#?y2-w2uou@`uqre-c&|xR2k%9%AdAOkkF*?kH`Zw`nO%Y7n#)|n< z)E%oj7`utw+a29|S_q_#pdC<%Y32Rt?~bTu1QluKWD9D_AOa0e7faGYOb!05&pn!3 z-G9$e&5jjZbfG2V@Yi(P&R2!Tok4%5T~1s-w^hO%2aNPkVR79~&@Llu(1&8x$D3dT z)peD9nsu%7ljoL}csQ+mx;YUOCSx>61GD26;paVcTaNHdA!4P2?AU{#qcTqs?(Au~mSOoeO|bOIB2Q~$># zx&i-Ed~q$K6fj`f{0A9e^PLVb>_51oEY{dFszc*tBiGCt7LQkjo1goIQh201rgmJy~bj~-7 z&I9P@OILTdo0cjuHuXD!dNL5!*Kr2gA&=t3`~24q{e=vT+DrwFIpO)OeeZAl4M%$&$yI@awK+SJZ_dHm_vZQD^JCTTrTiw8P z01dthzN&<<$}rqREpF`j#ky@AgW8GXRTU1xWO1Z`f) zSHfGu=q6Km))y}rlZ5@n*#X|U+kUkOp2dfO30Tc510-dC^=1CN^?ytlo_7Bt_kDOE z9zzSxJIm={U?=&7MBMc-Tm0?$sm&eBIY~EjZU_|qVkx=vJa4n|=raS&D*fH?G<=0q zn;DQf>D~} z!f;TXc;EmEilT*P>MSSZmomJ&M>VbyaW>Bd94WP>JiD7lsD1l0=NhGC{}aF~YRYCl z$t^1mFfs`))n?0R60V}vvV==!B?Z^Oz$neTVIoZagy2OgE>weT&dRxI@FS5Fz`H3- zL}y6J^Yansb$OSG4XOo{YzCFG`VZX#Ws)&NFgidX2Ekl_cJ8TpmO5&djQeB)!be&y zYGx_5+Gk6s7}lm{rtZ$`4t#M}$V9<331S6X`sz#&GP#rJvI z(9ceY{h2uNcs`IrOt~B`6I^|SFyz1V0`!VuaC&QMpm6<)Oi7}0(Fem)8Effw1Wnf2 z8ADyU$EBU545X(2R=GGKINc8&fDzH?zb&)qzHL>;&d*dYnw8E7<%rPm?*vAWS9)u< ztnH{_2eo*6Zd$jPPOyHqEXl@&a?FFXS152*zR7%rfv0U=-r1kkbdc>I8y?hYR-~gL zzK28e{t;-BW8?CBbbx#L{ZD{9V=nB-sk8fa^mK=`wRSEnGmNWtx!uzdO8lBWm>P^C4Ov**kZ9DC&#t@?*bT6XAsve|u`=uK&$QO1F{vv_6c-`QW{7K{oPDg%aRES%0m zzV=}>@Dt(;Es~UCSTh@>h6z?*L^?H)rn-+>CLA^Mt1DW{&=DcC1XN zb~pWz)NUhR!n-4X4!oImI8r zM!JUrQ*052EejEoQ7t1%LiKt`Wu%n30}_;Mm7UF8tQ{y#sG}l@H~6a72&(LiPU2W7 zA`hEgQaW%fhFsz_9b8drukKGLGgtc(a+Y)RNKL52BJU&kuS&E{(#wzC0f%n^pS(Sx z#4nNdt81FU*ojq${ zomn%K=eabV6^Fl@?vTM;Hs`*}qKmv}qB2RwV%uZg=l2&8WXMTogt@W3Fm3i<*Q@~~ zI+$3Ss0=@VyE9*mSmio)lT(rqI_#nvV+rV*WU3Ki?41#~Lm}c(@%rC6WkI&`LMhP7E0rjl;7hD8$6pronRfeH>s< zXDi8pZE;lNz)aN1URMCpqVI!m3k-wtu#l5680AA>tnWb}$FiZlg-?u`|)zz4cdl%C|eI+LV@k~Kk>P&h?`wn zHUhZ#WsaI#DO3c=%ruB(dclY%MQHyoaLC&(mdno$g}?uusv}C%onC(Z-4Xr_d^da% z%Sa@ZVFuh8|C`1GjO~gyJ}PT?u*wZtiSbA8ZG11aF~-ZDDC=lbx7aO8%hP|~Z{LZX zEO>NIxAzvkg0no3$BNslAKO z&~m$A8Z_KfPKBwfxBN3`fe3>ZnQ(k`QRdlP&#BOCt2I?v`)45*n&x*#F8{Ug)f^oc zc7&&2C@V*}eH%2|&iu0jc;ht|Z2cuUE9`x#0t$0o4(#uL`mE`J`A>0SZdPl^D!1Zu zNKFA`7|r#dCd2F55-l4nOS3dzY+?<#PYDi)$Ak0FHWB3Kj$sulG}&g3Bl7eeJzby< zE9drO$fkDb{kr;nA;P-oi$hG=6SGc%J0ff@U5LwGDiQw!MlE?r=WT&UUkTbgJe!cg zUkZ4mG*?bsJ*$(G$`8_pf}SED)Fz%3dQ$n-5Tzix2ysaUZ79-F-GH?{>YJ4AmI-VD0sDpp zWni&J0?apZqwCbf#M93>i=qqG>u1s{yBneTBwEBb56AerV7>`n1K-db10H?=WRw*( zqop+xukS;_Gy67~(jJZmvNC?X^zT3A1)|@*M(C7|cxVND1QwoCTC}Gf0?R~j{rSuN z=I;~HKE@LPhB+T&-}nO6BSVN;V25TP8g#%ZqSjwJRU+J$;Z^3i39pSOd0z9K?E1Mk z(f$_UPLR*0!r0j@DOw%LtkvQ~XU{10YpOU02*cg=-c=AZ5)X$xM zch=pWva9BwQSyNR5~1YX0|hav zG{L^E@W~#p{8x#(VNg`puSC#z~&0u?)H+>t2Igj6%umTxz zu>M+DEA-N!{3ps}q|;>K>)#}0vabf3hc#xNW3F4$m}AkLE{@{>&MvWw1Sf!fGP3<_ zSbzRNA0QV-?I3Kq3U^=|LdrAcdI4$TJpLqmv?v({r0~1Gx22DROKkfhHKJ0Pyu5kC zJlax!6(57?@|9}Xjzl|E4dorWZiZG~EeSRn_(VnaStMfh6iKa9m|W{yI2OUsH25mZ zhSnrH=%=->=!6H>o|j20=o>{cEFccgR!(yl#Yo+)ch{nk# z5)WfXR~nqdh=N?c?fUj>wo-dzs|Fb{8086cn<@OA3T?kG^9Ye+~`RhkQkVHWAhM%p8P53(- z?psZE%d8*s_B3fu?;n(l?LvJ2L{~2#)PRcf(!f*A{L~z|M0E`(zZW?$b zHp1;nm@!4Lnl0<0M|WD0K}Xw&T2VeBZRuv%a6#?zTRWbpQ-ACw@Yu4M%b7!6wy8!s zI}|t%@5=?OmBBvdYD4|z&HKS?9e^$JAvn!oqlpG^lOehQwr2^&GjjCgYb0L5LRSls z2R0M9UQBcVf`e>G0ME`=w30Zh*QQ-kcgKA_x~$<9Eq52q8J~d7QwOgFSm*H2QQ-nZ zZ#p_*YhN~QjUU;)=H7UUQUgBUuP{+}V$SfU5hH)2`bJPD58T{fjn0EbC|v;??)N65 zDSoQF)O$8AO!7E83d|A4I0|7mu+aela3cmkve10m6UGVE-*hzEMk|Z& zzxObY8=MPew{4&6XE7Gjm_;sov@C_yVQybsH;dMZb~H975rxEsRk@1gHH&iO$EM-1 zAdD{w(Na?F!T_QmLr!#ckEAN!OEZMerPyfhVpK+ZLUJfd7pp#fNz_TX;fQYBW=a1G z$*8!K%n8IWNa@ZC{K$fY8V4tL{&TUaQ#ypJ16dx-EH91 zy17@Ixg<$BA`1B@S*)PBRom5%Hj7ibL|8;m5^{durShTnwaBbp0)eTw%2=AB+P_YA ztnE_RezjhTDggiUC3behlXrDYvMjBPE&d)_6AON}s;cJkA2p?Z1yF2m;wkPQfv;{` zSA{Twd9o_mrxuRb&P*p3bgi4^^O@-!t_w-6ci(?1+!@=!YfAg>?PX04RcS21EHYj@ zJUl#hFx=pFsdC|*&v^UMay@}_S{<*HM3lHlmt09RfZhY*T+;v94;U2kBqMuuP8!StHIYJlX1uoj6CcpypTdZE&XQ2z|vA?&=Qsr9XG z8gA$QF7ANfZkV(_E3(~YQUX;rOyq2#Cm!dJM#*qbBP)xg4Aqp{-up`385ks#V>5ti zLcL26T7Y3x9B2y7DQ|nD!Z2hkZd{G~Qpl$bJ2oSj5LGV&q-C9-oB{$j$TRQJK; zkpvkSG!wb3wt40euqfrXf4Z*)CfFo6h(U^-h#}E!lOcI~q1Vq=OCIbO>55j5Lc+&1 z>LnnD@|Jef1B`Gch*bR47Wu_Z7|TAJQbTe)N`gBjf<@ksWe+OoeL?lMp@) z(%e%+s!$^$Hbtf2yk)h7Vlg&c|Y2*PMb`w^}EBG`xa&bmp6VW?C zE+vn#yhcXi^Jd3Ksd4Ri-9gOM>h;{2(cxuOsS&0Vg@+0McMpwdZ?CvZTaIeNs<1n| zm!T_AK`{hYRh6Sba92yW&edoz%3nM%ovEafHuTmY)^*b26HG@aXC2OtV*2>jDOVO+ z5aw)i(K2TTYPvIX0@=yu0V0cEU^k^*isS*NPY_(kyV+CV-$@*!i|zTAEAC6Sm07O#Y_;WV(Cxv>344hibZLej?) zW#i4qZ`EIb=1D;Ac&r~X%sRc_)NeRiXNn!XjSfqG36Gk&OQW+O{Rs)4K_vhlsD%Ek{H7h@oYZoccO!YjJ4!H`w{c zkX+Sr&Q}X}-Q)z}&4Z{cG@-7{08})}@MH!3{8xlz{RZ+?)IRyxRFu?+i-o(lj&8|( zerKw#p05;XKxAqu)-}F9`dqoH0#s4Sukwhf?J7ijmcYwDUK(i)jVZB2;B0f=wK-in z=Fw&VN@2mz(C0Ip$>BQxBmbeMSFO&{o4O{Cm3FzkEIOFgN!(i?A1zFl@G5PNXF0%C znf8IUHn^3rIy6TDH#}eWz)KrSR^1Di68c;NGuDo+US3T03Jmalr0 zL?W6=+&^g4%+U8X7&<`BE9Ctunxx-gika`4=OI=iS}P_3X-C>eZ^^+qN`w5fi*@S-7%)D1QbjIJE=d?b(~x6 zZ?M~i8cTmeg9_CIjlOZ~Nh(~b7%-h^&rd4rgIPAgzJC--ZMX~W1V>mv>R=CFL_hGp zN~bhjxs%?`tf;*+6H2YWgXW9`!H33K{r_f;n>_*akMiX()CtG!$_fI-*J_9S!- zWkAi3T`K96on<`GXHSF`2h+mceuo!4A)E#KBsDhwBNGW~Rptk)VcEXkA27>WUoOzV zqZ++vxht_MO@VuRJS8A*)H6Y2^R+8>p1(P{gYx!>093($Li;MaQwo<_BJ1wZ8NcD4 z=oLq3^FM`pkOI!|-Rt6A*w1w(D`6^TyzF`di}9=QjWwIMpsP7vPj}^e*XCfla9E_4 zm3DDNN#u_EMMchtZnTU&)fjk$AR`{Jov?|D=f`(z@YMbN96WcB-C?U2bjRsMBf0Zq>RD429m4xg+vbkdE6(Psy}Q|* z0Vo7Lr1k_pYbo!QB%~v57kTX6&4KnlHBTt_74dlhE$(^n2w6|K41^Z(Um6v)F?|mo zJ~@DmvdzW!r`6fn%b(9*pWIg(f_+{Cr6tWb*Yh>dGp%T8Ew!L4*T3S^oH~bw3~K$V zqhOJ2Q$U2W0`o1S+kV)ZaF3@p-W~j&0@yiud@J`Gk`R%J`7h*+ip4cPU`k!Afj0vO zE$bB8nrPy=fg-A5K0w;fG)gAb<94vun57s7G_RW(gz70-LIx+tWVy*Nv{Tex1h5(> z7mi(VG>{|F8|tOLC!D1!l7Jwb{1?4=z0r)|?}&rC5VdL-aXz1LcL&rw#hBAeU?<3Z za~#9^SSo1;P&mPdUaL!Crh7q$!7B0b;~FMY?2M}vRk-@uFOEe`Eq7e1CWxVkk(AM* z+R9dS-keyf)=Clg8a6URiVgryIJq>o75Vy7VV^^p_ptNh3?BXz(yQ)v0khEPPdFY$ zr$i0#`${AreZcB54ptVU_~Zj+@q|h{pZc&SJVQnLaU_Bd0!e1dh;TRD-Q>}>KBVLw z9Vu09RewV_^xC%GGOX${H8jMxHhtrvr-+|A$pggb`Og&K%3dKV;wJNQ&*50dY*_ z6wO0E53qHNv20^7X#KyIz5=SPrfC>2P^=I_(Be`OAh>IBcemi~Qe289NL!$|Qz)fC zaf(}@KyfWainO={iWL3xyx)Iv&Q0!|o4GTyJF`2xvopcjuUOx(!k`g!PWW^NA*GNt z^9KNMXPdk;Yulm@>76Q2YFWoQIq-%t;g`;kLIB>Y3cwWZ_Maxx48Oz>bg&t z`xe%-EA8J^&!Sym)&TR)nu(9_JFezn8w9N{)*6K`nzm*1V$+KvS^Jj`pikJ;F$w!b zXaC!~e%Sj-m2PCy+LHRuXe=i1&E#_>lIbXmf_Uu`rA(Z+FmrQdXIXwm2{9kH2GA2k zUA#+6TQhHbO#|-`4g9O~ryFU+S8-aY+Bd9kgy`Aq*rvr{Rg zLMEDr{=+`o4TZBS>g50dOborK^PgwuZ>>>s3u_1J@0w}+x3kHWPSku&no+ee3bA5n zMus59_iWnoZQCOPm8oNr8ce)emX8ASen=O+`~9LhxS<%R5bcrrRjgy)y)Xw#JCG#V zWTF5m#QBIc`StJLtB!fsdXr)#dwRuEqQg!Vk^-xFNnEC9*CIbi^p{pYOqe=_J@&0C zzU%|b`|O9gSpH*R$LhIOrQfq-Hn3y$xOD5LFzwE0sYL=gS^(It^*&wAfXVR=de7F- zX;(qMuk3GD=Qfj~&Awmn6r3MZrVVd3nWl)>D2++-B78B`G$4iOt@*Wo4wa$P5o6AL zVZwHN67Rb#^lK&dys$ON=3tYX`2((9E{!HmzyhP4(hW_@Z|LcdGop1~ay7*+u*g%N zJ-NPhX|Kinh@o=0%Q;?xkhoEg+&;BloO&D|?LhvUNzGaR@xd$^=vqH*7XWUjcXa-u zR3<|6HU2y8g~)>PSKx_~2e;LCI7Cf|0Wt?0a;wivxtWv^$#(a)l&(?t&4%tOx%!+L z7p{{TMP#lpP`-M`N!&?{pUpq{5eb}y44*X&yEHnl3h7P=yq|17e)gdCQ^cjCZs6F| zUie-!R7va$+f@P+*-Yd$wodmA<_#&z2437V+u|v(Zf4QxFz5EGm~~XB?x)8BFO705 z@Wder+2e&VQMl@+S&m$h)6(#=X5i}`CEPWWtZ}Q4_nDv_7iltEbqYxr=1^s{Z2_f- z=TT^-Ol(HFoOcj9Kh)a!WX6irVimkdgb^ISFXE~!>yEP1dP6hJ`Q!>kH|fbC=bQI? znhvXFdwRBl)qBYxpu~t>Jm&(xhgqx0e>b&%TNrd9ax|t@$pYrOCAfDAiCx>K-ZQ)F z5LRT252HuK0Xje6>;lAfT|+x`wCRo1ye%}lI0bb`j<>#&w~nixzOdDO`*~Xz+LQHy z0x=(#VSeuaSZpvq(!k0AD#L`$qy<9Oz)^pSgc~vJyYlkF7hs^J^p;k(1_kGJ@o>pj z-oXzFKGsVIW{8op(Y{Y&clKT-8kVYqXnb7hJ;2G`0JEC+^{VeIY>2!iYz3(=JhxOJ z5la~36a?OdHHvrS z)&6Y-O%|xe9mNa=m}^vU4|kl@o7iWXd-59MUQ_yrJ8Uk(W=oBp1OZwnUW&O{1U*YV~%U$gmcDU-7V9Ux`i51>S>-`kR+s&-n(1)nmEiGafpK^ta zaqzvm=v~LZ^*AO>r}z}5cFbp^q5{u=wEjv*`(s&-2bPcLHiC4WCs!edpV3+lO{lE2 z6=4qx2?71{M#$yi$C-s~v<4Zaysyf?WvOz84S#hmtpC1#t5=l${D&8|l&0fXtoSkZ zBF{7s;i_)-A0Z8$ko3e?R8D_GVn@V#oP*l5A5*4@JfI7rg=%(sJ}*$a=nM^>DLk7Z zle;qd5tr`S^&JWX?}>jVtm~2$DnYebGF0uD!B&f|LSLqxo5W-1kBH+X*&QT1k@^J9 z!7h>zVMgq6lGeq8dN*D7Ynl3&IW$8nu)Cvz=?#mk_WIr>8&}k8Sx9_#>;VbnEsgyD zEMA$i14>|Yj_)6E_PKL?dCUV`?GiO7Iy& zgO5Cpu!Fs&nd+;wuwd`%{9(9lJ@uw@cM7r~K_B>tD#1=2_*ur=AeuNEvwrXf<;(pO z@^*lB07k`wkm{B|MBYg?EPbWQD>(|XL&S#z4-F%n_=8*bJOh_EzMOJr9z;Yr!$r;gyXnhsL$ck1ni!?tM$jTM z^4r_K!=8Qmw66>y*Ph@9_pNW6;%_UK-}9M5TPbICnR8Lp*1_clL5O?-oKT#A_ETU_i zuv1y?Pv=nTGNy8fQ}%+gdCY{VKjvLfP$AOVoz65YSc%D{S?k>eKb%3tG^qVu;gMs! zpy4E^0sa)j-Ypiwl)VGZHn*Vt(*xMRrr|(;-@Gfr^*FMIP_tMtTGP_~(4Qj<2C63)(AN&}fyvm(>0kM0il$4w z0*WLc2Y+n9UlPZ$gx=Vmg?;RuaAO93C+=xtZ|6;Lg2oWl(AUPNu%SfkwSQr7rH`{5 z<}#tM_VyEueROQ*K6plROu~8w<{KM0?rv6M_-bbV4MpKkhat2KEe=uZt8qsI|NWEf z4CK2SSSZSEU+thetD~|@w(C6oPLLsV!i!BYpp`-GkEFoSJ zKl52Tg29f)Yvsw!bz+OY#Btaw-i0H*@V+up{SVk6EZHaB`C=r1JpaxYeNI@_gTaA~ z(FRiVZ0YEg;aHxBxDIx$zZDBpD4Fk(YlFn{R0&3;@U8!Ya*?+88o9x*mGnupF#!Tz>o3+ zpuzuqqMqWO=JfLM71q(t4>VMiQqS;trl-0@r}w9%I8*-rSH5C(_s&R^9)Q587w0UZ*I{^_sH!Y1zb(|JI(wogbo}~w%Z1Ww+u;`sE!SlKWdujoF zXP-QP8>V4yTN%j48rPFkYNT!FuU_EpN>u_* z&@gN1yzZx`5p*Kx_vJhxH~I0se4`!O)nVT$Iww5anuCm({63L$SVd8Q{d(dg>ME}a z7knvUVaXc$f@7p2c@6V~FWm{+JoOY@Wjs};8TU@={_m{yucCKS(|(ftmx95H5GI^( zTJMV1fkuq1y&eKgTb>&XVMs*Q-ftY6d-1Gwx}G__X@QO1 zka@jc>7lj|ux_d^Pnw4_p;1x|tw7aol!1zf3%Lm$HY#Mws+J?YS=B{63a!08Kzh|p zi_^!u@wXvtN?#pb8m1bkW8Q+c_Ui{l4?o5xm`u&5e9eVqA+sx@kTt!}{4QYGGbF%J z;5q6dpP3xt+gT;}YKt;3XA?{`AHd z&@3Q-Gg!*`JQZxOx7>?%1xQ66*WjzhJZC*Ib7N$jwgcgW6#+#x=RT6a9hx79cUIq@ z*ouldK!N_I$yGbxA;H(7Wy1$@v~{@pk_hwD#nlAfA{mc3vfsnJjH9*G%Uyj!J;*s&7A=*s3zH13*3JoSQ+L7`OYhZz zIVY237sCG&>+wLdjT)`Vq3P#xD-ju)`vb-cd7!mOg^-81Bx2;5<(rW3hgqkLkbsfq zvi$PAcTKn_6Pszq#dsk~`)nA0Z=yo#TY4L>+do(_6e1IYGqj%V?Y65NZkQ%BLSuB& z+@hU)cBettq4fzpRH4AoV00UxFSh~p3D#7hf|!L!hDG8@SQ;LBynA+~lxU?PRf|)I z9E@okphUItpzY_~=Ark+Q&bxe-A&&;*9vM=`^NR!u4jmgN9)-(41d`5d1p6hx+^H+ z`)T*n)DbvpJYP@FI;zbE6kbP1S;xuhUR`qvu4oFnw2PPWb{|#sYI#U8z03V7g}8^8 z{vY)8S<@FU0Mi#t${$Xw&j>~?e}O?+v8=Os8qa2QL$yb2<&S@`M5DtS2$t}kj!p!2 zP9zcZ@hp&$yMlI*%rqt{**P^T!RgJ4+=P>x4?ohVFZ=4b^ch_a6JVAB91`vL&J2YMhi5YESZK#Am&Llg9p*wJt)Hgjje&O35?#fOx;lOf~foj%Iy% zS^xWN9f?8zdc1sZD{yIa9L|KhqI_ObU=61v!pofzLCOAm=u6TS*O8z2N9C~ZPXeBQ z#ES(8=fp4)=<*s4#Kq{#)AEK=tL)T#>{igf|E4BXihYvhPNkFLzpFKw9q6| zlTVJtZ#?^u|AT1>N#pK1=?3StVX}2>VYW@EZiAeH7r@=kKK7`v0n<#-CD9y3lpLKC zjAk7HhqzRuK>9uZ@jj&DGx^O1rae!&8_@hejJQ+_ox%uBrf324 zx4-V6hX(y!7M?jFz9Xf`klnkTvRsbK@>Q|r>ewljv=luYZ}cFDv#?h%<4|w)k5&ZM5p#FrmKww7uk2w!*8uRm8!CdOe z7h^nmKSFFnrb+IF@OL-j3Yrr!+!%o|b(6r2b} zbrdyy6qVz2p9vx>9EG%)pva&uD&%NFJ)ryiKp;3@Iw8{5Pjn1Mw$>^0XAfQr20 z8d?Fe1ZvdVn#DzFC@cZ;E;vXT?!Mebo=%dw1?W!!MDk?ZGYK(0!q+1ZgML|=raa~fkQObN60dz73Pn1P*utmJ`T-|kfymy2Z2-VgV46E7rIAFHW7m*+cN+}M%0aT4&~fY+wfcx+}bGGkxU8LQXpH+(eo z-PCjZrLaM&#zs@_V#1}XGwNt8f7w3xfa)}=nxjr19Hz&uMH=^Nq!iGz2sN@@I@{C6 zdUN~@3d1t~#?A@^7-6}cerr&Y>n_`Ms=J*^J`CYo`=J_odx@Ix?Qd@DTSMPRT~T+QJj*&dmL8&#l^`mOS|A=Whp*^v#5}G86K^ z(oad_m-w$8)yyn7Ld-N@xJ%X-e<9DtsN;UEx!vew)uBrhq&7yZ-}$-Jig!~i*<($B zDE<&uIvZZEAJgSqxQt`fdbU`+q6tN|m9>!{p;Yruo~0^jeGuZz3MbFN-przYNbZj# zP#B}R9Q!@D(fF@hblsN7EYlM%L1=-f8w!>*)pU?y=dd*KajD+cs~il_=JaoH0&X>MTKJDjN1IwDbmH$z$OAGpR$zu$hTNe~Za12%3>p!#vw9gcb4gz3eMzeD z^={3cbjK2}lRxvyhn(IJPx4t-&77%Zu)bkopzf<>b8Y__je{h1ClxD~?bYUNW2X)@ zYwbISoSv7=F2MH4G{g1q1UFO|SL#x?XbiD08IiqM%Q**0I#2EuNo$U_SVMp(JbGDk@+Z|g>;IV04gzGuE(X}q{#`T0FukD^O|xK7@h1b^PQ;%sWmX+* z-*W!GZ%_rpqcr!>Ij7m7@YN(vw+4iWDb(3zHKVz0;PB+*WAN|VNbtBk@3#?;y}azZ ze!b89Z9wbS1?0HRxvVcT4q3Tc!n8V^*A8@y1FKjBG9%Pd*Ip@2)1(i|L_&`Hh{YQp zPbL^w+gmP<(r)9b{M$O7vgTDr<|5FZLZmg+(w+?)f51EB$ z3)jW8foIY8qjRP3@gdcTY~fi9{eZELeBKbN2z>p{D6k~0GlSJIxioULKljm{QId9d zg~LO8P!)CDzyCc{n5>X^?uP?fn_{i_gdcy%1`EI0j}>GDY<@_XnT;?UnQF7 zbjcqwQPF>mPu&?;sPx-%?H7~qlfJL6?n70vcdPAp?sq$g3f>EVMwAQVzCoIgyPPe-58W2knGbT(BO?dg}qH;mU(7yl>UsCfCRGQBWjOzf{=Q7`2u z!G?e~7EyY-AcJNB=`OAmaG=aX$?WY!#FO0KKi9%I zXox|qp`mYOUKOSHYphjq;6alL1+VeBwVr6gOa~>qxN1(R4;9XD|4h^(fBD=9{iJ94 z^Jl!XJ)&*+S1NP*wIi||orK0*in2qe4Yim1Rr~YEZOpF!SHpxp9r`|`Qt(?+#~u9N zBEJRBNDEd(fH@EF$VS(IA69GP0Gt$iU84Mbd8p@tl#|GI;H*GMUn%`O%=qrNKq zWVp0V7+cGdD)ZKE?fy3+`wD*E=a&jB{g-fdJ8{f;EkNi@mu$RrY$E?%BsD;x-BzL% ziWHE5dupV!IE$byzm9P#%y(wX&WtQwbjrr_5?s^U;&B+nj-sbJ(VJ>?4w+N8LRL?6bR;7yB4=`lnW~ql}Cn*%8^N z$@36kerR=Bha&M(*~LoR=)np3ZYDAjIup-D0tp37sd;tRgsxNyEpMG0X~mQ;Wo3glRy@nUIDnx?!L1T`9&(+Iz+zR&XCkE!TQo zso09X>(l>6or8G^(ukLS!QPc-!vJ3P+Y?fT@uWY^Zy4@Yfs)9~NA<1@Bgg4cj;iOi zwV1i4Wm6_wT8GWeDgJgI;|$ujOMG>>7rY4-a#w;Jj7I|Wndj_%lcx6%7C&KL0oYT- zR(id;j|HBd*MsXz8r463Ic8Tp_-9{|^EU{;o)VlesJ5aH0u;d=70DbFr>*RoNRZo~ zb8BI(F!KvZMUK|8|Bb-!^N6zdw(&rYqQ0)HEsESeofdQ$oEq&G6PGk8+mXF2&M_ zLSdHZ-J-!5uh!MECuTcRec@Mp*@ICe0Cl{yw%qW~+X{bUT~cjtBkgn7{vJ*6p%797 zwd_Kd=lDla8@^Wanw7X>AY+me+4^%` z%PdGjiC)s>Y3}C5zLU));^)*y+#j!GrZA7t8jL}cVE2wrcY%tGlRqPxYW(oWOM$u) zgmotxYosz&$XBR`9K71batUkwUXVZ|_fAeUU;%75%McLOm_7)`CS$NdvB|S2NzLd_N&1gof8t z6_wOj2f`s+%6t2F&L-kcf`9vEiMP}%KqeE04S)L;vWj4@`H=Xw@Mjeu{pA1q)&34p zX9w>QMOP_^l%DU4E{VjiSmJxk>NpSeVCmSrjsz012YaMfup%fFR2E+S*kw9Y*XUT& zn>8!#$WSp2Rg|00<2rvQ9dBS$DQAx3Frd=l*i>dhlP1;9VxVfbfm(X+c)VtHpDkwG z(xJAE0?%r1`<;YQ7CrToCV;+7_I5byRK6c7qIem+?;Q}y|7p%{4PkyT&|BQG4&1R0 zJ>Aayu=wiaCPj=RY8&2h&?v&Ob$sIq73pkVf8^PI#=UO6(`%z4ZJK|-G5ev?*l|yP z+1XvjYl5I0d7$rio(>ghmTnTwvos?P9o*NuqcZ$|?Wp^+8X^0mJ~%Kiu!86xry5n74E6*;DN-N^ z<5%mGqE+h2sm;zCK|%}*E(ZE1?I0gO2$`|NO3zcbMzy-%MGB&7Vq9YfR{Z|752BeKaSXy1Ey4~V$*#fn;pHFubS@IN6DL??Mqnri0| zMUhsYC2VP@W0nz!VAMTz>o*MGF!iWV+yVsBde1B8H~WtB{cg-lLkL@TrvBGpNjbz* z6FNM9`QOAnf&r_1iQG|85XSe9S0F(s-Gg7X+oA~sV;z!;(ej~3D7Ctyqa#4i84%AE z=sN!0S2^JxA}m1NNQv1C`{uv@C01I7t?~YBL8a%LsRPRoPtx_l0V<@Pon(q-j4KNJ zSGZJ=_o+>@)wUI7-ny8}4laaOoRq=l!hH+#sYyP@=rSq%-O>V%9GTlI4$V(h8Mzv) zZ}Qbf$Q#+!n*O{XzyPOWRM-kLdyN+k38p)S5?8$0Oad1JSxO}XuM45(Q?w7LZR2A&N z7g&|$qG*X>8mwaNm2{UORXa@0cyitr6mv@`{i13%`Fc)ok}u)qqwI|h*6kDDf>e;7 zyq@nK`jd#Pv1@t0>b4i0>*>w|-0Fj=Su{V8f+PBM>P~bMu1Ipl*d=G2r&9|h`?L)Z z-I!5GF1**Qik}S1bMZ}SE>tUZgfmA!ahdFuZjW)rt3!lGFaU03F!3tg1HY-ove4a4Y%Fu#BrqLCw2Rj&#js^yJWB2?=g zGL>$Skin#3f4>>E3u6tIq(AW)1~sB+GoS!Auygeh7m~Cr(H!|M&!K)S+buo+)Rl-oAvl# zQ*mH~z04?BkjABCEfufQe>6K-a{AbVgp7Gsl4F<<#OcyBt~NV@%ZOkN12N0utU_ka zoX06&N2o@VY0#XnI-q8!tJxTZB#0VScLC76KAT9H7w9PKOFo@?a{R?jWC@DZZJv*F zsDQ|@b{(%U;(U`XGV(|){X7b(aUB#8;Tht(Ka?WB5&vE*L{0}1A>8lVwFW2(XSDHg z1ZcXc=BUekX;=A8gjO|s*+E>kI&_!xi(2)_eaYLow0m!B&{l+5MA{1zHgs|f0j`5t zg`&@27n^lTj*iNC{!{RQJjBQ-n{M+y>Dzx}crN+WNB@X}{4)t~mrvdq2 z4a1@)t*Fko2~hr`DD44KBs!I&H7V~0YSte6tj?Vcf7#t0I9ZeWZ>XUN$O&^IpY zyE7iVGZyQ+OY|4FbtmDe*%?wd%J>`AbyfrjNLF`&@5OBo>grM=RR@J zYbys0i}H7e^H=6|q?3fZaUSEGfz*8nk;rW}$eV^n4KXZ#MDY~cjNYH^zaGH82Wm1}c zr`a~8Qv}y0zg4AXw8u(I-7<8cWoghw`}5X|iF+McR8ML>^ld#tTQZ08)<|IJvZhU< z-}|Mz#sgpnumyU$r3U)xpRy%}XTJ)P7*fdRsiz#wWE|o`Q@aev!%HrRwaXbU{tUEx z@~kt?b|-_DgSfX_Ye$>tqbD*SvFlw6(Sm7Hl=UrRmf)ddW%K;;o8o|lPo@mOqq zI@@fkcOK971PZ~Hj14!)6?~F>B!_9eFmj+5xkJ~Ql7p`X9gsHpMscE-QSLND{sN4L zNN+O=Sqr0lhh#sZ;i&J~A&f)=qJy}DIuRIj zeaBQl@rcBdw!`2UqLJjimJsszjfTxqyC&Hl(5!oOL>4g>z=`hBBP-PfBPyDckZs4> zpRKb#5`(x`Ca5d;5lV6eOTVICLD&`||5tm;28u2~g)T<*e-)`VFoSV3FXQ~;xBn}G OrK+g)vR2+E=KlfIPdiHh literal 26691 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 Z<9Ij!xaqYp>|X^GC3!Wuav9U0{|6)>Q0o8y diff --git a/doc/index.docbook b/doc/index.docbook index 696ec7762..af070dd7e 100644 --- a/doc/index.docbook +++ b/doc/index.docbook @@ -37,8 +37,8 @@ Context menu actions like Rename Bookmarks etc.) &FDLNotice; - 2015-09-17 - 0.24 (Applications 15.12) + 2016-07-26 + 0.26 (Applications 16.08) &okular; is a &kde; universal document viewer based on &kpdf; code. @@ -2138,6 +2138,14 @@ Context menu actions like Rename Bookmarks etc.) use the backend with the highest priority. + + Right to left reading direction + + + Whether to use right to left reading direction by default for the opened files. Can be useful for some writing systems. + + + Overview columns From 78a08b093d3812d5f3e6d36d5a59c3d081d1eb57 Mon Sep 17 00:00:00 2001 From: Olivier CHURLAUD Date: Sat, 6 Aug 2016 01:29:19 +0200 Subject: [PATCH 17/23] GIT_SILENT: in metainfo.yaml, platforms is Linux only now --- metainfo.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metainfo.yaml b/metainfo.yaml index ad91fbf53..71812c406 100644 --- a/metainfo.yaml +++ b/metainfo.yaml @@ -1,7 +1,7 @@ maintainer: aacid description: Okular, the unified document viewer platforms: - - name: All + - name: Linux release: true public_lib: true From eb20c92daebf9a91c728b19bb9c49401e2c3394e Mon Sep 17 00:00:00 2001 From: Olivier CHURLAUD Date: Tue, 9 Aug 2016 00:09:51 +0200 Subject: [PATCH 18/23] GIT_SILENT: Add MacOSX and Windows to metainfo.yaml --- metainfo.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/metainfo.yaml b/metainfo.yaml index 71812c406..6f6f9cf57 100644 --- a/metainfo.yaml +++ b/metainfo.yaml @@ -2,6 +2,8 @@ maintainer: aacid description: Okular, the unified document viewer platforms: - name: Linux + - name: Windows + - name: MacOSX release: true public_lib: true From 744a6901d6a83be7471aebd0aeefcec7df55f449 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Tue, 23 Aug 2016 00:22:33 +0200 Subject: [PATCH 19/23] Increase version Meh i forgot to update it for .0 GIT_SILENT --- core/version.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/version.h b/core/version.h index e18c99c9b..ab113719a 100644 --- a/core/version.h +++ b/core/version.h @@ -10,10 +10,10 @@ #ifndef _OKULAR_VERSION_H_ #define _OKULAR_VERSION_H_ -#define OKULAR_VERSION_STRING "0.25.80" +#define OKULAR_VERSION_STRING "0.26.0" #define OKULAR_VERSION_MAJOR 0 -#define OKULAR_VERSION_MINOR 25 -#define OKULAR_VERSION_RELEASE 80 +#define OKULAR_VERSION_MINOR 26 +#define OKULAR_VERSION_RELEASE 0 #define OKULAR_MAKE_VERSION( a,b,c ) (((a) << 16) | ((b) << 8) | (c)) #define OKULAR_VERSION \ From f2b2d94897cfedcec91b82a6bed0450546686b51 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Sat, 1 Oct 2016 15:39:31 +0200 Subject: [PATCH 20/23] Open CBR files with shared-mime-info >= 1.7 Not ideal fix surely but it'll do for the moment BUGS: 369078 --- generators/comicbook/document.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/comicbook/document.cpp b/generators/comicbook/document.cpp index 93b948eaa..72b2c55db 100644 --- a/generators/comicbook/document.cpp +++ b/generators/comicbook/document.cpp @@ -75,7 +75,7 @@ bool Document::open( const QString &fileName ) if ( !processArchive() ) { return false; } - } else if ( mime->is( "application/x-cbr" ) || mime->name() == "application/x-rar" ) { + } else if ( mime->is( "application/x-cbr" ) || mime->name() == "application/x-rar" || mime->name() == "application/vnd.rar" ) { if ( !Unrar::isAvailable() ) { mLastErrorString = i18n( "Cannot open document, unrar was not found." ); return false; From 7003eff75eceff775739a4ffcef0378bf922fd09 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Fri, 7 Oct 2016 00:59:46 +0200 Subject: [PATCH 21/23] Increase version We had the cbr fix GIT_SILENT --- core/version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/version.h b/core/version.h index ab113719a..3e86c21ca 100644 --- a/core/version.h +++ b/core/version.h @@ -10,10 +10,10 @@ #ifndef _OKULAR_VERSION_H_ #define _OKULAR_VERSION_H_ -#define OKULAR_VERSION_STRING "0.26.0" +#define OKULAR_VERSION_STRING "0.26.1" #define OKULAR_VERSION_MAJOR 0 #define OKULAR_VERSION_MINOR 26 -#define OKULAR_VERSION_RELEASE 0 +#define OKULAR_VERSION_RELEASE 1 #define OKULAR_MAKE_VERSION( a,b,c ) (((a) << 16) | ((b) << 8) | (c)) #define OKULAR_VERSION \ From 75c387c62c8a1132f4101a1964c05dc8b034433c Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Fri, 7 Oct 2016 01:00:49 +0200 Subject: [PATCH 22/23] increase version in master --- core/version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/version.h b/core/version.h index 3e86c21ca..477e1a65f 100644 --- a/core/version.h +++ b/core/version.h @@ -10,10 +10,10 @@ #ifndef _OKULAR_VERSION_H_ #define _OKULAR_VERSION_H_ -#define OKULAR_VERSION_STRING "0.26.1" +#define OKULAR_VERSION_STRING "0.26.70" #define OKULAR_VERSION_MAJOR 0 #define OKULAR_VERSION_MINOR 26 -#define OKULAR_VERSION_RELEASE 1 +#define OKULAR_VERSION_RELEASE 70 #define OKULAR_MAKE_VERSION( a,b,c ) (((a) << 16) | ((b) << 8) | (c)) #define OKULAR_VERSION \ From f943f9ee8b5cc5c2e2b049cf223040608891aa64 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Mon, 17 Oct 2016 13:02:49 +0200 Subject: [PATCH 23/23] Remove the !this checks It's not part of the standard and GCC recently removed support for it Looking at the code it seems we only need one external check, let's hope i'm right :D --- core/area.h | 26 +------------------------- ui/pageviewannotator.cpp | 2 +- 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/core/area.h b/core/area.h index 1f7b10d2a..936c266b5 100644 --- a/core/area.h +++ b/core/area.h @@ -655,9 +655,6 @@ void RegularArea::simplify() template bool RegularArea::isNull() const { - if ( !this ) - return false; - if ( this->isEmpty() ) return false; @@ -672,9 +669,6 @@ bool RegularArea::isNull() const template bool RegularArea::intersects( const NormalizedShape& rect ) const { - if ( !this ) - return false; - if ( this->isEmpty() ) return false; @@ -689,9 +683,6 @@ bool RegularArea::intersects( const NormalizedShape& rec template bool RegularArea::intersects( const RegularArea *area ) const { - if ( !this ) - return false; - if ( this->isEmpty() ) return false; @@ -712,9 +703,6 @@ bool RegularArea::intersects( const RegularArea void RegularArea::appendArea( const RegularArea *area ) { - if ( !this ) - return; - typename QList::const_iterator areaIt = area->begin(), areaItEnd = area->end(); for ( ; areaIt != areaItEnd; ++areaIt ) this->append( *areaIt ); @@ -724,9 +712,6 @@ void RegularArea::appendArea( const RegularArea void RegularArea::appendShape( const NormalizedShape& shape, MergeSide side ) { - if ( !this ) - return; - int size = this->count(); // if the list is empty, adds the shape normally if ( size == 0 ) @@ -799,9 +784,6 @@ void RegularArea::appendShape( const NormalizedShape& sh template bool RegularArea::contains( double x, double y ) const { - if ( !this ) - return false; - if ( this->isEmpty() ) return false; @@ -816,9 +798,6 @@ bool RegularArea::contains( double x, double y ) const template bool RegularArea::contains( const NormalizedShape& shape ) const { - if ( !this ) - return false; - if ( this->isEmpty() ) return false; @@ -828,7 +807,7 @@ bool RegularArea::contains( const NormalizedShape& shape template QList RegularArea::geometry( int xScale, int yScale, int dx, int dy ) const { - if ( !this || this->isEmpty() ) + if ( this->isEmpty() ) return QList(); QList ret; @@ -847,9 +826,6 @@ QList RegularArea::geometry( int xScale, int ySca template void RegularArea::transform( const QTransform &matrix ) { - if ( !this ) - return; - if ( this->isEmpty() ) return; diff --git a/ui/pageviewannotator.cpp b/ui/pageviewannotator.cpp index 699f068c0..3a3cd182b 100644 --- a/ui/pageviewannotator.cpp +++ b/ui/pageviewannotator.cpp @@ -521,7 +521,7 @@ class TextSelectorEngine : public AnnotatorEngine delete selection; selection = 0; Okular::RegularAreaRect * newselection = m_pageView->textSelectionForItem( item(), start, end ); - if ( !newselection->isEmpty() ) + if ( newselection && !newselection->isEmpty() ) { const QList geom = newselection->geometry( (int)xScale, (int)yScale ); QRect newrect;