Hello,

Here is our patch, as requested.
Index: part.cpp
===================================================================
--- part.cpp	(revision 976771)
+++ part.cpp	(working copy)
@@ -253,6 +253,7 @@
 
     GuiUtils::setIconLoader( iconLoader() );
 
+
     m_sidebar = new Sidebar( parentWidget );
     setWidget( m_sidebar );
 
Index: core/document.cpp
===================================================================
--- core/document.cpp	(revision 976771)
+++ core/document.cpp	(working copy)
@@ -1638,7 +1638,7 @@
     }
     d->m_bookmarkManager->setUrl( d->m_url );
 
-    // 3. setup observers inernal lists and data
+    // 3. setup observers internal lists and data
     foreachObserver( notifySetup( d->m_pagesVector, DocumentObserver::DocumentChanged ) );
 
     // 4. set initial page (restoring the page saved in xml if loaded)
@@ -2459,6 +2459,10 @@
             (*it)->notifyZoom( factor );
 }
 
+void Document::setViewportZoom(double factor) {
+	d->m_viewportIterator->viewZoom.zoom = factor;
+}
+
 void Document::setPrevViewport()
 // restore viewport from the history
 {
@@ -3187,12 +3191,12 @@
 QByteArray Document::fontData(const FontInfo &font) const
 {
     QByteArray result;
-    
+
     if (d->m_generator)
     {
         QMetaObject::invokeMethod(d->m_generator, "requestFontData", Qt::DirectConnection, Q_ARG(Okular::FontInfo, font), Q_ARG(QByteArray *, &result));
     }
-    
+
     return result;
 }
 
@@ -3547,6 +3551,7 @@
     autoFit.enabled = false;
     autoFit.width = false;
     autoFit.height = false;
+    viewZoom.zoom = 1;
 }
 
 DocumentViewport::DocumentViewport( const QString & xmlDesc )
@@ -3560,6 +3565,7 @@
     autoFit.enabled = false;
     autoFit.width = false;
     autoFit.height = false;
+    viewZoom.zoom = 1;
 
     // check for string presence
     if ( xmlDesc.isEmpty() )
@@ -3599,6 +3605,9 @@
             autoFit.width = token.section( ':', 1, 1 ) == "T";
             autoFit.height = token.section( ':', 2, 2 ) == "T";
         }
+        else if ( token.startsWith( "Z1" ) )
+        	viewZoom.zoom = token.section( ':', 1, 1 ).toDouble();
+
         // proceed tokenizing string
         field++;
         token = xmlDesc.section( ';', field, field );
@@ -3618,6 +3627,10 @@
     if ( autoFit.enabled )
         s += QString( ";AF1:" ) + (autoFit.width ? "T" : "F") +
              ':' + (autoFit.height ? "T" : "F");
+
+    // if has zoom data, save it on string
+    s += QString( ";Z1:" ) + QString::number( viewZoom.zoom );
+
     return s;
 }
 
@@ -3641,6 +3654,8 @@
          (( autoFit.width != vp.autoFit.width ) ||
          ( autoFit.height != vp.autoFit.height )) )
         return false;
+    if ( ( viewZoom.zoom != vp.viewZoom.zoom ))
+		return false;
     return true;
 }
 
Index: core/document.h
===================================================================
--- core/document.h	(revision 976771)
+++ core/document.h	(working copy)
@@ -323,6 +323,8 @@
          */
         void setNextDocumentDestination( const QString &namedDestination );
 
+		void setViewportZoom(double factor);
+
         /**
          * Sets the zoom for the current document.
          *
@@ -782,6 +784,13 @@
             bool width;
             bool height;
         } autoFit;
+
+        /**
+         * Zoom data
+         */
+        struct {
+            double zoom;
+        } viewZoom;
 };
 
 /**
Index: ui/pageview.cpp
===================================================================
--- ui/pageview.cpp	(revision 976771)
+++ ui/pageview.cpp	(working copy)
@@ -956,16 +956,18 @@
         center( newCenterX, newCenterY );
     d->blockPixmapsRequest = false;
 
+    setCapability( Zoom, QVariant(vp.viewZoom.zoom) );
+
     // request visible pixmaps in the current viewport and recompute it
     slotRequestVisiblePixmaps();
 
     // enable setViewport calls
     d->blockViewport = false;
 
-    // update zoom text if in a ZoomFit/* zoom mode
-    if ( d->zoomMode != ZoomFixed )
-        updateZoomText();
 
+    // update zoom text
+    updateZoomText();
+
     // since the page has moved below cursor, update it
     updateCursor( widget()->mapFromGlobal( QCursor::pos() ) );
 }
@@ -1095,7 +1097,7 @@
     switch ( capability )
     {
         case Zoom:
-            return d->zoomFactor;
+        	return d->zoomFactor;
         case ZoomModality:
             return d->zoomMode;
     }
@@ -1280,7 +1282,7 @@
     {
         // this saves us from infinite resizing loop because of scrollbars appearing and disappearing
         // see bug 160628 for more info
-        // TODO looks are still a bit ugly because things are left uncentered 
+        // TODO looks are still a bit ugly because things are left uncentered
         // but better a bit ugly than unusable
         d->bothScrollbarsVisible = false;
         widget()->resize( e->size() );
@@ -1344,6 +1346,7 @@
                         newViewport.pageNumber = d->items.count() - 1;
                     newViewport.rePos.enabled = true;
                     newViewport.rePos.normalizedY = 0.0;
+                    newViewport.viewZoom.zoom = d->zoomFactor;
                     d->document->setViewport( newViewport );
                 }
             }
@@ -1366,6 +1369,7 @@
                         newViewport.pageNumber = 0;
                     newViewport.rePos.enabled = true;
                     newViewport.rePos.normalizedY = 1.0;
+                    newViewport.viewZoom.zoom = d->zoomFactor;
                     d->document->setViewport( newViewport );
                 }
             }
@@ -2185,6 +2189,7 @@
                 newViewport.pageNumber = d->items.count() - 1;
             newViewport.rePos.enabled = true;
             newViewport.rePos.normalizedY = 0.0;
+            newViewport.viewZoom.zoom = d->zoomFactor;
             d->document->setViewport( newViewport );
         }
     }
@@ -2200,6 +2205,7 @@
                 newViewport.pageNumber = 0;
             newViewport.rePos.enabled = true;
             newViewport.rePos.normalizedY = 1.0;
+            newViewport.viewZoom.zoom = d->zoomFactor;
             d->document->setViewport( newViewport );
         }
     }
@@ -2667,6 +2673,9 @@
         }
     }
 
+    d->document->setViewportZoom(d->zoomFactor);
+
+
     d->aZoomIn->setEnabled( d->zoomFactor < 3.9 );
     d->aZoomOut->setEnabled( d->zoomFactor > 0.2 );
 }
@@ -3132,6 +3141,7 @@
         newViewport.rePos.enabled = true;
         newViewport.rePos.normalizedX = focusedX;
         newViewport.rePos.normalizedY = focusedY;
+        newViewport.viewZoom.zoom = d->zoomFactor;
         // set the viewport to other observers
         d->document->setViewport( newViewport , PAGEVIEW_ID);
     }
_______________________________________________
Okular-devel mailing list
Okular-devel@kde.org
https://mail.kde.org/mailman/listinfo/okular-devel

Reply via email to