[poppler] 2 commits - poppler/OptionalContent.h qt5/src qt5/tests

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu May 16 15:43:07 UTC 2019


 poppler/OptionalContent.h            |    6 +++---
 qt5/src/poppler-optcontent-private.h |    4 +++-
 qt5/src/poppler-optcontent.cc        |   10 ++++++----
 qt5/tests/check_optcontent.cpp       |   10 ++++++++++
 4 files changed, 22 insertions(+), 8 deletions(-)

New commits:
commit 65adf225eca287f63361cf49bd47388bff81af79
Author: Albert Astals Cid <aacid at kde.org>
Date:   Thu May 16 17:20:55 2019 +0200

    qt5: Fix optional content handling with exclusive layers
    
    We were setting the "ui" value correctly, but not the "backend" one
    because we were shortcuting on obeyRadioGroups for the off state
    
    Update test to check also for the backend value

diff --git a/qt5/src/poppler-optcontent-private.h b/qt5/src/poppler-optcontent-private.h
index a134cd53..611c2870 100644
--- a/qt5/src/poppler-optcontent-private.h
+++ b/qt5/src/poppler-optcontent-private.h
@@ -2,7 +2,7 @@
  *
  * Copyright (C) 2007, Brad Hards <bradh at kde.org>
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
- * Copyright (C) 2016, 2018, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2016, 2018, 2019, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2017, Hubert Figuière <hub at figuiere.net>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -77,6 +77,8 @@ namespace Poppler
 
     QSet<OptContentItem*> recurseListChildren(bool includeMe = false) const;
 
+    OptionalContentGroup *group() const { return m_group; }
+
     private:
     OptionalContentGroup *m_group;
     QString m_name;
diff --git a/qt5/src/poppler-optcontent.cc b/qt5/src/poppler-optcontent.cc
index ebae31f3..49acd4a4 100644
--- a/qt5/src/poppler-optcontent.cc
+++ b/qt5/src/poppler-optcontent.cc
@@ -131,14 +131,16 @@ namespace Poppler
       child->m_enabled = state == OptContentItem::On;
       child->m_stateBackup = oldState;
     }
-    if (!m_group || !obeyRadioGroups) {
+    if (!m_group) {
       return;
     }
     if ( state == OptContentItem::On ) {
       m_group->setState( OptionalContentGroup::On );
-      for (int i = 0; i < m_rbGroups.size(); ++i) {
-        RadioButtonGroup *rbgroup = m_rbGroups.at(i);
-        changedItems += rbgroup->setItemOn( this );
+      if (obeyRadioGroups) {
+	for (int i = 0; i < m_rbGroups.size(); ++i) {
+	  RadioButtonGroup *rbgroup = m_rbGroups.at(i);
+	  changedItems += rbgroup->setItemOn( this );
+	}
       }
     } else if ( state == OptContentItem::Off ) {
       m_group->setState( OptionalContentGroup::Off );
diff --git a/qt5/tests/check_optcontent.cpp b/qt5/tests/check_optcontent.cpp
index eb5282ee..d1372307 100644
--- a/qt5/tests/check_optcontent.cpp
+++ b/qt5/tests/check_optcontent.cpp
@@ -4,6 +4,7 @@
 #include "GlobalParams.h"
 
 #include <poppler-qt5.h>
+#include <poppler-optcontent-private.h>
 
 class TestOptionalContent: public QObject
 {
@@ -399,14 +400,17 @@ void TestOptionalContent::checkRadioButtons()
     subindex = optContent->index( 0, 0, index );
     QCOMPARE( optContent->data( subindex, Qt::DisplayRole ).toString(), QLatin1String( "English" ) );
     QCOMPARE( static_cast<Qt::CheckState>( optContent->data( subindex, Qt::CheckStateRole ).toInt() ), Qt::Unchecked );
+    QCOMPARE( static_cast<Poppler::OptContentItem *>(subindex.internalPointer())->group()->getState(), OptionalContentGroup::Off );
 
     subindex = optContent->index( 2, 0, index );
     QCOMPARE( optContent->data( subindex, Qt::DisplayRole ).toString(), QLatin1String( "Japanese" ) );
     QCOMPARE( static_cast<Qt::CheckState>( optContent->data( subindex, Qt::CheckStateRole ).toInt() ), Qt::Checked );
+    QCOMPARE( static_cast<Poppler::OptContentItem *>(subindex.internalPointer())->group()->getState(), OptionalContentGroup::On );
 
     subindex = optContent->index( 1, 0, index );
     QCOMPARE( optContent->data( subindex, Qt::DisplayRole ).toString(), QLatin1String( "French" ) );
     QCOMPARE( static_cast<Qt::CheckState>( optContent->data( subindex, Qt::CheckStateRole ).toInt() ), Qt::Unchecked );
+    QCOMPARE( static_cast<Poppler::OptContentItem *>(subindex.internalPointer())->group()->getState(), OptionalContentGroup::Off );
 
     // and turning on French should turn off Japanese
     QVERIFY( optContent->setData( subindex, QVariant( true ), Qt::CheckStateRole ) );
@@ -414,14 +418,17 @@ void TestOptionalContent::checkRadioButtons()
     subindex = optContent->index( 0, 0, index );
     QCOMPARE( optContent->data( subindex, Qt::DisplayRole ).toString(), QLatin1String( "English" ) );
     QCOMPARE( static_cast<Qt::CheckState>( optContent->data( subindex, Qt::CheckStateRole ).toInt() ), Qt::Unchecked );
+    QCOMPARE( static_cast<Poppler::OptContentItem *>(subindex.internalPointer())->group()->getState(), OptionalContentGroup::Off );
 
     subindex = optContent->index( 2, 0, index );
     QCOMPARE( optContent->data( subindex, Qt::DisplayRole ).toString(), QLatin1String( "Japanese" ) );
     QCOMPARE( static_cast<Qt::CheckState>( optContent->data( subindex, Qt::CheckStateRole ).toInt() ), Qt::Unchecked );
+    QCOMPARE( static_cast<Poppler::OptContentItem *>(subindex.internalPointer())->group()->getState(), OptionalContentGroup::Off );
 
     subindex = optContent->index( 1, 0, index );
     QCOMPARE( optContent->data( subindex, Qt::DisplayRole ).toString(), QLatin1String( "French" ) );
     QCOMPARE( static_cast<Qt::CheckState>( optContent->data( subindex, Qt::CheckStateRole ).toInt() ), Qt::Checked );
+    QCOMPARE( static_cast<Poppler::OptContentItem *>(subindex.internalPointer())->group()->getState(), OptionalContentGroup::On );
 
 
     // and turning off French should leave them all off
@@ -430,14 +437,17 @@ void TestOptionalContent::checkRadioButtons()
     subindex = optContent->index( 0, 0, index );
     QCOMPARE( optContent->data( subindex, Qt::DisplayRole ).toString(), QLatin1String( "English" ) );
     QCOMPARE( static_cast<Qt::CheckState>( optContent->data( subindex, Qt::CheckStateRole ).toInt() ), Qt::Unchecked );
+    QCOMPARE( static_cast<Poppler::OptContentItem *>(subindex.internalPointer())->group()->getState(), OptionalContentGroup::Off );
 
     subindex = optContent->index( 2, 0, index );
     QCOMPARE( optContent->data( subindex, Qt::DisplayRole ).toString(), QLatin1String( "Japanese" ) );
     QCOMPARE( static_cast<Qt::CheckState>( optContent->data( subindex, Qt::CheckStateRole ).toInt() ), Qt::Unchecked );
+    QCOMPARE( static_cast<Poppler::OptContentItem *>(subindex.internalPointer())->group()->getState(), OptionalContentGroup::Off );
 
     subindex = optContent->index( 1, 0, index );
     QCOMPARE( optContent->data( subindex, Qt::DisplayRole ).toString(), QLatin1String( "French" ) );
     QCOMPARE( static_cast<Qt::CheckState>( optContent->data( subindex, Qt::CheckStateRole ).toInt() ), Qt::Unchecked );
+    QCOMPARE( static_cast<Poppler::OptContentItem *>(subindex.internalPointer())->group()->getState(), OptionalContentGroup::Off );
 
     delete doc;
 }
commit 157c723c0465bfa509dc499be46f3d6b8e3c7048
Author: Albert Astals Cid <aacid at kde.org>
Date:   Thu May 16 17:19:48 2019 +0200

    OptionalContent: add some simple const

diff --git a/poppler/OptionalContent.h b/poppler/OptionalContent.h
index 29f50ab6..02619533 100644
--- a/poppler/OptionalContent.h
+++ b/poppler/OptionalContent.h
@@ -99,11 +99,11 @@ public:
   Ref getRef() const;
   void setRef(const Ref ref);
 
-  State getState() { return m_state; };
+  State getState() const { return m_state; };
   void setState(State state) { m_state = state; };
 
-  UsageState getViewState() { return viewState; }
-  UsageState getPrintState() { return printState; }
+  UsageState getViewState() const { return viewState; }
+  UsageState getPrintState() const { return printState; }
 
 private:
   GooString *m_name;


More information about the poppler mailing list