From 0f44b7a460da85ef431c8b1f4334a09622ec6a5b2660aaeea36fdb45b3fcb8d8 Mon Sep 17 00:00:00 2001 From: Martin Winter Date: Thu, 18 Dec 2025 10:50:54 +0000 Subject: [PATCH 1/4] - add patch 1387-fix-poppler-25-11.patch * compatibility with poppler 25.11 * already merged upstream for next release OBS-URL: https://build.opensuse.org/package/show/Education/OpenBoard?expand=0&rev=45 --- .gitattributes | 23 + .gitignore | 1 + 0955-shortcut-configuration.patch | 745 +++++++++++++++++++++++++++++ 1387-fix-poppler-25-11.patch | 25 + 9117-disable-software-update.patch | 41 ++ OpenBoard-1.7.3.tar.gz | 3 + OpenBoard.changes | 373 +++++++++++++++ OpenBoard.spec | 95 ++++ 8 files changed, 1306 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 0955-shortcut-configuration.patch create mode 100644 1387-fix-poppler-25-11.patch create mode 100644 9117-disable-software-update.patch create mode 100644 OpenBoard-1.7.3.tar.gz create mode 100644 OpenBoard.changes create mode 100644 OpenBoard.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/0955-shortcut-configuration.patch b/0955-shortcut-configuration.patch new file mode 100644 index 0000000..5825c1d --- /dev/null +++ b/0955-shortcut-configuration.patch @@ -0,0 +1,745 @@ +From 07141652f2bcd3eba16fb5291532b52e8b530fc0 Mon Sep 17 00:00:00 2001 +From: letsfindaway +Date: Sun, 25 Aug 2024 15:34:04 +0200 +Subject: [PATCH 1/2] feat: add preferences dialog for shortcut configuration + +- recording of key sequences amd mouse/stylus buttons +- collect actions, filtering, collision detection +- persist shortcut settings +--- + resources/forms/preferences.ui | 169 ++++++++++++++++++ + src/core/UBApplication.cpp | 28 +++ + src/core/UBPreferencesController.cpp | 252 ++++++++++++++++++++++++++- + src/core/UBPreferencesController.h | 12 ++ + 4 files changed, 459 insertions(+), 2 deletions(-) + +diff --git a/resources/forms/preferences.ui b/resources/forms/preferences.ui +index 45a2fc180..9b73f8d65 100644 +--- a/resources/forms/preferences.ui ++++ b/resources/forms/preferences.ui +@@ -1095,6 +1095,175 @@ + + + ++ ++ ++ Shortcut ++ ++ ++ ++ ++ ++ Filter ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ 0 ++ 0 ++ 789 ++ 447 ++ ++ ++ ++ ++ ++ ++ QAbstractItemView::NoEditTriggers ++ ++ ++ false ++ ++ ++ QAbstractItemView::SingleSelection ++ ++ ++ QAbstractItemView::SelectRows ++ ++ ++ false ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ 25 ++ ++ ++ 25 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Active keyboard shortcuts without pressing Ctrl key ++ ++ ++ ++ ++ ++ ++ ++ ++ false ++ ++ ++ Shortcuts ++ ++ ++ Qt::AlignCenter ++ ++ ++ ++ ++ ++ color: red; ++ ++ ++ Qt::PlainText ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ Abort ++ ++ ++ ++ ++ ++ ++ Record ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ Stylus Button ++ ++ ++ ++ ++ ++ ++ Mouse Button ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ Reset ++ ++ ++ ++ ++ ++ ++ Key Sequence ++ ++ ++ ++ ++ ++ ++ ++ + + + true +diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp +index 9e74e09a3..44017610b 100644 +--- a/src/core/UBApplication.cpp ++++ b/src/core/UBApplication.cpp +@@ -704,6 +704,34 @@ bool UBApplication::eventFilter(QObject *obj, QEvent *event) + || result; + } + ++ else if (event->type() == QEvent::MouseButtonPress) ++ { ++ // intercept special mouse buttons for shortcut handler ++ QMouseEvent *mouseEvent = static_cast(event); ++ Qt::MouseButton button = mouseEvent->button(); ++ ++ if (button != Qt::LeftButton && button != Qt::RightButton) ++ { ++ return mPreferencesController->handleMouseEvent(mouseEvent) ++ || UBShortcutManager::shortcutManager()->handleMouseEvent(mouseEvent) ++ || result; ++ } ++ } ++ ++ else if (event->type() == QEvent::TabletPress) ++ { ++ // intercept special tablet buttons for shortcut handler ++ QTabletEvent *tabletEvent = static_cast(event); ++ Qt::MouseButton button = tabletEvent->button(); ++ ++ if (button != Qt::LeftButton) ++ { ++ return mPreferencesController->handleTabletEvent(tabletEvent) ++ || UBShortcutManager::shortcutManager()->handleTabletEvent(tabletEvent) ++ || result; ++ } ++ } ++ + return result; + } + +diff --git a/src/core/UBPreferencesController.cpp b/src/core/UBPreferencesController.cpp +index ed0e393d8..145323385 100644 +--- a/src/core/UBPreferencesController.cpp ++++ b/src/core/UBPreferencesController.cpp +@@ -37,6 +37,7 @@ + #include "core/UBSetting.h" + #include "core/UBApplicationController.h" + #include "core/UBDisplayManager.h" ++#include "core/UBShortcutManager.h" + + #include "frameworks/UBStringUtils.h" + +@@ -72,7 +73,6 @@ void UBPreferencesDialog::closeEvent(QCloseEvent* e) + } + + +- + UBPreferencesController::UBPreferencesController(QWidget *parent) + : QObject(parent) + , mPreferencesWindow(0) +@@ -88,6 +88,8 @@ UBPreferencesController::UBPreferencesController(QWidget *parent) + adjustScreensPreferences(); + + connect(UBApplication::displayManager, &UBDisplayManager::availableScreenCountChanged, this, &UBPreferencesController::adjustScreensPreferences); ++ mPreferencesUI->shortcutTab->installEventFilter(this); ++ + wire(); + } + +@@ -103,6 +105,90 @@ UBPreferencesController::~UBPreferencesController() + delete mMarkerProperties; + } + ++bool UBPreferencesController::handleKeyEvent(QKeyEvent *event) ++{ ++ if (!mPreferencesUI->recordButton->isChecked() ++ || mPreferencesUI->mainTabWidget->currentWidget() != mPreferencesUI->shortcutTab) ++ { ++ return false; ++ } ++ ++ int key = event->key(); ++ Qt::KeyboardModifiers mods = event->modifiers(); ++ QString text = event->text(); ++ ++ int keys = mods; ++ ++ if (key < Qt::Key_Shift || key > Qt::Key_ScrollLock) ++ { ++ keys += key; ++ } ++ ++ // compose key sequence from active modifiers and key ++ QKeySequence keySequence(keys); ++ QString keyString = keySequence.toString(); ++ mPreferencesUI->keySequence->setText(keyString); ++ ++ if (currentIndex.isValid()) ++ { ++ bool ok = UBShortcutManager::shortcutManager()->checkData(currentIndex.siblingAtColumn(2), keyString); ++ applyShortcutFilter(ok ? mPreferencesUI->filter->text() : keyString, ok ? -1 : 2); ++ mPreferencesUI->recordButton->setEnabled(ok); ++ mPreferencesUI->report->setText(ok ? "" : tr("Key sequence already in use")); ++ mPreferencesUI->noCtrl->setEnabled(!UBShortcutManager::shortcutManager()->hasCtrlConflicts(keySequence)); ++ } ++ ++ return true; ++} ++ ++bool UBPreferencesController::handleMouseEvent(QMouseEvent *event) ++{ ++ if (!mPreferencesUI->recordButton->isChecked() ++ || mPreferencesUI->mainTabWidget->currentWidget() != mPreferencesUI->shortcutTab) ++ { ++ return false; ++ } ++ ++ Qt::MouseButton button = event->button(); ++ ++ if (currentIndex.isValid()) ++ { ++ QString buttonName = UBShortcutManager::buttonName(button); ++ mPreferencesUI->mouseButton->setText(buttonName); ++ bool ok = UBShortcutManager::shortcutManager()->checkData(currentIndex.siblingAtColumn(3), buttonName); ++ applyShortcutFilter(ok ? mPreferencesUI->filter->text() : buttonName, ok ? -1 : 3); ++ mPreferencesUI->recordButton->setEnabled(ok); ++ mPreferencesUI->report->setText(ok ? "" : tr("Mouse button already in use")); ++ return true; ++ } ++ ++ return false; ++} ++ ++bool UBPreferencesController::handleTabletEvent(QTabletEvent *event) ++{ ++ if (!mPreferencesUI->recordButton->isChecked() ++ || mPreferencesUI->mainTabWidget->currentWidget() != mPreferencesUI->shortcutTab) ++ { ++ return false; ++ } ++ ++ Qt::MouseButton button = event->button(); ++ ++ if (currentIndex.isValid()) ++ { ++ QString buttonName = UBShortcutManager::buttonName(button); ++ mPreferencesUI->stylusButton->setText(buttonName); ++ bool ok = UBShortcutManager::shortcutManager()->checkData(currentIndex.siblingAtColumn(4), buttonName); ++ applyShortcutFilter(ok ? mPreferencesUI->filter->text() : buttonName, ok ? -1 : 4); ++ mPreferencesUI->recordButton->setEnabled(ok); ++ mPreferencesUI->report->setText(ok ? "" : tr("Stylus button already in use")); ++ return true; ++ } ++ ++ return false; ++} ++ + void UBPreferencesController::adjustScreensPreferences() + { + bool enabled = UBApplication::displayManager->numScreens() > 1; +@@ -139,6 +225,50 @@ void UBPreferencesController::adjustScreensPreferences() + } + } + ++void UBPreferencesController::applyShortcutFilter(const QString &filter, int filterCol) ++{ ++ // go throug rows in reverse direction ++ QAbstractItemModel* model = mPreferencesUI->shortcutTableView->model(); ++ QModelIndex index = model->index(0, 0); ++ bool groupVisible = false; ++ int minCol = filterCol < 0 ? 0 : filterCol; ++ int maxCol = filterCol < 0 ? model->columnCount() : filterCol + 1; ++ ++ for (int row = model->rowCount() - 1; row >= 0; --row) ++ { ++ QModelIndex rowIndex = index.siblingAtRow(row); ++ bool match = false; ++ bool header = model->data(rowIndex, UBShortcutManager::GroupHeaderRole).toBool(); ++ ++ if (header) ++ { ++ match = groupVisible; ++ groupVisible = false; ++ } ++ else if (currentIndex.isValid() && currentIndex.row() == row) ++ { ++ match = true; ++ groupVisible = true; ++ } ++ else ++ { ++ for (int col = minCol; col < maxCol; ++col) ++ { ++ QModelIndex colIndex = rowIndex.siblingAtColumn(col); ++ ++ if (model->data(colIndex).toString().contains(filter, Qt::CaseInsensitive)) ++ { ++ match = true; ++ groupVisible = true; ++ break; ++ } ++ } ++ } ++ ++ mPreferencesUI->shortcutTableView->setRowHidden(row, !match); ++ } ++} ++ + void UBPreferencesController::show() + { + init(); +@@ -293,6 +423,21 @@ void UBPreferencesController::wire() + + // about tab + connect(mPreferencesUI->checkSoftwareUpdateAtLaunchCheckBox, SIGNAL(clicked(bool)), settings->appEnableAutomaticSoftwareUpdates, SLOT(setBool(bool))); ++ ++ // shortcut tab ++ connect(mPreferencesUI->shortcutTableView, SIGNAL(activated(const QModelIndex&)), this, SLOT(actionSelected(const QModelIndex&))); ++ connect(mPreferencesUI->filter, SIGNAL(textChanged(const QString&)), this, SLOT(applyShortcutFilter(const QString&))); ++ connect(mPreferencesUI->recordButton, SIGNAL(clicked(bool)), this, SLOT(recordingClicked(bool))); ++ connect(mPreferencesUI->abortButton, SIGNAL(clicked()), this, SLOT(abortClicked())); ++ connect(mPreferencesUI->resetButton, SIGNAL(clicked()), this, SLOT(resetClicked())); ++ connect(mPreferencesUI->noCtrl, &QCheckBox::toggled, UBShortcutManager::shortcutManager(), &UBShortcutManager::ignoreCtrl); ++ connect(mPreferencesUI->mainTabWidget, &QTabWidget::currentChanged, [this](int tab){ ++ auto shortcutTab = mPreferencesUI->mainTabWidget->indexOf(mPreferencesUI->shortcutTab); ++ ++ if (tab != shortcutTab) { ++ abortClicked(); ++ } ++ }); + } + + void UBPreferencesController::init() +@@ -351,6 +496,27 @@ void UBPreferencesController::init() + + mMarkerProperties->opacitySlider->setValue(settings->boardMarkerAlpha->get().toDouble() * 100); + ++ // shortcut tab ++ mPreferencesUI->shortcutTableView->setModel(UBShortcutManager::shortcutManager()); ++ mPreferencesUI->shortcutTableView->horizontalHeader()->setModel(UBShortcutManager::shortcutManager()); ++ mPreferencesUI->shortcutTableView->horizontalHeader()->resizeSection(0, 150); ++ mPreferencesUI->shortcutTableView->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); ++ mPreferencesUI->noCtrl->setChecked(settings->value("Shortcut/IgnoreCtrl").toBool()); ++ mPreferencesUI->noCtrl->setEnabled(!UBShortcutManager::shortcutManager()->hasCtrlConflicts()); ++} ++ ++bool UBPreferencesController::eventFilter(QObject *obj, QEvent *event) ++{ ++ if (event->type() == QEvent::KeyPress) ++ { ++ QKeyEvent *keyEvent = static_cast(event); ++ return handleKeyEvent(keyEvent); ++ } ++ else ++ { ++ // standard event processing ++ return QObject::eventFilter(obj, event); ++ } + } + + void UBPreferencesController::close() +@@ -445,7 +611,8 @@ void UBPreferencesController::defaultSettings() + mPreferencesUI->checkSoftwareUpdateAtLaunchCheckBox->setChecked(defaultValue); + + } +- else if(mPreferencesUI->mainTabWidget->currentWidget() == mPreferencesUI->networkTab){ ++ else if(mPreferencesUI->mainTabWidget->currentWidget() == mPreferencesUI->networkTab) ++ { + bool defaultValue = settings->webUseExternalBrowser->reset().toBool(); + mPreferencesUI->useExternalBrowserCheckBox->setChecked(defaultValue); + defaultValue = settings->webShowPageImmediatelyOnMirroredScreen->reset().toBool(); +@@ -480,6 +647,23 @@ void UBPreferencesController::defaultSettings() + lightBackgroundCrossOpacityValueChanged(lightBackgroundOpacity); + + } ++ else if(mPreferencesUI->mainTabWidget->currentWidget() == mPreferencesUI->shortcutTab) ++ { ++ if (mPreferencesUI->recordButton->isChecked()) ++ { ++ abortClicked(); ++ } ++ ++ UBShortcutManager* sm = UBShortcutManager::shortcutManager(); ++ ++ for (int row = 0; row < sm->rowCount(); ++row) ++ { ++ QModelIndex rowIndex = sm->index(row, 0); ++ sm->resetData(rowIndex); ++ } ++ ++ resetClicked(); ++ } + } + + void UBPreferencesController::darkBackgroundCrossOpacityValueChanged(int value) +@@ -690,6 +874,70 @@ void UBPreferencesController::systemOSKCheckBoxToggled(bool checked) + mPreferencesUI->keyboardPaletteKeyButtonSize_Label->setVisible(!checked); + } + ++void UBPreferencesController::actionSelected(const QModelIndex &index) ++{ ++ currentIndex = index; ++ UBShortcutManager* sm = UBShortcutManager::shortcutManager(); ++ mPreferencesUI->keySequence->setText(sm->data(index.siblingAtColumn(2), UBShortcutManager::PrimaryShortcutRole).toString()); ++ mPreferencesUI->mouseButton->setText(sm->data(index.siblingAtColumn(3)).toString()); ++ mPreferencesUI->stylusButton->setText(sm->data(index.siblingAtColumn(4)).toString()); ++ ++ bool isAction = sm->data(index, UBShortcutManager::ActionRole).toBool(); ++ mPreferencesUI->recordButton->setEnabled(true); ++ mPreferencesUI->shortcutsGroupBox->setEnabled(isAction); ++} ++ ++void UBPreferencesController::recordingClicked(bool checked) ++{ ++ if (!checked && currentIndex.isValid()) ++ { ++ UBShortcutManager* sm = UBShortcutManager::shortcutManager(); ++ sm->setData(currentIndex.siblingAtColumn(2), mPreferencesUI->keySequence->text()); ++ sm->setData(currentIndex.siblingAtColumn(3), sm->buttonIndex(mPreferencesUI->mouseButton->text())); ++ sm->setData(currentIndex.siblingAtColumn(4), sm->buttonIndex(mPreferencesUI->stylusButton->text())); ++ } ++ ++ mPreferencesUI->shortcutTableView->setSelectionMode(checked ? QTableView::NoSelection : QTableView::SingleSelection); ++ mPreferencesUI->recordButton->setText(checked ? tr("Accept", "preferencesDialog") : tr("Record", "preferencesDialog")); ++} ++ ++void UBPreferencesController::abortClicked() ++{ ++ applyShortcutFilter(mPreferencesUI->filter->text()); ++ ++ mPreferencesUI->recordButton->setEnabled(true); ++ mPreferencesUI->recordButton->setChecked(false); ++ mPreferencesUI->recordButton->setText(tr("Record", "preferencesDialog")); ++ mPreferencesUI->shortcutTableView->setSelectionMode(QTableView::SingleSelection); ++ mPreferencesUI->shortcutTableView->clearSelection(); ++ mPreferencesUI->report->setText(""); ++ mPreferencesUI->noCtrl->setEnabled(!UBShortcutManager::shortcutManager()->hasCtrlConflicts()); ++ actionSelected(mPreferencesUI->shortcutTableView->model()->index(0, 0)); ++} ++ ++void UBPreferencesController::resetClicked() ++{ ++ if (mPreferencesUI->recordButton->isChecked()) ++ { ++ abortClicked(); ++ } ++ ++ if (currentIndex.isValid()) ++ { ++ UBShortcutManager* sm = UBShortcutManager::shortcutManager(); ++ ++ sm->resetData(currentIndex); ++ applyShortcutFilter(mPreferencesUI->filter->text()); ++ ++ mPreferencesUI->keySequence->setText(sm->data(currentIndex.siblingAtColumn(2)).toString()); ++ mPreferencesUI->mouseButton->setText(sm->data(currentIndex.siblingAtColumn(3)).toString()); ++ mPreferencesUI->stylusButton->setText(sm->data(currentIndex.siblingAtColumn(4)).toString()); ++ } ++ ++ mPreferencesUI->report->setText(""); ++ mPreferencesUI->noCtrl->setEnabled(!UBShortcutManager::shortcutManager()->hasCtrlConflicts()); ++} ++ + UBBrushPropertiesFrame::UBBrushPropertiesFrame(QFrame* owner, const QList& lightBackgroundColors, + const QList& darkBackgroundColors, const QList& lightBackgroundSelectedColors, + const QList& darkBackgroundSelectedColors, UBPreferencesController* controller) +diff --git a/src/core/UBPreferencesController.h b/src/core/UBPreferencesController.h +index d89b4c181..25413762c 100644 +--- a/src/core/UBPreferencesController.h ++++ b/src/core/UBPreferencesController.h +@@ -70,6 +70,9 @@ class UBPreferencesController : public QObject + UBPreferencesController(QWidget *parent); + virtual ~UBPreferencesController(); + ++ bool handleKeyEvent(QKeyEvent *event); ++ bool handleMouseEvent(QMouseEvent *event); ++ bool handleTabletEvent(QTabletEvent *event); + + public slots: + +@@ -80,6 +83,8 @@ class UBPreferencesController : public QObject + void wire(); + void init(); + ++ virtual bool eventFilter(QObject* obj, QEvent* event) Q_DECL_OVERRIDE; ++ + UBPreferencesDialog* mPreferencesWindow; + Ui::preferencesDialog* mPreferencesUI; + UBBrushPropertiesFrame* mPenProperties; +@@ -104,14 +109,21 @@ class UBPreferencesController : public QObject + void toolbarOrientationVertical(bool checked); + void toolbarOrientationHorizontal(bool checked); + void systemOSKCheckBoxToggled(bool checked); ++ void actionSelected(const QModelIndex& index); ++ void recordingClicked(bool checked); ++ void abortClicked(); ++ void resetClicked(); + + private slots: + void adjustScreensPreferences(); ++ void applyShortcutFilter(const QString& filter, int filterCol = -1); ++ + + private: + static qreal sSliderRatio; + static qreal sMinPenWidth; + static qreal sMaxPenWidth; ++ QModelIndex currentIndex; + }; + + class UBBrushPropertiesFrame : public Ui::brushProperties + +From 414b6d55e67c0612a6318fd3acfa495432e44b73 Mon Sep 17 00:00:00 2001 +From: letsfindaway +Date: Mon, 30 Sep 2024 16:21:21 +0200 +Subject: [PATCH 2/2] i18n: update German translation + +- change ownership of a translation string in UBShortcutManager +- add new translation strings +- update a few translations +--- + resources/i18n/OpenBoard_de.ts | 70 ++++++++++++++++++++++++++++++++-- + src/core/UBShortcutManager.cpp | 2 +- + 2 files changed, 67 insertions(+), 5 deletions(-) + +diff --git a/resources/i18n/OpenBoard_de.ts b/resources/i18n/OpenBoard_de.ts +index 275332271..b4e278c81 100644 +--- a/resources/i18n/OpenBoard_de.ts ++++ b/resources/i18n/OpenBoard_de.ts +@@ -3008,6 +3008,28 @@ Möchten Sie diese Fehler für diesen Computer ignorieren? + Use all available displays + Alle verfügbaren Bildschirme nutzen + ++ ++ Key sequence already in use ++ Tastenkombination wird bereits benutzt ++ ++ ++ Mouse button already in use ++ Maustaste wird bereits benutzt ++ ++ ++ Stylus button already in use ++ Stifttaste wird bereits benutzt ++ ++ ++ Accept ++ preferencesDialog ++ Übernehmen ++ ++ ++ Record ++ preferencesDialog ++ Aufnehmen ++ + + + UBSettings +@@ -3079,7 +3101,7 @@ Möchten Sie diese Fehler für diesen Computer ignorieren? + + + Reset zoom factor +- Zoom zurücksetzen ++ Zoom-Faktor zurücksetzen + + + +@@ -3129,7 +3151,7 @@ Möchten Sie diese Fehler für diesen Computer ignorieren? + + + Command +- Kommando ++ Befehl + + + +@@ -3144,12 +3166,12 @@ Möchten Sie diese Fehler für diesen Computer ignorieren? + + + Mouse Button +- Mausknopf ++ Maustaste + + + + Tablet Button +- Tablet Stiftknopf ++ Stifttaste + + + +@@ -4076,6 +4098,46 @@ p, li { white-space: pre-wrap; } + List of screens used for Control, Display and Previous pages + Liste der Bildschirme, die für die Hauptansicht, Erweiterte Ansicht und Vorherige Seiten verwendet werden + ++ ++ Shortcut ++ Kurzbefehl ++ ++ ++ Filter ++ Filter ++ ++ ++ Active keyboard shortcuts without pressing Ctrl key ++ Aktiviere Kurzbefehle auch ohne Strg Taste ++ ++ ++ Shortcuts ++ Kurzbefehle ++ ++ ++ Abort ++ Abbrechen ++ ++ ++ Record ++ Aufnehmen ++ ++ ++ Stylus Button ++ Stifttaste ++ ++ ++ Mouse Button ++ Maustaste ++ ++ ++ Reset ++ Zurücksetzen ++ ++ ++ Key Sequence ++ Tasten ++ + + + trapFlashDialog +diff --git a/src/core/UBShortcutManager.cpp b/src/core/UBShortcutManager.cpp +index dfe8c8239..56a66a870 100644 +--- a/src/core/UBShortcutManager.cpp ++++ b/src/core/UBShortcutManager.cpp +@@ -43,7 +43,7 @@ UBShortcutManager* UBShortcutManager::sShortcutManager = nullptr; + + UBShortcutManager::UBShortcutManager() : mIgnoreCtrl(false) + { +- actionsOfGroup(QObject::tr("Common")); ++ actionsOfGroup(tr("Common")); + } + + UBShortcutManager *UBShortcutManager::shortcutManager() diff --git a/1387-fix-poppler-25-11.patch b/1387-fix-poppler-25-11.patch new file mode 100644 index 0000000..4747d20 --- /dev/null +++ b/1387-fix-poppler-25-11.patch @@ -0,0 +1,25 @@ +From 0beaa9c088728cd51928cedad4847f4ccd48cd2a Mon Sep 17 00:00:00 2001 +From: Vekhir +Date: Mon, 8 Dec 2025 00:07:19 +0100 +Subject: [PATCH] Explicit cast to string_view + +Poppler 25.12 allows string_view and char*. QByteArray can be converted to both, so choose one explicitly +--- + src/pdf/XPDFRenderer.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/pdf/XPDFRenderer.cpp b/src/pdf/XPDFRenderer.cpp +index e8eb1c64d..23b76a9aa 100644 +--- a/src/pdf/XPDFRenderer.cpp ++++ b/src/pdf/XPDFRenderer.cpp +@@ -61,7 +61,9 @@ XPDFRenderer::XPDFRenderer(const QString &filename, bool importingFile) + #endif + globalParams->setupBaseFonts(QFile::encodeName(UBPlatformUtils::applicationResourcesDirectory() + "/" + "fonts").data()); + } +-#if POPPLER_VERSION_MAJOR > 22 || (POPPLER_VERSION_MAJOR == 22 && POPPLER_VERSION_MINOR >= 3) ++#if POPPLER_VERSION_MAJOR > 25 || (POPPLER_VERSION_MAJOR == 25 && POPPLER_VERSION_MINOR >= 12) ++ mDocument = new PDFDoc(std::make_unique(static_cast(filename.toLocal8Bit()))); ++#elif POPPLER_VERSION_MAJOR > 22 || (POPPLER_VERSION_MAJOR == 22 && POPPLER_VERSION_MINOR >= 3) + mDocument = new PDFDoc(std::make_unique(filename.toLocal8Bit())); + #else + mDocument = new PDFDoc(new GooString(filename.toLocal8Bit()), 0, 0, 0); // the filename GString is deleted on PDFDoc desctruction diff --git a/9117-disable-software-update.patch b/9117-disable-software-update.patch new file mode 100644 index 0000000..4c3de91 --- /dev/null +++ b/9117-disable-software-update.patch @@ -0,0 +1,41 @@ +From cc89f09bbc7f464ad79eaa82a74d490d507e4756 Mon Sep 17 00:00:00 2001 +From: letsfindaway +Date: Wed, 16 Nov 2022 08:31:29 +0100 +Subject: [PATCH] feat: disable software update check + +- for packages maintained by a Linux distribution, + a software update check is not relevant +- disable the check in the settings +- hide the associated checkbox in the preferences +--- + resources/etc/OpenBoard.config | 5 ++--- + src/core/UBPreferencesController.cpp | 1 + + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/resources/etc/OpenBoard.config b/resources/etc/OpenBoard.config +index ce77e232e..a3c8bf04e 100644 +--- a/resources/etc/OpenBoard.config ++++ b/resources/etc/OpenBoard.config +@@ -1,8 +1,7 @@ + [App] +-HideCheckForSoftwareUpdate=false ++HideCheckForSoftwareUpdate=true + HideSwapDisplayScreens=true +-EnableAutomaticSoftwareUpdates=true +-EnableSoftwareUpdates=true ++EnableAutomaticSoftwareUpdates=false + EnableStartupHints=true + FavoriteToolURIs=openboardtool://openboard/mask, openboardtool://ruler, openboardtool://compass, openboardtool://protractor, openboardtool://triangle, openboardtool://magnifier, openboardtool://cache + IsInSoftwareUpdateProcess=false +diff --git a/src/core/UBPreferencesController.cpp b/src/core/UBPreferencesController.cpp +index ed0e393d8..b67c415c3 100644 +--- a/src/core/UBPreferencesController.cpp ++++ b/src/core/UBPreferencesController.cpp +@@ -85,6 +85,7 @@ UBPreferencesController::UBPreferencesController(QWidget *parent) + mPreferencesWindow = new UBPreferencesDialog(this,parent, Qt::Dialog); + mPreferencesUI = new Ui::preferencesDialog(); // deleted in destructor + mPreferencesUI->setupUi(mPreferencesWindow); ++ mPreferencesUI->softwareUpdateGroupBox->hide(); // disable check for software update + adjustScreensPreferences(); + + connect(UBApplication::displayManager, &UBDisplayManager::availableScreenCountChanged, this, &UBPreferencesController::adjustScreensPreferences); diff --git a/OpenBoard-1.7.3.tar.gz b/OpenBoard-1.7.3.tar.gz new file mode 100644 index 0000000..6cab04c --- /dev/null +++ b/OpenBoard-1.7.3.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55532df042e3a5b36e1f6f1e29916d3bbd01796d920782fa1f8a03438dcddd9c +size 63271111 diff --git a/OpenBoard.changes b/OpenBoard.changes new file mode 100644 index 0000000..13faf41 --- /dev/null +++ b/OpenBoard.changes @@ -0,0 +1,373 @@ +------------------------------------------------------------------- +Thu Dec 18 10:34:30 UTC 2025 - Martin Winter + +- add patch 1387-fix-poppler-25-11.patch + * compatibility with poppler 25.11 + * already merged upstream for next release + +------------------------------------------------------------------- +Mon Dec 23 20:47:49 UTC 2024 - Martin Winter + +- update to release version 1.7.3 +- remove patch 1165-fix-some-wayland-problems.patch + * users reported problems with this patch + * will not be merged upstream + +------------------------------------------------------------------- +Mon Nov 18 14:08:50 UTC 2024 - Martin Winter + +- update to release version 1.7.2 +- remove upstreamed patches + * remove 0569-scale-mirror-pixmap.patch + * remove 0961-use-cpp20.patch + * remove 0962-fix-cpp20-compatibility.patch + * remove 1010-fix-qapp-cast.patch + * remove 1017-ffmpeg7.patch +- adjust patches to new version + * adjust 0955-shortcut-configuration.patch + * adjust 9117-disable-software-update.patch +- add patch to circumvent some problems on wayland + * add 1165-fix-some-wayland-problems.patch +- switch from Qt5 to Qt6 + +------------------------------------------------------------------- +Tue Aug 13 14:27:48 UTC 2024 - Martin Winter + +- compatibility with ffmpeg-7 + * add 1017-ffmpeg7.patch + * patch is already merged and will be part of the next release + +------------------------------------------------------------------- +Thu Jul 4 06:31:52 UTC 2024 - Martin Winter + +- compatibility with poppler >= 24.05 + * poppler >= 24.05 requires c++20 + * add 0961-use-cpp20.patch + * add 0962-fix-cpp20-compatibility.patch + * both patches are already merged upstream + and will be part of the next release + +------------------------------------------------------------------- +Sun Jun 9 08:35:35 UTC 2024 - Martin Winter + +- fix a problem with latest plasma5 security patches + * add 1010-fix-qapp-cast.patch + +------------------------------------------------------------------- +Wed May 8 09:01:25 UTC 2024 - Martin Winter + +- update to release version 1.7.1 +- remove upstreamed patches + * remove 0830-cmake-community-builds.patch + * remove 9686-cmake-add-shortcut-manager.patch +- update patch to match updated sources + * replace 0686-shortcut-configuration.patch by 0955-shortcut-configuration.patch + +------------------------------------------------------------------- +Sat Dec 9 09:21:18 UTC 2023 - Martin Winter + +- update to release version 1.7.0 +- update patches to match updated sources + * update 0569-scale-mirror-pixmap.patch + * update 0686-shortcut-configuration.patch +- replace build system patch + * remove 0698-add-cmake-build-system.patch + * add 0830-cmake-community-builds.patch +- switch from pgkconfig to cmake for some BuildRequires + +------------------------------------------------------------------- +Sun Jun 18 06:21:57 UTC 2023 - Martin Winter + +- update to version 1.7.0~git20230614.2ff8f29 + * feature freeze before release +- remove upstreamed patches + * remove upstreamed 0551-common-background-drawing.patch + * remove upstreamed 0677-pdf-export-page-size.patch +- update patches to match updated sources + * update 0686-shortcut-configuration.patch + * update 0698-add-cmake-build-system.patch + * update 9117-disable-software-update.patch + +------------------------------------------------------------------- +Wed Jan 25 10:39:59 UTC 2023 - Dominique Leuenberger + +- BuildRequire pkgconfig(libavdevice) instead of ffmpeg-devel: let + OBS figure out the right packages that do not conlfict. + +------------------------------------------------------------------- +Tue Nov 29 16:17:02 UTC 2022 - Martin Winter + +- update to version 1.7.0~git20221129.9de37af +- feat: user configurable shortcuts + * replace 0460-shortcut-configuration.patch by updated + 0686-shortcut-configuration.patch + * add 9686-cmake-add-shortcut-manager.patch + add new files to CMakeLists.txt +- fix: background drawing when switching page size + * update 0551-common-background-drawing.patch +- fix: mirror pixmap size + * update 0569-scale-mirror-pixmap.patch +- remove upstreamed patches + * remove upstreamed 0604-qt-5.12-compatibility.patch + * remove upstreamed 0629-bug-ruler.patch + * remove upstreamed 0633-improve-displaymanager.patch + * remove upstreamed 0637-fix-pdf-background-export.patch + * remove upstreamed 0641-fix-font-handling.patch + * remove upstreamed 0649-fix-pdf-export-scaling.patch +- chore: replace qmake by cmake build system + * remove 0651-chore-reorganize-linux-build.patch + * add 0698-add-cmake-build-system.patch +- fix: page size for PDF export + * add 0677-pdf-export-page-size.patch +- disable software update from openboard web page + * add 9117-disable-software-update.patch + +------------------------------------------------------------------- +Tue Sep 20 09:23:13 UTC 2022 - Martin Winter + +- fix file list in spec file + - do not include /usr/share/mime/packages directory owned by + filesystem + +------------------------------------------------------------------- +Wed Sep 14 06:24:01 UTC 2022 - Martin Winter + +- update to version 1.7.0~git20220914.47a96e1 +- feat: user configurable shortcuts + * add 0460-shortcut-configuration.patch +- fix: boxing in single screen mode + * update 0633-improve-displaymanager.patch +- fix: PDF background export + * update 0637-fix-pdf-background-export.patch +- fix: font handling + * update 0641-fix-font-handling.patch +- fix: PDF export scaling + * add 0649-fix-pdf-export-scaling.patch +- refactor: Linux build and installation + * add 0651-chore-reorganize-linux-build.patch + * replaces 0001-Rewrite-libs.pri.patch + * replaces 0002-Install-to-correct-directories-on-linux.patch + * replaces 0003-podcast.pri-port-to-pkgconfig.patch + * replaces 0004-Use-QStandardPaths-to-locate-resources.patch + * replaces 0005-Add-svg-icon.patch + * replaces 0006-pro-Remove-UB_THIRDPARTY_INTERACTIVE.patch + * replaces 0007-Linux-Only-use-onboard-by-default-if-it-s-installed.patch + * replaces 0008-install-fonts.patch + * add mimespec for .ubz files + * also improve handling of onboard on-screen keyboard +- refactor: clean spec file + +------------------------------------------------------------------- +Fri Jun 24 09:56:26 UTC 2022 - Martin Winter + +- minor changes in spec file + +------------------------------------------------------------------- +Fri Jun 24 09:13:52 UTC 2022 - Martin Winter + +- fix several issues + - add 0008-install-fonts.patch + - add 0637-fix-pdf-background-export.patch + - add 0641-fix-font-handling.patch + +------------------------------------------------------------------- +Sun Jun 19 13:03:26 UTC 2022 - Martin Winter + +- update to 1.7.0~git47a96e1 + - use development branch to enable build for Tumbleweed + (switch from QWebKit to QWebEngine) +- add patches fixing known issues according to existing upstream PRs + - 0551-common-background-drawing.patch + - 0569-scale-mirror-pixmap.patch + - 0604-qt-5.12-compatibility.patch + - 0629-bug-ruler.patch + - 0633-improve-displaymanager.patch +- remove unused build dependencies + +------------------------------------------------------------------- +Mon Jun 13 09:21:50 UTC 2022 - Martin Winter + +- Update to 1.6.3 + - see https://github.com/OpenBoard-org/OpenBoard/releases/tag/v1.6.3 + +------------------------------------------------------------------- +Mon Jun 6 09:38:26 UTC 2022 - Martin Winter + +- Update to 1.6.2 + - see https://github.com/OpenBoard-org/OpenBoard/releases/tag/v1.6.2 + - adapt 0001-Rewrite-libs.pri.patch + - adapt 0002-Install-to-correct-directories-on-linux.patch + - drop 0573-compile-with-poppler-22.03.patch (upstreamed) + +------------------------------------------------------------------- +Tue Mar 15 17:28:47 UTC 2022 - Martin Winter + +- add 0573-compile-with-poppler-22.03.patch + +------------------------------------------------------------------- +Tue Dec 28 10:31:51 UTC 2021 - Martin Winter + +- update to OpenBoard 1.6.1 + - adapt patches + +------------------------------------------------------------------- +Mon Feb 8 18:36:17 UTC 2021 - Adam Majer + +- Compile translations so they are installed (bsc#1181857) + +------------------------------------------------------------------- +Mon Nov 23 12:20:56 UTC 2020 - Adam Majer + +- 0001-Rewrite-libs.pri.patch: + + update patch and BR on now weirdly named quazip - pkgconfig(quazip1-qt5) + + continue to function with with pkgconfig(quazip) in Leap 15.2 +- Remove BR on libx264-devel and fdk-aac-devel as these are no longer + available in Factory + +------------------------------------------------------------------- +Sat May 23 15:58:55 UTC 2020 - Frank Schütte + +- fixed building with patches from https://github.com/flathub/ch.openboard.OpenBoard + +------------------------------------------------------------------- +Fri May 22 11:48:28 UTC 2020 - Frank Schütte + +- update to 1.5.4 + +------------------------------------------------------------------- +Mon Jun 10 17:00:17 UTC 2019 - Frank Schütte + +- remove openssl patch + +------------------------------------------------------------------- +Mon Jun 10 16:49:24 UTC 2019 - Frank Schütte + +- Update to OpenBoard 1.5.3 +- updated OpenBoard-no-Third-Party patch + +------------------------------------------------------------------- +Fri Jan 25 11:44:14 UTC 2019 - F.Schuette@t-online.de + +- Update to OpenBoard 1.5.2 + +------------------------------------------------------------------- +Tue Sep 11 21:19:36 UTC 2018 - F.Schuette@t-online.de + +- Update to OpenBoard 1.4.1 + * Add patch for ffmpeg includes. + +------------------------------------------------------------------- +Wed Jan 10 19:01:57 UTC 2018 - antoine.belvire@opensuse.org + +- Add compatibility with OpenSSL 1.1 API: + * OpenBoard-1.3.6-add-openssl-1.1-compat.patch. + * Authorize build with OpenSSL 1.1 by removing version constraint + on "BuildRequires". +- Merge quazip_libname.patch with OpenBoard-no_Third-Party.patch. + +------------------------------------------------------------------- +Tue Jan 9 22:17:13 UTC 2018 - antoine.belvire@opensuse.org + +- Update to version 1.3.6: + * Fix several issues relating to copy-pasting and + cut-and-pasting elements from one page or document to another. + * Fix an issue where pen strokes that had been erased with the + eraser would reappear after saving and loading. + * Fix an issue where duplicating a pen stroke that had been + moved could cause the new stroke to be placed in the wrong + position. + * Fix an issue where strokes could be badly placed after using + the "undo" and "redo" functions. + * Fix an issue where compass strokes were not saved (when + making several strokes, only the first one was saved). + * Fix an issue where pages could be truncated when exporting to + PDF. + * Fix an issue where locked items could be moved when part of a + multiple selection + * (Document mode) Fix document selection after deleting a + trashed document. + * Tweak the background grid color for the dark background. + * The mask tool can now be resized non-proportionately. + * Re-implemented automatic update checking, which will appear + to users when the next version is released. +- Changes from version 1.3.5: + * Fix detection of "cloned" multi-monitor setups to avoid + multi-screen mode being activated in this configuration. + [Note: some problems remain with multi-monitor setups on some + Linux versions.]. + * Text items: Text can no longer be selected or edited if the + text item is marked as non-editable through its menu. + * Text items: On page load, text items no longer take keyboard + focus. + * Library pane: Fix moving of items (upon moving an item to a + folder, the item would not immediately disappear from its + current location). + * Library pane: Fix nested folder issue in breadcrumbs trail (two + folders that were at the same path and whose names started with + the same characters were considered by the breadcrumbs trail to + be nested). + * Document view: Fix folder names not being saved after renaming + them. + * Fix audio item saving (v1.3.3 bug): Documents containing an + audio item were saved incorrectly, making the audio unplayable + upon page load. + * Desktop mode: Eraser and marker preview circles now disappear + when the cursor hovers over the left or right-hand toolbars, as + in board mode. +- Drop OpenBoard-fix-call-of-overloaded-abs-is-ambiguous.patch + (fixed upstream). +- Fix some rpmlint warnings. + +------------------------------------------------------------------- +Tue Jan 9 20:19:28 UTC 2018 - antoine.belvire@opensuse.org + +- Fix build: + * Change OpenBoard-XPDFRenderer_with_poppler.patch to make it + work with libpoppler >= 0.55. + * Force use of OpenSSL 1.0 as build requirement instead of 1.1. + * Use "libquazip-qt5-devel" instead of "quazip-qt5-devel" in + build requirements to fix build on Leap. + +------------------------------------------------------------------- +Fri Jun 30 13:33:43 UTC 2017 - adam.majer@suse.de + +- quazip_libname.patch: Use quazip-qt5 instead of quazip as mixing + Qt versions is bad. Qt5 quazip also uses a different library + name. (boo#1042040) +- add missing libpulse BuildRequires + +------------------------------------------------------------------- +Mon Feb 13 19:40:30 UTC 2017 - mrueckert@suse.de + +- update to 1.3.4 + - OS X: fixed desktop drop shadow bug: when switching from + desktop mode to board mode and back, shadows were drawn behind + annotations; these persisted even if the annotation was erased + - Windows: Updated bundled Visual C++ runtime library; fixed + installer so that the library installation would be silent (no + more dialog box appearing) + - Linux: fixed detection of "cloned" multi-monitor setups to + avoid multi-screen mode being activated in this configuration. + [Note: some problems remain with multi-monitor setups on some + Linux versions; see Known Issues] + - Text items: text can no longer be selected or edited if the + text item is marked as non-editable through its menu + - Text items: on page load, text items no longer take keyboard + focus + - Library pane: fixed moving of items (upon moving an item to a + folder, the item would not immediately disappear from its + current location) + - Library pane: fixed nested folder issue in breadcrumbs trail + (two folders that were at the same path and whose names started + with the same characters were considered by the breadcrumbs + trail to be nested) + - Document view: fixed folder names not being saved after + renaming them + - Fixed audio item saving (v1.3.3 bug): documents containing an + audio item were saved incorrectly, making the audio unplayable + upon page load + - Desktop mode: eraser and marker preview circles now disappear + when the cursor hovers over the left or right-hand toolbars, as + in board mode +- refreshed OpenBoard-XPDFRenderer_with_poppler.patch to apply + cleanly again diff --git a/OpenBoard.spec b/OpenBoard.spec new file mode 100644 index 0000000..64acfc4 --- /dev/null +++ b/OpenBoard.spec @@ -0,0 +1,95 @@ +# +# spec file for package OpenBoard +# +# Copyright (c) 2025 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define namelc openboard +%define fqname ch.%{namelc}.%{name} +Name: OpenBoard +Version: 1.7.3 +Release: 0 +Summary: Interactive whiteboard for schools and universities +License: GPL-3.0-or-later +Group: Amusements/Teaching/Other +URL: https://openboard.ch +Source0: https://github.com/OpenBoard-org/OpenBoard/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +# https://github.com/OpenBoard-org/OpenBoard/pull/955 +Patch955: 0955-shortcut-configuration.patch +# https://github.com/OpenBoard-org/OpenBoard/pull/1387 +Patch1387: 1387-fix-poppler-25-11.patch +# https://github.com/letsfindaway/OpenBoard/pull/117 +Patch9117: 9117-disable-software-update.patch +BuildRequires: desktop-file-utils +BuildRequires: fdupes +BuildRequires: pkgconfig +BuildRequires: cmake(Qt6Concurrent) +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6LinguistTools) +BuildRequires: cmake(Qt6Multimedia) +BuildRequires: cmake(Qt6MultimediaWidgets) +BuildRequires: cmake(Qt6Network) +BuildRequires: cmake(Qt6PrintSupport) +BuildRequires: cmake(Qt6Svg) +BuildRequires: cmake(Qt6UiTools) +BuildRequires: cmake(Qt6WebEngineWidgets) +BuildRequires: cmake(Qt6Xml) +BuildRequires: pkgconfig(libavdevice) +BuildRequires: pkgconfig(openssl) +BuildRequires: pkgconfig(poppler) +BuildRequires: pkgconfig(quazip1-qt6) +Recommends: onboard +%if 0%{?suse_version} < 1600 +BuildRequires: gcc10-c++ +%endif + +%description +OpenBoard is an open source cross-platform interactive white board +application designed primarily for use in schools. It was +originally forked from Open-Sankoré, which was itself based on +Uniboard. + +%prep +%autosetup -p1 -n %{name}-%{version} + +%build +%if 0%{?suse_version} < 1600 +export CXX=%{_bindir}/g++-10 +%cmake +%else +%cmake -DCMAKE_CXX_STANDARD=20 +%endif +%cmake_build + +%install +%cmake_install +%fdupes -s %{buildroot} + +%files +%license LICENSE +%doc COPYRIGHT +%dir %{_datadir}/icons/hicolor +%dir %{_datadir}/icons/hicolor/scalable +%dir %{_datadir}/icons/hicolor/scalable/apps +%dir %{_datadir}/icons/hicolor/scalable/mimetypes +%{_datadir}/applications/%{fqname}.desktop +%{_datadir}/icons/hicolor/scalable +%{_datadir}/mime/packages/* +%{_datadir}/%{namelc} +%{_bindir}/%{namelc} +%config %{_sysconfdir}/%{namelc} + +%changelog -- 2.51.1 From 09164b7f6dea5d1a97e160a90a000ee9546ce71077893014d5c53ac7ee00bdc7 Mon Sep 17 00:00:00 2001 From: Martin Winter Date: Sun, 25 Jan 2026 18:06:54 +0000 Subject: [PATCH 2/4] - update to release version 1.7.4 - remove upstreamed patch 1387-fix-poppler-25-11.patch OBS-URL: https://build.opensuse.org/package/show/Education/OpenBoard?expand=0&rev=47 --- .gitattributes | 23 + .gitignore | 1 + 0955-shortcut-configuration.patch | 745 +++++++++++++++++++++++++++++ 1387-fix-poppler-25-11.patch | 25 + 9117-disable-software-update.patch | 41 ++ OpenBoard-1.7.3.tar.gz | 3 + OpenBoard-1.7.4.tar.gz | 3 + OpenBoard.changes | 379 +++++++++++++++ OpenBoard.spec | 93 ++++ 9 files changed, 1313 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 0955-shortcut-configuration.patch create mode 100644 1387-fix-poppler-25-11.patch create mode 100644 9117-disable-software-update.patch create mode 100644 OpenBoard-1.7.3.tar.gz create mode 100644 OpenBoard-1.7.4.tar.gz create mode 100644 OpenBoard.changes create mode 100644 OpenBoard.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/0955-shortcut-configuration.patch b/0955-shortcut-configuration.patch new file mode 100644 index 0000000..5825c1d --- /dev/null +++ b/0955-shortcut-configuration.patch @@ -0,0 +1,745 @@ +From 07141652f2bcd3eba16fb5291532b52e8b530fc0 Mon Sep 17 00:00:00 2001 +From: letsfindaway +Date: Sun, 25 Aug 2024 15:34:04 +0200 +Subject: [PATCH 1/2] feat: add preferences dialog for shortcut configuration + +- recording of key sequences amd mouse/stylus buttons +- collect actions, filtering, collision detection +- persist shortcut settings +--- + resources/forms/preferences.ui | 169 ++++++++++++++++++ + src/core/UBApplication.cpp | 28 +++ + src/core/UBPreferencesController.cpp | 252 ++++++++++++++++++++++++++- + src/core/UBPreferencesController.h | 12 ++ + 4 files changed, 459 insertions(+), 2 deletions(-) + +diff --git a/resources/forms/preferences.ui b/resources/forms/preferences.ui +index 45a2fc180..9b73f8d65 100644 +--- a/resources/forms/preferences.ui ++++ b/resources/forms/preferences.ui +@@ -1095,6 +1095,175 @@ + + + ++ ++ ++ Shortcut ++ ++ ++ ++ ++ ++ Filter ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ 0 ++ 0 ++ 789 ++ 447 ++ ++ ++ ++ ++ ++ ++ QAbstractItemView::NoEditTriggers ++ ++ ++ false ++ ++ ++ QAbstractItemView::SingleSelection ++ ++ ++ QAbstractItemView::SelectRows ++ ++ ++ false ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ 25 ++ ++ ++ 25 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Active keyboard shortcuts without pressing Ctrl key ++ ++ ++ ++ ++ ++ ++ ++ ++ false ++ ++ ++ Shortcuts ++ ++ ++ Qt::AlignCenter ++ ++ ++ ++ ++ ++ color: red; ++ ++ ++ Qt::PlainText ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ Abort ++ ++ ++ ++ ++ ++ ++ Record ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ Stylus Button ++ ++ ++ ++ ++ ++ ++ Mouse Button ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ Reset ++ ++ ++ ++ ++ ++ ++ Key Sequence ++ ++ ++ ++ ++ ++ ++ ++ + + + true +diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp +index 9e74e09a3..44017610b 100644 +--- a/src/core/UBApplication.cpp ++++ b/src/core/UBApplication.cpp +@@ -704,6 +704,34 @@ bool UBApplication::eventFilter(QObject *obj, QEvent *event) + || result; + } + ++ else if (event->type() == QEvent::MouseButtonPress) ++ { ++ // intercept special mouse buttons for shortcut handler ++ QMouseEvent *mouseEvent = static_cast(event); ++ Qt::MouseButton button = mouseEvent->button(); ++ ++ if (button != Qt::LeftButton && button != Qt::RightButton) ++ { ++ return mPreferencesController->handleMouseEvent(mouseEvent) ++ || UBShortcutManager::shortcutManager()->handleMouseEvent(mouseEvent) ++ || result; ++ } ++ } ++ ++ else if (event->type() == QEvent::TabletPress) ++ { ++ // intercept special tablet buttons for shortcut handler ++ QTabletEvent *tabletEvent = static_cast(event); ++ Qt::MouseButton button = tabletEvent->button(); ++ ++ if (button != Qt::LeftButton) ++ { ++ return mPreferencesController->handleTabletEvent(tabletEvent) ++ || UBShortcutManager::shortcutManager()->handleTabletEvent(tabletEvent) ++ || result; ++ } ++ } ++ + return result; + } + +diff --git a/src/core/UBPreferencesController.cpp b/src/core/UBPreferencesController.cpp +index ed0e393d8..145323385 100644 +--- a/src/core/UBPreferencesController.cpp ++++ b/src/core/UBPreferencesController.cpp +@@ -37,6 +37,7 @@ + #include "core/UBSetting.h" + #include "core/UBApplicationController.h" + #include "core/UBDisplayManager.h" ++#include "core/UBShortcutManager.h" + + #include "frameworks/UBStringUtils.h" + +@@ -72,7 +73,6 @@ void UBPreferencesDialog::closeEvent(QCloseEvent* e) + } + + +- + UBPreferencesController::UBPreferencesController(QWidget *parent) + : QObject(parent) + , mPreferencesWindow(0) +@@ -88,6 +88,8 @@ UBPreferencesController::UBPreferencesController(QWidget *parent) + adjustScreensPreferences(); + + connect(UBApplication::displayManager, &UBDisplayManager::availableScreenCountChanged, this, &UBPreferencesController::adjustScreensPreferences); ++ mPreferencesUI->shortcutTab->installEventFilter(this); ++ + wire(); + } + +@@ -103,6 +105,90 @@ UBPreferencesController::~UBPreferencesController() + delete mMarkerProperties; + } + ++bool UBPreferencesController::handleKeyEvent(QKeyEvent *event) ++{ ++ if (!mPreferencesUI->recordButton->isChecked() ++ || mPreferencesUI->mainTabWidget->currentWidget() != mPreferencesUI->shortcutTab) ++ { ++ return false; ++ } ++ ++ int key = event->key(); ++ Qt::KeyboardModifiers mods = event->modifiers(); ++ QString text = event->text(); ++ ++ int keys = mods; ++ ++ if (key < Qt::Key_Shift || key > Qt::Key_ScrollLock) ++ { ++ keys += key; ++ } ++ ++ // compose key sequence from active modifiers and key ++ QKeySequence keySequence(keys); ++ QString keyString = keySequence.toString(); ++ mPreferencesUI->keySequence->setText(keyString); ++ ++ if (currentIndex.isValid()) ++ { ++ bool ok = UBShortcutManager::shortcutManager()->checkData(currentIndex.siblingAtColumn(2), keyString); ++ applyShortcutFilter(ok ? mPreferencesUI->filter->text() : keyString, ok ? -1 : 2); ++ mPreferencesUI->recordButton->setEnabled(ok); ++ mPreferencesUI->report->setText(ok ? "" : tr("Key sequence already in use")); ++ mPreferencesUI->noCtrl->setEnabled(!UBShortcutManager::shortcutManager()->hasCtrlConflicts(keySequence)); ++ } ++ ++ return true; ++} ++ ++bool UBPreferencesController::handleMouseEvent(QMouseEvent *event) ++{ ++ if (!mPreferencesUI->recordButton->isChecked() ++ || mPreferencesUI->mainTabWidget->currentWidget() != mPreferencesUI->shortcutTab) ++ { ++ return false; ++ } ++ ++ Qt::MouseButton button = event->button(); ++ ++ if (currentIndex.isValid()) ++ { ++ QString buttonName = UBShortcutManager::buttonName(button); ++ mPreferencesUI->mouseButton->setText(buttonName); ++ bool ok = UBShortcutManager::shortcutManager()->checkData(currentIndex.siblingAtColumn(3), buttonName); ++ applyShortcutFilter(ok ? mPreferencesUI->filter->text() : buttonName, ok ? -1 : 3); ++ mPreferencesUI->recordButton->setEnabled(ok); ++ mPreferencesUI->report->setText(ok ? "" : tr("Mouse button already in use")); ++ return true; ++ } ++ ++ return false; ++} ++ ++bool UBPreferencesController::handleTabletEvent(QTabletEvent *event) ++{ ++ if (!mPreferencesUI->recordButton->isChecked() ++ || mPreferencesUI->mainTabWidget->currentWidget() != mPreferencesUI->shortcutTab) ++ { ++ return false; ++ } ++ ++ Qt::MouseButton button = event->button(); ++ ++ if (currentIndex.isValid()) ++ { ++ QString buttonName = UBShortcutManager::buttonName(button); ++ mPreferencesUI->stylusButton->setText(buttonName); ++ bool ok = UBShortcutManager::shortcutManager()->checkData(currentIndex.siblingAtColumn(4), buttonName); ++ applyShortcutFilter(ok ? mPreferencesUI->filter->text() : buttonName, ok ? -1 : 4); ++ mPreferencesUI->recordButton->setEnabled(ok); ++ mPreferencesUI->report->setText(ok ? "" : tr("Stylus button already in use")); ++ return true; ++ } ++ ++ return false; ++} ++ + void UBPreferencesController::adjustScreensPreferences() + { + bool enabled = UBApplication::displayManager->numScreens() > 1; +@@ -139,6 +225,50 @@ void UBPreferencesController::adjustScreensPreferences() + } + } + ++void UBPreferencesController::applyShortcutFilter(const QString &filter, int filterCol) ++{ ++ // go throug rows in reverse direction ++ QAbstractItemModel* model = mPreferencesUI->shortcutTableView->model(); ++ QModelIndex index = model->index(0, 0); ++ bool groupVisible = false; ++ int minCol = filterCol < 0 ? 0 : filterCol; ++ int maxCol = filterCol < 0 ? model->columnCount() : filterCol + 1; ++ ++ for (int row = model->rowCount() - 1; row >= 0; --row) ++ { ++ QModelIndex rowIndex = index.siblingAtRow(row); ++ bool match = false; ++ bool header = model->data(rowIndex, UBShortcutManager::GroupHeaderRole).toBool(); ++ ++ if (header) ++ { ++ match = groupVisible; ++ groupVisible = false; ++ } ++ else if (currentIndex.isValid() && currentIndex.row() == row) ++ { ++ match = true; ++ groupVisible = true; ++ } ++ else ++ { ++ for (int col = minCol; col < maxCol; ++col) ++ { ++ QModelIndex colIndex = rowIndex.siblingAtColumn(col); ++ ++ if (model->data(colIndex).toString().contains(filter, Qt::CaseInsensitive)) ++ { ++ match = true; ++ groupVisible = true; ++ break; ++ } ++ } ++ } ++ ++ mPreferencesUI->shortcutTableView->setRowHidden(row, !match); ++ } ++} ++ + void UBPreferencesController::show() + { + init(); +@@ -293,6 +423,21 @@ void UBPreferencesController::wire() + + // about tab + connect(mPreferencesUI->checkSoftwareUpdateAtLaunchCheckBox, SIGNAL(clicked(bool)), settings->appEnableAutomaticSoftwareUpdates, SLOT(setBool(bool))); ++ ++ // shortcut tab ++ connect(mPreferencesUI->shortcutTableView, SIGNAL(activated(const QModelIndex&)), this, SLOT(actionSelected(const QModelIndex&))); ++ connect(mPreferencesUI->filter, SIGNAL(textChanged(const QString&)), this, SLOT(applyShortcutFilter(const QString&))); ++ connect(mPreferencesUI->recordButton, SIGNAL(clicked(bool)), this, SLOT(recordingClicked(bool))); ++ connect(mPreferencesUI->abortButton, SIGNAL(clicked()), this, SLOT(abortClicked())); ++ connect(mPreferencesUI->resetButton, SIGNAL(clicked()), this, SLOT(resetClicked())); ++ connect(mPreferencesUI->noCtrl, &QCheckBox::toggled, UBShortcutManager::shortcutManager(), &UBShortcutManager::ignoreCtrl); ++ connect(mPreferencesUI->mainTabWidget, &QTabWidget::currentChanged, [this](int tab){ ++ auto shortcutTab = mPreferencesUI->mainTabWidget->indexOf(mPreferencesUI->shortcutTab); ++ ++ if (tab != shortcutTab) { ++ abortClicked(); ++ } ++ }); + } + + void UBPreferencesController::init() +@@ -351,6 +496,27 @@ void UBPreferencesController::init() + + mMarkerProperties->opacitySlider->setValue(settings->boardMarkerAlpha->get().toDouble() * 100); + ++ // shortcut tab ++ mPreferencesUI->shortcutTableView->setModel(UBShortcutManager::shortcutManager()); ++ mPreferencesUI->shortcutTableView->horizontalHeader()->setModel(UBShortcutManager::shortcutManager()); ++ mPreferencesUI->shortcutTableView->horizontalHeader()->resizeSection(0, 150); ++ mPreferencesUI->shortcutTableView->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); ++ mPreferencesUI->noCtrl->setChecked(settings->value("Shortcut/IgnoreCtrl").toBool()); ++ mPreferencesUI->noCtrl->setEnabled(!UBShortcutManager::shortcutManager()->hasCtrlConflicts()); ++} ++ ++bool UBPreferencesController::eventFilter(QObject *obj, QEvent *event) ++{ ++ if (event->type() == QEvent::KeyPress) ++ { ++ QKeyEvent *keyEvent = static_cast(event); ++ return handleKeyEvent(keyEvent); ++ } ++ else ++ { ++ // standard event processing ++ return QObject::eventFilter(obj, event); ++ } + } + + void UBPreferencesController::close() +@@ -445,7 +611,8 @@ void UBPreferencesController::defaultSettings() + mPreferencesUI->checkSoftwareUpdateAtLaunchCheckBox->setChecked(defaultValue); + + } +- else if(mPreferencesUI->mainTabWidget->currentWidget() == mPreferencesUI->networkTab){ ++ else if(mPreferencesUI->mainTabWidget->currentWidget() == mPreferencesUI->networkTab) ++ { + bool defaultValue = settings->webUseExternalBrowser->reset().toBool(); + mPreferencesUI->useExternalBrowserCheckBox->setChecked(defaultValue); + defaultValue = settings->webShowPageImmediatelyOnMirroredScreen->reset().toBool(); +@@ -480,6 +647,23 @@ void UBPreferencesController::defaultSettings() + lightBackgroundCrossOpacityValueChanged(lightBackgroundOpacity); + + } ++ else if(mPreferencesUI->mainTabWidget->currentWidget() == mPreferencesUI->shortcutTab) ++ { ++ if (mPreferencesUI->recordButton->isChecked()) ++ { ++ abortClicked(); ++ } ++ ++ UBShortcutManager* sm = UBShortcutManager::shortcutManager(); ++ ++ for (int row = 0; row < sm->rowCount(); ++row) ++ { ++ QModelIndex rowIndex = sm->index(row, 0); ++ sm->resetData(rowIndex); ++ } ++ ++ resetClicked(); ++ } + } + + void UBPreferencesController::darkBackgroundCrossOpacityValueChanged(int value) +@@ -690,6 +874,70 @@ void UBPreferencesController::systemOSKCheckBoxToggled(bool checked) + mPreferencesUI->keyboardPaletteKeyButtonSize_Label->setVisible(!checked); + } + ++void UBPreferencesController::actionSelected(const QModelIndex &index) ++{ ++ currentIndex = index; ++ UBShortcutManager* sm = UBShortcutManager::shortcutManager(); ++ mPreferencesUI->keySequence->setText(sm->data(index.siblingAtColumn(2), UBShortcutManager::PrimaryShortcutRole).toString()); ++ mPreferencesUI->mouseButton->setText(sm->data(index.siblingAtColumn(3)).toString()); ++ mPreferencesUI->stylusButton->setText(sm->data(index.siblingAtColumn(4)).toString()); ++ ++ bool isAction = sm->data(index, UBShortcutManager::ActionRole).toBool(); ++ mPreferencesUI->recordButton->setEnabled(true); ++ mPreferencesUI->shortcutsGroupBox->setEnabled(isAction); ++} ++ ++void UBPreferencesController::recordingClicked(bool checked) ++{ ++ if (!checked && currentIndex.isValid()) ++ { ++ UBShortcutManager* sm = UBShortcutManager::shortcutManager(); ++ sm->setData(currentIndex.siblingAtColumn(2), mPreferencesUI->keySequence->text()); ++ sm->setData(currentIndex.siblingAtColumn(3), sm->buttonIndex(mPreferencesUI->mouseButton->text())); ++ sm->setData(currentIndex.siblingAtColumn(4), sm->buttonIndex(mPreferencesUI->stylusButton->text())); ++ } ++ ++ mPreferencesUI->shortcutTableView->setSelectionMode(checked ? QTableView::NoSelection : QTableView::SingleSelection); ++ mPreferencesUI->recordButton->setText(checked ? tr("Accept", "preferencesDialog") : tr("Record", "preferencesDialog")); ++} ++ ++void UBPreferencesController::abortClicked() ++{ ++ applyShortcutFilter(mPreferencesUI->filter->text()); ++ ++ mPreferencesUI->recordButton->setEnabled(true); ++ mPreferencesUI->recordButton->setChecked(false); ++ mPreferencesUI->recordButton->setText(tr("Record", "preferencesDialog")); ++ mPreferencesUI->shortcutTableView->setSelectionMode(QTableView::SingleSelection); ++ mPreferencesUI->shortcutTableView->clearSelection(); ++ mPreferencesUI->report->setText(""); ++ mPreferencesUI->noCtrl->setEnabled(!UBShortcutManager::shortcutManager()->hasCtrlConflicts()); ++ actionSelected(mPreferencesUI->shortcutTableView->model()->index(0, 0)); ++} ++ ++void UBPreferencesController::resetClicked() ++{ ++ if (mPreferencesUI->recordButton->isChecked()) ++ { ++ abortClicked(); ++ } ++ ++ if (currentIndex.isValid()) ++ { ++ UBShortcutManager* sm = UBShortcutManager::shortcutManager(); ++ ++ sm->resetData(currentIndex); ++ applyShortcutFilter(mPreferencesUI->filter->text()); ++ ++ mPreferencesUI->keySequence->setText(sm->data(currentIndex.siblingAtColumn(2)).toString()); ++ mPreferencesUI->mouseButton->setText(sm->data(currentIndex.siblingAtColumn(3)).toString()); ++ mPreferencesUI->stylusButton->setText(sm->data(currentIndex.siblingAtColumn(4)).toString()); ++ } ++ ++ mPreferencesUI->report->setText(""); ++ mPreferencesUI->noCtrl->setEnabled(!UBShortcutManager::shortcutManager()->hasCtrlConflicts()); ++} ++ + UBBrushPropertiesFrame::UBBrushPropertiesFrame(QFrame* owner, const QList& lightBackgroundColors, + const QList& darkBackgroundColors, const QList& lightBackgroundSelectedColors, + const QList& darkBackgroundSelectedColors, UBPreferencesController* controller) +diff --git a/src/core/UBPreferencesController.h b/src/core/UBPreferencesController.h +index d89b4c181..25413762c 100644 +--- a/src/core/UBPreferencesController.h ++++ b/src/core/UBPreferencesController.h +@@ -70,6 +70,9 @@ class UBPreferencesController : public QObject + UBPreferencesController(QWidget *parent); + virtual ~UBPreferencesController(); + ++ bool handleKeyEvent(QKeyEvent *event); ++ bool handleMouseEvent(QMouseEvent *event); ++ bool handleTabletEvent(QTabletEvent *event); + + public slots: + +@@ -80,6 +83,8 @@ class UBPreferencesController : public QObject + void wire(); + void init(); + ++ virtual bool eventFilter(QObject* obj, QEvent* event) Q_DECL_OVERRIDE; ++ + UBPreferencesDialog* mPreferencesWindow; + Ui::preferencesDialog* mPreferencesUI; + UBBrushPropertiesFrame* mPenProperties; +@@ -104,14 +109,21 @@ class UBPreferencesController : public QObject + void toolbarOrientationVertical(bool checked); + void toolbarOrientationHorizontal(bool checked); + void systemOSKCheckBoxToggled(bool checked); ++ void actionSelected(const QModelIndex& index); ++ void recordingClicked(bool checked); ++ void abortClicked(); ++ void resetClicked(); + + private slots: + void adjustScreensPreferences(); ++ void applyShortcutFilter(const QString& filter, int filterCol = -1); ++ + + private: + static qreal sSliderRatio; + static qreal sMinPenWidth; + static qreal sMaxPenWidth; ++ QModelIndex currentIndex; + }; + + class UBBrushPropertiesFrame : public Ui::brushProperties + +From 414b6d55e67c0612a6318fd3acfa495432e44b73 Mon Sep 17 00:00:00 2001 +From: letsfindaway +Date: Mon, 30 Sep 2024 16:21:21 +0200 +Subject: [PATCH 2/2] i18n: update German translation + +- change ownership of a translation string in UBShortcutManager +- add new translation strings +- update a few translations +--- + resources/i18n/OpenBoard_de.ts | 70 ++++++++++++++++++++++++++++++++-- + src/core/UBShortcutManager.cpp | 2 +- + 2 files changed, 67 insertions(+), 5 deletions(-) + +diff --git a/resources/i18n/OpenBoard_de.ts b/resources/i18n/OpenBoard_de.ts +index 275332271..b4e278c81 100644 +--- a/resources/i18n/OpenBoard_de.ts ++++ b/resources/i18n/OpenBoard_de.ts +@@ -3008,6 +3008,28 @@ Möchten Sie diese Fehler für diesen Computer ignorieren? + Use all available displays + Alle verfügbaren Bildschirme nutzen + ++ ++ Key sequence already in use ++ Tastenkombination wird bereits benutzt ++ ++ ++ Mouse button already in use ++ Maustaste wird bereits benutzt ++ ++ ++ Stylus button already in use ++ Stifttaste wird bereits benutzt ++ ++ ++ Accept ++ preferencesDialog ++ Übernehmen ++ ++ ++ Record ++ preferencesDialog ++ Aufnehmen ++ + + + UBSettings +@@ -3079,7 +3101,7 @@ Möchten Sie diese Fehler für diesen Computer ignorieren? + + + Reset zoom factor +- Zoom zurücksetzen ++ Zoom-Faktor zurücksetzen + + + +@@ -3129,7 +3151,7 @@ Möchten Sie diese Fehler für diesen Computer ignorieren? + + + Command +- Kommando ++ Befehl + + + +@@ -3144,12 +3166,12 @@ Möchten Sie diese Fehler für diesen Computer ignorieren? + + + Mouse Button +- Mausknopf ++ Maustaste + + + + Tablet Button +- Tablet Stiftknopf ++ Stifttaste + + + +@@ -4076,6 +4098,46 @@ p, li { white-space: pre-wrap; } + List of screens used for Control, Display and Previous pages + Liste der Bildschirme, die für die Hauptansicht, Erweiterte Ansicht und Vorherige Seiten verwendet werden + ++ ++ Shortcut ++ Kurzbefehl ++ ++ ++ Filter ++ Filter ++ ++ ++ Active keyboard shortcuts without pressing Ctrl key ++ Aktiviere Kurzbefehle auch ohne Strg Taste ++ ++ ++ Shortcuts ++ Kurzbefehle ++ ++ ++ Abort ++ Abbrechen ++ ++ ++ Record ++ Aufnehmen ++ ++ ++ Stylus Button ++ Stifttaste ++ ++ ++ Mouse Button ++ Maustaste ++ ++ ++ Reset ++ Zurücksetzen ++ ++ ++ Key Sequence ++ Tasten ++ + + + trapFlashDialog +diff --git a/src/core/UBShortcutManager.cpp b/src/core/UBShortcutManager.cpp +index dfe8c8239..56a66a870 100644 +--- a/src/core/UBShortcutManager.cpp ++++ b/src/core/UBShortcutManager.cpp +@@ -43,7 +43,7 @@ UBShortcutManager* UBShortcutManager::sShortcutManager = nullptr; + + UBShortcutManager::UBShortcutManager() : mIgnoreCtrl(false) + { +- actionsOfGroup(QObject::tr("Common")); ++ actionsOfGroup(tr("Common")); + } + + UBShortcutManager *UBShortcutManager::shortcutManager() diff --git a/1387-fix-poppler-25-11.patch b/1387-fix-poppler-25-11.patch new file mode 100644 index 0000000..4747d20 --- /dev/null +++ b/1387-fix-poppler-25-11.patch @@ -0,0 +1,25 @@ +From 0beaa9c088728cd51928cedad4847f4ccd48cd2a Mon Sep 17 00:00:00 2001 +From: Vekhir +Date: Mon, 8 Dec 2025 00:07:19 +0100 +Subject: [PATCH] Explicit cast to string_view + +Poppler 25.12 allows string_view and char*. QByteArray can be converted to both, so choose one explicitly +--- + src/pdf/XPDFRenderer.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/pdf/XPDFRenderer.cpp b/src/pdf/XPDFRenderer.cpp +index e8eb1c64d..23b76a9aa 100644 +--- a/src/pdf/XPDFRenderer.cpp ++++ b/src/pdf/XPDFRenderer.cpp +@@ -61,7 +61,9 @@ XPDFRenderer::XPDFRenderer(const QString &filename, bool importingFile) + #endif + globalParams->setupBaseFonts(QFile::encodeName(UBPlatformUtils::applicationResourcesDirectory() + "/" + "fonts").data()); + } +-#if POPPLER_VERSION_MAJOR > 22 || (POPPLER_VERSION_MAJOR == 22 && POPPLER_VERSION_MINOR >= 3) ++#if POPPLER_VERSION_MAJOR > 25 || (POPPLER_VERSION_MAJOR == 25 && POPPLER_VERSION_MINOR >= 12) ++ mDocument = new PDFDoc(std::make_unique(static_cast(filename.toLocal8Bit()))); ++#elif POPPLER_VERSION_MAJOR > 22 || (POPPLER_VERSION_MAJOR == 22 && POPPLER_VERSION_MINOR >= 3) + mDocument = new PDFDoc(std::make_unique(filename.toLocal8Bit())); + #else + mDocument = new PDFDoc(new GooString(filename.toLocal8Bit()), 0, 0, 0); // the filename GString is deleted on PDFDoc desctruction diff --git a/9117-disable-software-update.patch b/9117-disable-software-update.patch new file mode 100644 index 0000000..4c3de91 --- /dev/null +++ b/9117-disable-software-update.patch @@ -0,0 +1,41 @@ +From cc89f09bbc7f464ad79eaa82a74d490d507e4756 Mon Sep 17 00:00:00 2001 +From: letsfindaway +Date: Wed, 16 Nov 2022 08:31:29 +0100 +Subject: [PATCH] feat: disable software update check + +- for packages maintained by a Linux distribution, + a software update check is not relevant +- disable the check in the settings +- hide the associated checkbox in the preferences +--- + resources/etc/OpenBoard.config | 5 ++--- + src/core/UBPreferencesController.cpp | 1 + + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/resources/etc/OpenBoard.config b/resources/etc/OpenBoard.config +index ce77e232e..a3c8bf04e 100644 +--- a/resources/etc/OpenBoard.config ++++ b/resources/etc/OpenBoard.config +@@ -1,8 +1,7 @@ + [App] +-HideCheckForSoftwareUpdate=false ++HideCheckForSoftwareUpdate=true + HideSwapDisplayScreens=true +-EnableAutomaticSoftwareUpdates=true +-EnableSoftwareUpdates=true ++EnableAutomaticSoftwareUpdates=false + EnableStartupHints=true + FavoriteToolURIs=openboardtool://openboard/mask, openboardtool://ruler, openboardtool://compass, openboardtool://protractor, openboardtool://triangle, openboardtool://magnifier, openboardtool://cache + IsInSoftwareUpdateProcess=false +diff --git a/src/core/UBPreferencesController.cpp b/src/core/UBPreferencesController.cpp +index ed0e393d8..b67c415c3 100644 +--- a/src/core/UBPreferencesController.cpp ++++ b/src/core/UBPreferencesController.cpp +@@ -85,6 +85,7 @@ UBPreferencesController::UBPreferencesController(QWidget *parent) + mPreferencesWindow = new UBPreferencesDialog(this,parent, Qt::Dialog); + mPreferencesUI = new Ui::preferencesDialog(); // deleted in destructor + mPreferencesUI->setupUi(mPreferencesWindow); ++ mPreferencesUI->softwareUpdateGroupBox->hide(); // disable check for software update + adjustScreensPreferences(); + + connect(UBApplication::displayManager, &UBDisplayManager::availableScreenCountChanged, this, &UBPreferencesController::adjustScreensPreferences); diff --git a/OpenBoard-1.7.3.tar.gz b/OpenBoard-1.7.3.tar.gz new file mode 100644 index 0000000..6cab04c --- /dev/null +++ b/OpenBoard-1.7.3.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55532df042e3a5b36e1f6f1e29916d3bbd01796d920782fa1f8a03438dcddd9c +size 63271111 diff --git a/OpenBoard-1.7.4.tar.gz b/OpenBoard-1.7.4.tar.gz new file mode 100644 index 0000000..02d0053 --- /dev/null +++ b/OpenBoard-1.7.4.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9948a2fec3920679087422d5c1c1b18839e2a95cee5b485d7584bb972b54a13c +size 63263123 diff --git a/OpenBoard.changes b/OpenBoard.changes new file mode 100644 index 0000000..cb24e1b --- /dev/null +++ b/OpenBoard.changes @@ -0,0 +1,379 @@ +------------------------------------------------------------------- +Sun Jan 25 17:57:26 UTC 2026 - Martin Winter + +- update to release version 1.7.4 +- remove upstreamed patch 1387-fix-poppler-25-11.patch + +------------------------------------------------------------------- +Thu Dec 18 10:34:30 UTC 2025 - Martin Winter + +- add patch 1387-fix-poppler-25-11.patch + * compatibility with poppler 25.11 + * already merged upstream for next release + +------------------------------------------------------------------- +Mon Dec 23 20:47:49 UTC 2024 - Martin Winter + +- update to release version 1.7.3 +- remove patch 1165-fix-some-wayland-problems.patch + * users reported problems with this patch + * will not be merged upstream + +------------------------------------------------------------------- +Mon Nov 18 14:08:50 UTC 2024 - Martin Winter + +- update to release version 1.7.2 +- remove upstreamed patches + * remove 0569-scale-mirror-pixmap.patch + * remove 0961-use-cpp20.patch + * remove 0962-fix-cpp20-compatibility.patch + * remove 1010-fix-qapp-cast.patch + * remove 1017-ffmpeg7.patch +- adjust patches to new version + * adjust 0955-shortcut-configuration.patch + * adjust 9117-disable-software-update.patch +- add patch to circumvent some problems on wayland + * add 1165-fix-some-wayland-problems.patch +- switch from Qt5 to Qt6 + +------------------------------------------------------------------- +Tue Aug 13 14:27:48 UTC 2024 - Martin Winter + +- compatibility with ffmpeg-7 + * add 1017-ffmpeg7.patch + * patch is already merged and will be part of the next release + +------------------------------------------------------------------- +Thu Jul 4 06:31:52 UTC 2024 - Martin Winter + +- compatibility with poppler >= 24.05 + * poppler >= 24.05 requires c++20 + * add 0961-use-cpp20.patch + * add 0962-fix-cpp20-compatibility.patch + * both patches are already merged upstream + and will be part of the next release + +------------------------------------------------------------------- +Sun Jun 9 08:35:35 UTC 2024 - Martin Winter + +- fix a problem with latest plasma5 security patches + * add 1010-fix-qapp-cast.patch + +------------------------------------------------------------------- +Wed May 8 09:01:25 UTC 2024 - Martin Winter + +- update to release version 1.7.1 +- remove upstreamed patches + * remove 0830-cmake-community-builds.patch + * remove 9686-cmake-add-shortcut-manager.patch +- update patch to match updated sources + * replace 0686-shortcut-configuration.patch by 0955-shortcut-configuration.patch + +------------------------------------------------------------------- +Sat Dec 9 09:21:18 UTC 2023 - Martin Winter + +- update to release version 1.7.0 +- update patches to match updated sources + * update 0569-scale-mirror-pixmap.patch + * update 0686-shortcut-configuration.patch +- replace build system patch + * remove 0698-add-cmake-build-system.patch + * add 0830-cmake-community-builds.patch +- switch from pgkconfig to cmake for some BuildRequires + +------------------------------------------------------------------- +Sun Jun 18 06:21:57 UTC 2023 - Martin Winter + +- update to version 1.7.0~git20230614.2ff8f29 + * feature freeze before release +- remove upstreamed patches + * remove upstreamed 0551-common-background-drawing.patch + * remove upstreamed 0677-pdf-export-page-size.patch +- update patches to match updated sources + * update 0686-shortcut-configuration.patch + * update 0698-add-cmake-build-system.patch + * update 9117-disable-software-update.patch + +------------------------------------------------------------------- +Wed Jan 25 10:39:59 UTC 2023 - Dominique Leuenberger + +- BuildRequire pkgconfig(libavdevice) instead of ffmpeg-devel: let + OBS figure out the right packages that do not conlfict. + +------------------------------------------------------------------- +Tue Nov 29 16:17:02 UTC 2022 - Martin Winter + +- update to version 1.7.0~git20221129.9de37af +- feat: user configurable shortcuts + * replace 0460-shortcut-configuration.patch by updated + 0686-shortcut-configuration.patch + * add 9686-cmake-add-shortcut-manager.patch + add new files to CMakeLists.txt +- fix: background drawing when switching page size + * update 0551-common-background-drawing.patch +- fix: mirror pixmap size + * update 0569-scale-mirror-pixmap.patch +- remove upstreamed patches + * remove upstreamed 0604-qt-5.12-compatibility.patch + * remove upstreamed 0629-bug-ruler.patch + * remove upstreamed 0633-improve-displaymanager.patch + * remove upstreamed 0637-fix-pdf-background-export.patch + * remove upstreamed 0641-fix-font-handling.patch + * remove upstreamed 0649-fix-pdf-export-scaling.patch +- chore: replace qmake by cmake build system + * remove 0651-chore-reorganize-linux-build.patch + * add 0698-add-cmake-build-system.patch +- fix: page size for PDF export + * add 0677-pdf-export-page-size.patch +- disable software update from openboard web page + * add 9117-disable-software-update.patch + +------------------------------------------------------------------- +Tue Sep 20 09:23:13 UTC 2022 - Martin Winter + +- fix file list in spec file + - do not include /usr/share/mime/packages directory owned by + filesystem + +------------------------------------------------------------------- +Wed Sep 14 06:24:01 UTC 2022 - Martin Winter + +- update to version 1.7.0~git20220914.47a96e1 +- feat: user configurable shortcuts + * add 0460-shortcut-configuration.patch +- fix: boxing in single screen mode + * update 0633-improve-displaymanager.patch +- fix: PDF background export + * update 0637-fix-pdf-background-export.patch +- fix: font handling + * update 0641-fix-font-handling.patch +- fix: PDF export scaling + * add 0649-fix-pdf-export-scaling.patch +- refactor: Linux build and installation + * add 0651-chore-reorganize-linux-build.patch + * replaces 0001-Rewrite-libs.pri.patch + * replaces 0002-Install-to-correct-directories-on-linux.patch + * replaces 0003-podcast.pri-port-to-pkgconfig.patch + * replaces 0004-Use-QStandardPaths-to-locate-resources.patch + * replaces 0005-Add-svg-icon.patch + * replaces 0006-pro-Remove-UB_THIRDPARTY_INTERACTIVE.patch + * replaces 0007-Linux-Only-use-onboard-by-default-if-it-s-installed.patch + * replaces 0008-install-fonts.patch + * add mimespec for .ubz files + * also improve handling of onboard on-screen keyboard +- refactor: clean spec file + +------------------------------------------------------------------- +Fri Jun 24 09:56:26 UTC 2022 - Martin Winter + +- minor changes in spec file + +------------------------------------------------------------------- +Fri Jun 24 09:13:52 UTC 2022 - Martin Winter + +- fix several issues + - add 0008-install-fonts.patch + - add 0637-fix-pdf-background-export.patch + - add 0641-fix-font-handling.patch + +------------------------------------------------------------------- +Sun Jun 19 13:03:26 UTC 2022 - Martin Winter + +- update to 1.7.0~git47a96e1 + - use development branch to enable build for Tumbleweed + (switch from QWebKit to QWebEngine) +- add patches fixing known issues according to existing upstream PRs + - 0551-common-background-drawing.patch + - 0569-scale-mirror-pixmap.patch + - 0604-qt-5.12-compatibility.patch + - 0629-bug-ruler.patch + - 0633-improve-displaymanager.patch +- remove unused build dependencies + +------------------------------------------------------------------- +Mon Jun 13 09:21:50 UTC 2022 - Martin Winter + +- Update to 1.6.3 + - see https://github.com/OpenBoard-org/OpenBoard/releases/tag/v1.6.3 + +------------------------------------------------------------------- +Mon Jun 6 09:38:26 UTC 2022 - Martin Winter + +- Update to 1.6.2 + - see https://github.com/OpenBoard-org/OpenBoard/releases/tag/v1.6.2 + - adapt 0001-Rewrite-libs.pri.patch + - adapt 0002-Install-to-correct-directories-on-linux.patch + - drop 0573-compile-with-poppler-22.03.patch (upstreamed) + +------------------------------------------------------------------- +Tue Mar 15 17:28:47 UTC 2022 - Martin Winter + +- add 0573-compile-with-poppler-22.03.patch + +------------------------------------------------------------------- +Tue Dec 28 10:31:51 UTC 2021 - Martin Winter + +- update to OpenBoard 1.6.1 + - adapt patches + +------------------------------------------------------------------- +Mon Feb 8 18:36:17 UTC 2021 - Adam Majer + +- Compile translations so they are installed (bsc#1181857) + +------------------------------------------------------------------- +Mon Nov 23 12:20:56 UTC 2020 - Adam Majer + +- 0001-Rewrite-libs.pri.patch: + + update patch and BR on now weirdly named quazip - pkgconfig(quazip1-qt5) + + continue to function with with pkgconfig(quazip) in Leap 15.2 +- Remove BR on libx264-devel and fdk-aac-devel as these are no longer + available in Factory + +------------------------------------------------------------------- +Sat May 23 15:58:55 UTC 2020 - Frank Schütte + +- fixed building with patches from https://github.com/flathub/ch.openboard.OpenBoard + +------------------------------------------------------------------- +Fri May 22 11:48:28 UTC 2020 - Frank Schütte + +- update to 1.5.4 + +------------------------------------------------------------------- +Mon Jun 10 17:00:17 UTC 2019 - Frank Schütte + +- remove openssl patch + +------------------------------------------------------------------- +Mon Jun 10 16:49:24 UTC 2019 - Frank Schütte + +- Update to OpenBoard 1.5.3 +- updated OpenBoard-no-Third-Party patch + +------------------------------------------------------------------- +Fri Jan 25 11:44:14 UTC 2019 - F.Schuette@t-online.de + +- Update to OpenBoard 1.5.2 + +------------------------------------------------------------------- +Tue Sep 11 21:19:36 UTC 2018 - F.Schuette@t-online.de + +- Update to OpenBoard 1.4.1 + * Add patch for ffmpeg includes. + +------------------------------------------------------------------- +Wed Jan 10 19:01:57 UTC 2018 - antoine.belvire@opensuse.org + +- Add compatibility with OpenSSL 1.1 API: + * OpenBoard-1.3.6-add-openssl-1.1-compat.patch. + * Authorize build with OpenSSL 1.1 by removing version constraint + on "BuildRequires". +- Merge quazip_libname.patch with OpenBoard-no_Third-Party.patch. + +------------------------------------------------------------------- +Tue Jan 9 22:17:13 UTC 2018 - antoine.belvire@opensuse.org + +- Update to version 1.3.6: + * Fix several issues relating to copy-pasting and + cut-and-pasting elements from one page or document to another. + * Fix an issue where pen strokes that had been erased with the + eraser would reappear after saving and loading. + * Fix an issue where duplicating a pen stroke that had been + moved could cause the new stroke to be placed in the wrong + position. + * Fix an issue where strokes could be badly placed after using + the "undo" and "redo" functions. + * Fix an issue where compass strokes were not saved (when + making several strokes, only the first one was saved). + * Fix an issue where pages could be truncated when exporting to + PDF. + * Fix an issue where locked items could be moved when part of a + multiple selection + * (Document mode) Fix document selection after deleting a + trashed document. + * Tweak the background grid color for the dark background. + * The mask tool can now be resized non-proportionately. + * Re-implemented automatic update checking, which will appear + to users when the next version is released. +- Changes from version 1.3.5: + * Fix detection of "cloned" multi-monitor setups to avoid + multi-screen mode being activated in this configuration. + [Note: some problems remain with multi-monitor setups on some + Linux versions.]. + * Text items: Text can no longer be selected or edited if the + text item is marked as non-editable through its menu. + * Text items: On page load, text items no longer take keyboard + focus. + * Library pane: Fix moving of items (upon moving an item to a + folder, the item would not immediately disappear from its + current location). + * Library pane: Fix nested folder issue in breadcrumbs trail (two + folders that were at the same path and whose names started with + the same characters were considered by the breadcrumbs trail to + be nested). + * Document view: Fix folder names not being saved after renaming + them. + * Fix audio item saving (v1.3.3 bug): Documents containing an + audio item were saved incorrectly, making the audio unplayable + upon page load. + * Desktop mode: Eraser and marker preview circles now disappear + when the cursor hovers over the left or right-hand toolbars, as + in board mode. +- Drop OpenBoard-fix-call-of-overloaded-abs-is-ambiguous.patch + (fixed upstream). +- Fix some rpmlint warnings. + +------------------------------------------------------------------- +Tue Jan 9 20:19:28 UTC 2018 - antoine.belvire@opensuse.org + +- Fix build: + * Change OpenBoard-XPDFRenderer_with_poppler.patch to make it + work with libpoppler >= 0.55. + * Force use of OpenSSL 1.0 as build requirement instead of 1.1. + * Use "libquazip-qt5-devel" instead of "quazip-qt5-devel" in + build requirements to fix build on Leap. + +------------------------------------------------------------------- +Fri Jun 30 13:33:43 UTC 2017 - adam.majer@suse.de + +- quazip_libname.patch: Use quazip-qt5 instead of quazip as mixing + Qt versions is bad. Qt5 quazip also uses a different library + name. (boo#1042040) +- add missing libpulse BuildRequires + +------------------------------------------------------------------- +Mon Feb 13 19:40:30 UTC 2017 - mrueckert@suse.de + +- update to 1.3.4 + - OS X: fixed desktop drop shadow bug: when switching from + desktop mode to board mode and back, shadows were drawn behind + annotations; these persisted even if the annotation was erased + - Windows: Updated bundled Visual C++ runtime library; fixed + installer so that the library installation would be silent (no + more dialog box appearing) + - Linux: fixed detection of "cloned" multi-monitor setups to + avoid multi-screen mode being activated in this configuration. + [Note: some problems remain with multi-monitor setups on some + Linux versions; see Known Issues] + - Text items: text can no longer be selected or edited if the + text item is marked as non-editable through its menu + - Text items: on page load, text items no longer take keyboard + focus + - Library pane: fixed moving of items (upon moving an item to a + folder, the item would not immediately disappear from its + current location) + - Library pane: fixed nested folder issue in breadcrumbs trail + (two folders that were at the same path and whose names started + with the same characters were considered by the breadcrumbs + trail to be nested) + - Document view: fixed folder names not being saved after + renaming them + - Fixed audio item saving (v1.3.3 bug): documents containing an + audio item were saved incorrectly, making the audio unplayable + upon page load + - Desktop mode: eraser and marker preview circles now disappear + when the cursor hovers over the left or right-hand toolbars, as + in board mode +- refreshed OpenBoard-XPDFRenderer_with_poppler.patch to apply + cleanly again diff --git a/OpenBoard.spec b/OpenBoard.spec new file mode 100644 index 0000000..fd7083a --- /dev/null +++ b/OpenBoard.spec @@ -0,0 +1,93 @@ +# +# spec file for package OpenBoard +# +# Copyright (c) 2026 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define namelc openboard +%define fqname ch.%{namelc}.%{name} +Name: OpenBoard +Version: 1.7.4 +Release: 0 +Summary: Interactive whiteboard for schools and universities +License: GPL-3.0-or-later +Group: Amusements/Teaching/Other +URL: https://openboard.ch +Source0: https://github.com/OpenBoard-org/OpenBoard/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +# https://github.com/OpenBoard-org/OpenBoard/pull/955 +Patch955: 0955-shortcut-configuration.patch +# https://github.com/letsfindaway/OpenBoard/pull/117 +Patch9117: 9117-disable-software-update.patch +BuildRequires: desktop-file-utils +BuildRequires: fdupes +BuildRequires: pkgconfig +BuildRequires: cmake(Qt6Concurrent) +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6LinguistTools) +BuildRequires: cmake(Qt6Multimedia) +BuildRequires: cmake(Qt6MultimediaWidgets) +BuildRequires: cmake(Qt6Network) +BuildRequires: cmake(Qt6PrintSupport) +BuildRequires: cmake(Qt6Svg) +BuildRequires: cmake(Qt6UiTools) +BuildRequires: cmake(Qt6WebEngineWidgets) +BuildRequires: cmake(Qt6Xml) +BuildRequires: pkgconfig(libavdevice) +BuildRequires: pkgconfig(openssl) +BuildRequires: pkgconfig(poppler) +BuildRequires: pkgconfig(quazip1-qt6) +Recommends: onboard +%if 0%{?suse_version} < 1600 +BuildRequires: gcc10-c++ +%endif + +%description +OpenBoard is an open source cross-platform interactive white board +application designed primarily for use in schools. It was +originally forked from Open-Sankoré, which was itself based on +Uniboard. + +%prep +%autosetup -p1 -n %{name}-%{version} + +%build +%if 0%{?suse_version} < 1600 +export CXX=%{_bindir}/g++-10 +%cmake +%else +%cmake -DCMAKE_CXX_STANDARD=20 +%endif +%cmake_build + +%install +%cmake_install +%fdupes -s %{buildroot} + +%files +%license LICENSE +%doc COPYRIGHT +%dir %{_datadir}/icons/hicolor +%dir %{_datadir}/icons/hicolor/scalable +%dir %{_datadir}/icons/hicolor/scalable/apps +%dir %{_datadir}/icons/hicolor/scalable/mimetypes +%{_datadir}/applications/%{fqname}.desktop +%{_datadir}/icons/hicolor/scalable +%{_datadir}/mime/packages/* +%{_datadir}/%{namelc} +%{_bindir}/%{namelc} +%config %{_sysconfdir}/%{namelc} + +%changelog -- 2.51.1 From 8b68780bc1eaa3e6dfa03b913a2e1d5c29be39b9af3b502e9c9e51fcc1d69b4d Mon Sep 17 00:00:00 2001 From: Martin Winter Date: Tue, 3 Feb 2026 13:04:30 +0000 Subject: [PATCH 3/4] - add AppData in metainfo.xml - update to release version 1.7.5 OBS-URL: https://build.opensuse.org/package/show/Education/OpenBoard?expand=0&rev=49 --- .gitattributes | 23 + .gitignore | 1 + 0955-shortcut-configuration.patch | 745 +++++++++++++++++++++++++++++ 1347-chore-appdata.patch | 575 ++++++++++++++++++++++ 1387-fix-poppler-25-11.patch | 25 + 9117-disable-software-update.patch | 41 ++ OpenBoard-1.7.3.tar.gz | 3 + OpenBoard-1.7.4.tar.gz | 3 + OpenBoard-1.7.5.tar.gz | 3 + OpenBoard.changes | 389 +++++++++++++++ OpenBoard.spec | 96 ++++ 11 files changed, 1904 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 0955-shortcut-configuration.patch create mode 100644 1347-chore-appdata.patch create mode 100644 1387-fix-poppler-25-11.patch create mode 100644 9117-disable-software-update.patch create mode 100644 OpenBoard-1.7.3.tar.gz create mode 100644 OpenBoard-1.7.4.tar.gz create mode 100644 OpenBoard-1.7.5.tar.gz create mode 100644 OpenBoard.changes create mode 100644 OpenBoard.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/0955-shortcut-configuration.patch b/0955-shortcut-configuration.patch new file mode 100644 index 0000000..5825c1d --- /dev/null +++ b/0955-shortcut-configuration.patch @@ -0,0 +1,745 @@ +From 07141652f2bcd3eba16fb5291532b52e8b530fc0 Mon Sep 17 00:00:00 2001 +From: letsfindaway +Date: Sun, 25 Aug 2024 15:34:04 +0200 +Subject: [PATCH 1/2] feat: add preferences dialog for shortcut configuration + +- recording of key sequences amd mouse/stylus buttons +- collect actions, filtering, collision detection +- persist shortcut settings +--- + resources/forms/preferences.ui | 169 ++++++++++++++++++ + src/core/UBApplication.cpp | 28 +++ + src/core/UBPreferencesController.cpp | 252 ++++++++++++++++++++++++++- + src/core/UBPreferencesController.h | 12 ++ + 4 files changed, 459 insertions(+), 2 deletions(-) + +diff --git a/resources/forms/preferences.ui b/resources/forms/preferences.ui +index 45a2fc180..9b73f8d65 100644 +--- a/resources/forms/preferences.ui ++++ b/resources/forms/preferences.ui +@@ -1095,6 +1095,175 @@ + + + ++ ++ ++ Shortcut ++ ++ ++ ++ ++ ++ Filter ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ 0 ++ 0 ++ 789 ++ 447 ++ ++ ++ ++ ++ ++ ++ QAbstractItemView::NoEditTriggers ++ ++ ++ false ++ ++ ++ QAbstractItemView::SingleSelection ++ ++ ++ QAbstractItemView::SelectRows ++ ++ ++ false ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ 25 ++ ++ ++ 25 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Active keyboard shortcuts without pressing Ctrl key ++ ++ ++ ++ ++ ++ ++ ++ ++ false ++ ++ ++ Shortcuts ++ ++ ++ Qt::AlignCenter ++ ++ ++ ++ ++ ++ color: red; ++ ++ ++ Qt::PlainText ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ Abort ++ ++ ++ ++ ++ ++ ++ Record ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ Stylus Button ++ ++ ++ ++ ++ ++ ++ Mouse Button ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ ++ ++ ++ ++ Reset ++ ++ ++ ++ ++ ++ ++ Key Sequence ++ ++ ++ ++ ++ ++ ++ ++ + + + true +diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp +index 9e74e09a3..44017610b 100644 +--- a/src/core/UBApplication.cpp ++++ b/src/core/UBApplication.cpp +@@ -704,6 +704,34 @@ bool UBApplication::eventFilter(QObject *obj, QEvent *event) + || result; + } + ++ else if (event->type() == QEvent::MouseButtonPress) ++ { ++ // intercept special mouse buttons for shortcut handler ++ QMouseEvent *mouseEvent = static_cast(event); ++ Qt::MouseButton button = mouseEvent->button(); ++ ++ if (button != Qt::LeftButton && button != Qt::RightButton) ++ { ++ return mPreferencesController->handleMouseEvent(mouseEvent) ++ || UBShortcutManager::shortcutManager()->handleMouseEvent(mouseEvent) ++ || result; ++ } ++ } ++ ++ else if (event->type() == QEvent::TabletPress) ++ { ++ // intercept special tablet buttons for shortcut handler ++ QTabletEvent *tabletEvent = static_cast(event); ++ Qt::MouseButton button = tabletEvent->button(); ++ ++ if (button != Qt::LeftButton) ++ { ++ return mPreferencesController->handleTabletEvent(tabletEvent) ++ || UBShortcutManager::shortcutManager()->handleTabletEvent(tabletEvent) ++ || result; ++ } ++ } ++ + return result; + } + +diff --git a/src/core/UBPreferencesController.cpp b/src/core/UBPreferencesController.cpp +index ed0e393d8..145323385 100644 +--- a/src/core/UBPreferencesController.cpp ++++ b/src/core/UBPreferencesController.cpp +@@ -37,6 +37,7 @@ + #include "core/UBSetting.h" + #include "core/UBApplicationController.h" + #include "core/UBDisplayManager.h" ++#include "core/UBShortcutManager.h" + + #include "frameworks/UBStringUtils.h" + +@@ -72,7 +73,6 @@ void UBPreferencesDialog::closeEvent(QCloseEvent* e) + } + + +- + UBPreferencesController::UBPreferencesController(QWidget *parent) + : QObject(parent) + , mPreferencesWindow(0) +@@ -88,6 +88,8 @@ UBPreferencesController::UBPreferencesController(QWidget *parent) + adjustScreensPreferences(); + + connect(UBApplication::displayManager, &UBDisplayManager::availableScreenCountChanged, this, &UBPreferencesController::adjustScreensPreferences); ++ mPreferencesUI->shortcutTab->installEventFilter(this); ++ + wire(); + } + +@@ -103,6 +105,90 @@ UBPreferencesController::~UBPreferencesController() + delete mMarkerProperties; + } + ++bool UBPreferencesController::handleKeyEvent(QKeyEvent *event) ++{ ++ if (!mPreferencesUI->recordButton->isChecked() ++ || mPreferencesUI->mainTabWidget->currentWidget() != mPreferencesUI->shortcutTab) ++ { ++ return false; ++ } ++ ++ int key = event->key(); ++ Qt::KeyboardModifiers mods = event->modifiers(); ++ QString text = event->text(); ++ ++ int keys = mods; ++ ++ if (key < Qt::Key_Shift || key > Qt::Key_ScrollLock) ++ { ++ keys += key; ++ } ++ ++ // compose key sequence from active modifiers and key ++ QKeySequence keySequence(keys); ++ QString keyString = keySequence.toString(); ++ mPreferencesUI->keySequence->setText(keyString); ++ ++ if (currentIndex.isValid()) ++ { ++ bool ok = UBShortcutManager::shortcutManager()->checkData(currentIndex.siblingAtColumn(2), keyString); ++ applyShortcutFilter(ok ? mPreferencesUI->filter->text() : keyString, ok ? -1 : 2); ++ mPreferencesUI->recordButton->setEnabled(ok); ++ mPreferencesUI->report->setText(ok ? "" : tr("Key sequence already in use")); ++ mPreferencesUI->noCtrl->setEnabled(!UBShortcutManager::shortcutManager()->hasCtrlConflicts(keySequence)); ++ } ++ ++ return true; ++} ++ ++bool UBPreferencesController::handleMouseEvent(QMouseEvent *event) ++{ ++ if (!mPreferencesUI->recordButton->isChecked() ++ || mPreferencesUI->mainTabWidget->currentWidget() != mPreferencesUI->shortcutTab) ++ { ++ return false; ++ } ++ ++ Qt::MouseButton button = event->button(); ++ ++ if (currentIndex.isValid()) ++ { ++ QString buttonName = UBShortcutManager::buttonName(button); ++ mPreferencesUI->mouseButton->setText(buttonName); ++ bool ok = UBShortcutManager::shortcutManager()->checkData(currentIndex.siblingAtColumn(3), buttonName); ++ applyShortcutFilter(ok ? mPreferencesUI->filter->text() : buttonName, ok ? -1 : 3); ++ mPreferencesUI->recordButton->setEnabled(ok); ++ mPreferencesUI->report->setText(ok ? "" : tr("Mouse button already in use")); ++ return true; ++ } ++ ++ return false; ++} ++ ++bool UBPreferencesController::handleTabletEvent(QTabletEvent *event) ++{ ++ if (!mPreferencesUI->recordButton->isChecked() ++ || mPreferencesUI->mainTabWidget->currentWidget() != mPreferencesUI->shortcutTab) ++ { ++ return false; ++ } ++ ++ Qt::MouseButton button = event->button(); ++ ++ if (currentIndex.isValid()) ++ { ++ QString buttonName = UBShortcutManager::buttonName(button); ++ mPreferencesUI->stylusButton->setText(buttonName); ++ bool ok = UBShortcutManager::shortcutManager()->checkData(currentIndex.siblingAtColumn(4), buttonName); ++ applyShortcutFilter(ok ? mPreferencesUI->filter->text() : buttonName, ok ? -1 : 4); ++ mPreferencesUI->recordButton->setEnabled(ok); ++ mPreferencesUI->report->setText(ok ? "" : tr("Stylus button already in use")); ++ return true; ++ } ++ ++ return false; ++} ++ + void UBPreferencesController::adjustScreensPreferences() + { + bool enabled = UBApplication::displayManager->numScreens() > 1; +@@ -139,6 +225,50 @@ void UBPreferencesController::adjustScreensPreferences() + } + } + ++void UBPreferencesController::applyShortcutFilter(const QString &filter, int filterCol) ++{ ++ // go throug rows in reverse direction ++ QAbstractItemModel* model = mPreferencesUI->shortcutTableView->model(); ++ QModelIndex index = model->index(0, 0); ++ bool groupVisible = false; ++ int minCol = filterCol < 0 ? 0 : filterCol; ++ int maxCol = filterCol < 0 ? model->columnCount() : filterCol + 1; ++ ++ for (int row = model->rowCount() - 1; row >= 0; --row) ++ { ++ QModelIndex rowIndex = index.siblingAtRow(row); ++ bool match = false; ++ bool header = model->data(rowIndex, UBShortcutManager::GroupHeaderRole).toBool(); ++ ++ if (header) ++ { ++ match = groupVisible; ++ groupVisible = false; ++ } ++ else if (currentIndex.isValid() && currentIndex.row() == row) ++ { ++ match = true; ++ groupVisible = true; ++ } ++ else ++ { ++ for (int col = minCol; col < maxCol; ++col) ++ { ++ QModelIndex colIndex = rowIndex.siblingAtColumn(col); ++ ++ if (model->data(colIndex).toString().contains(filter, Qt::CaseInsensitive)) ++ { ++ match = true; ++ groupVisible = true; ++ break; ++ } ++ } ++ } ++ ++ mPreferencesUI->shortcutTableView->setRowHidden(row, !match); ++ } ++} ++ + void UBPreferencesController::show() + { + init(); +@@ -293,6 +423,21 @@ void UBPreferencesController::wire() + + // about tab + connect(mPreferencesUI->checkSoftwareUpdateAtLaunchCheckBox, SIGNAL(clicked(bool)), settings->appEnableAutomaticSoftwareUpdates, SLOT(setBool(bool))); ++ ++ // shortcut tab ++ connect(mPreferencesUI->shortcutTableView, SIGNAL(activated(const QModelIndex&)), this, SLOT(actionSelected(const QModelIndex&))); ++ connect(mPreferencesUI->filter, SIGNAL(textChanged(const QString&)), this, SLOT(applyShortcutFilter(const QString&))); ++ connect(mPreferencesUI->recordButton, SIGNAL(clicked(bool)), this, SLOT(recordingClicked(bool))); ++ connect(mPreferencesUI->abortButton, SIGNAL(clicked()), this, SLOT(abortClicked())); ++ connect(mPreferencesUI->resetButton, SIGNAL(clicked()), this, SLOT(resetClicked())); ++ connect(mPreferencesUI->noCtrl, &QCheckBox::toggled, UBShortcutManager::shortcutManager(), &UBShortcutManager::ignoreCtrl); ++ connect(mPreferencesUI->mainTabWidget, &QTabWidget::currentChanged, [this](int tab){ ++ auto shortcutTab = mPreferencesUI->mainTabWidget->indexOf(mPreferencesUI->shortcutTab); ++ ++ if (tab != shortcutTab) { ++ abortClicked(); ++ } ++ }); + } + + void UBPreferencesController::init() +@@ -351,6 +496,27 @@ void UBPreferencesController::init() + + mMarkerProperties->opacitySlider->setValue(settings->boardMarkerAlpha->get().toDouble() * 100); + ++ // shortcut tab ++ mPreferencesUI->shortcutTableView->setModel(UBShortcutManager::shortcutManager()); ++ mPreferencesUI->shortcutTableView->horizontalHeader()->setModel(UBShortcutManager::shortcutManager()); ++ mPreferencesUI->shortcutTableView->horizontalHeader()->resizeSection(0, 150); ++ mPreferencesUI->shortcutTableView->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); ++ mPreferencesUI->noCtrl->setChecked(settings->value("Shortcut/IgnoreCtrl").toBool()); ++ mPreferencesUI->noCtrl->setEnabled(!UBShortcutManager::shortcutManager()->hasCtrlConflicts()); ++} ++ ++bool UBPreferencesController::eventFilter(QObject *obj, QEvent *event) ++{ ++ if (event->type() == QEvent::KeyPress) ++ { ++ QKeyEvent *keyEvent = static_cast(event); ++ return handleKeyEvent(keyEvent); ++ } ++ else ++ { ++ // standard event processing ++ return QObject::eventFilter(obj, event); ++ } + } + + void UBPreferencesController::close() +@@ -445,7 +611,8 @@ void UBPreferencesController::defaultSettings() + mPreferencesUI->checkSoftwareUpdateAtLaunchCheckBox->setChecked(defaultValue); + + } +- else if(mPreferencesUI->mainTabWidget->currentWidget() == mPreferencesUI->networkTab){ ++ else if(mPreferencesUI->mainTabWidget->currentWidget() == mPreferencesUI->networkTab) ++ { + bool defaultValue = settings->webUseExternalBrowser->reset().toBool(); + mPreferencesUI->useExternalBrowserCheckBox->setChecked(defaultValue); + defaultValue = settings->webShowPageImmediatelyOnMirroredScreen->reset().toBool(); +@@ -480,6 +647,23 @@ void UBPreferencesController::defaultSettings() + lightBackgroundCrossOpacityValueChanged(lightBackgroundOpacity); + + } ++ else if(mPreferencesUI->mainTabWidget->currentWidget() == mPreferencesUI->shortcutTab) ++ { ++ if (mPreferencesUI->recordButton->isChecked()) ++ { ++ abortClicked(); ++ } ++ ++ UBShortcutManager* sm = UBShortcutManager::shortcutManager(); ++ ++ for (int row = 0; row < sm->rowCount(); ++row) ++ { ++ QModelIndex rowIndex = sm->index(row, 0); ++ sm->resetData(rowIndex); ++ } ++ ++ resetClicked(); ++ } + } + + void UBPreferencesController::darkBackgroundCrossOpacityValueChanged(int value) +@@ -690,6 +874,70 @@ void UBPreferencesController::systemOSKCheckBoxToggled(bool checked) + mPreferencesUI->keyboardPaletteKeyButtonSize_Label->setVisible(!checked); + } + ++void UBPreferencesController::actionSelected(const QModelIndex &index) ++{ ++ currentIndex = index; ++ UBShortcutManager* sm = UBShortcutManager::shortcutManager(); ++ mPreferencesUI->keySequence->setText(sm->data(index.siblingAtColumn(2), UBShortcutManager::PrimaryShortcutRole).toString()); ++ mPreferencesUI->mouseButton->setText(sm->data(index.siblingAtColumn(3)).toString()); ++ mPreferencesUI->stylusButton->setText(sm->data(index.siblingAtColumn(4)).toString()); ++ ++ bool isAction = sm->data(index, UBShortcutManager::ActionRole).toBool(); ++ mPreferencesUI->recordButton->setEnabled(true); ++ mPreferencesUI->shortcutsGroupBox->setEnabled(isAction); ++} ++ ++void UBPreferencesController::recordingClicked(bool checked) ++{ ++ if (!checked && currentIndex.isValid()) ++ { ++ UBShortcutManager* sm = UBShortcutManager::shortcutManager(); ++ sm->setData(currentIndex.siblingAtColumn(2), mPreferencesUI->keySequence->text()); ++ sm->setData(currentIndex.siblingAtColumn(3), sm->buttonIndex(mPreferencesUI->mouseButton->text())); ++ sm->setData(currentIndex.siblingAtColumn(4), sm->buttonIndex(mPreferencesUI->stylusButton->text())); ++ } ++ ++ mPreferencesUI->shortcutTableView->setSelectionMode(checked ? QTableView::NoSelection : QTableView::SingleSelection); ++ mPreferencesUI->recordButton->setText(checked ? tr("Accept", "preferencesDialog") : tr("Record", "preferencesDialog")); ++} ++ ++void UBPreferencesController::abortClicked() ++{ ++ applyShortcutFilter(mPreferencesUI->filter->text()); ++ ++ mPreferencesUI->recordButton->setEnabled(true); ++ mPreferencesUI->recordButton->setChecked(false); ++ mPreferencesUI->recordButton->setText(tr("Record", "preferencesDialog")); ++ mPreferencesUI->shortcutTableView->setSelectionMode(QTableView::SingleSelection); ++ mPreferencesUI->shortcutTableView->clearSelection(); ++ mPreferencesUI->report->setText(""); ++ mPreferencesUI->noCtrl->setEnabled(!UBShortcutManager::shortcutManager()->hasCtrlConflicts()); ++ actionSelected(mPreferencesUI->shortcutTableView->model()->index(0, 0)); ++} ++ ++void UBPreferencesController::resetClicked() ++{ ++ if (mPreferencesUI->recordButton->isChecked()) ++ { ++ abortClicked(); ++ } ++ ++ if (currentIndex.isValid()) ++ { ++ UBShortcutManager* sm = UBShortcutManager::shortcutManager(); ++ ++ sm->resetData(currentIndex); ++ applyShortcutFilter(mPreferencesUI->filter->text()); ++ ++ mPreferencesUI->keySequence->setText(sm->data(currentIndex.siblingAtColumn(2)).toString()); ++ mPreferencesUI->mouseButton->setText(sm->data(currentIndex.siblingAtColumn(3)).toString()); ++ mPreferencesUI->stylusButton->setText(sm->data(currentIndex.siblingAtColumn(4)).toString()); ++ } ++ ++ mPreferencesUI->report->setText(""); ++ mPreferencesUI->noCtrl->setEnabled(!UBShortcutManager::shortcutManager()->hasCtrlConflicts()); ++} ++ + UBBrushPropertiesFrame::UBBrushPropertiesFrame(QFrame* owner, const QList& lightBackgroundColors, + const QList& darkBackgroundColors, const QList& lightBackgroundSelectedColors, + const QList& darkBackgroundSelectedColors, UBPreferencesController* controller) +diff --git a/src/core/UBPreferencesController.h b/src/core/UBPreferencesController.h +index d89b4c181..25413762c 100644 +--- a/src/core/UBPreferencesController.h ++++ b/src/core/UBPreferencesController.h +@@ -70,6 +70,9 @@ class UBPreferencesController : public QObject + UBPreferencesController(QWidget *parent); + virtual ~UBPreferencesController(); + ++ bool handleKeyEvent(QKeyEvent *event); ++ bool handleMouseEvent(QMouseEvent *event); ++ bool handleTabletEvent(QTabletEvent *event); + + public slots: + +@@ -80,6 +83,8 @@ class UBPreferencesController : public QObject + void wire(); + void init(); + ++ virtual bool eventFilter(QObject* obj, QEvent* event) Q_DECL_OVERRIDE; ++ + UBPreferencesDialog* mPreferencesWindow; + Ui::preferencesDialog* mPreferencesUI; + UBBrushPropertiesFrame* mPenProperties; +@@ -104,14 +109,21 @@ class UBPreferencesController : public QObject + void toolbarOrientationVertical(bool checked); + void toolbarOrientationHorizontal(bool checked); + void systemOSKCheckBoxToggled(bool checked); ++ void actionSelected(const QModelIndex& index); ++ void recordingClicked(bool checked); ++ void abortClicked(); ++ void resetClicked(); + + private slots: + void adjustScreensPreferences(); ++ void applyShortcutFilter(const QString& filter, int filterCol = -1); ++ + + private: + static qreal sSliderRatio; + static qreal sMinPenWidth; + static qreal sMaxPenWidth; ++ QModelIndex currentIndex; + }; + + class UBBrushPropertiesFrame : public Ui::brushProperties + +From 414b6d55e67c0612a6318fd3acfa495432e44b73 Mon Sep 17 00:00:00 2001 +From: letsfindaway +Date: Mon, 30 Sep 2024 16:21:21 +0200 +Subject: [PATCH 2/2] i18n: update German translation + +- change ownership of a translation string in UBShortcutManager +- add new translation strings +- update a few translations +--- + resources/i18n/OpenBoard_de.ts | 70 ++++++++++++++++++++++++++++++++-- + src/core/UBShortcutManager.cpp | 2 +- + 2 files changed, 67 insertions(+), 5 deletions(-) + +diff --git a/resources/i18n/OpenBoard_de.ts b/resources/i18n/OpenBoard_de.ts +index 275332271..b4e278c81 100644 +--- a/resources/i18n/OpenBoard_de.ts ++++ b/resources/i18n/OpenBoard_de.ts +@@ -3008,6 +3008,28 @@ Möchten Sie diese Fehler für diesen Computer ignorieren? + Use all available displays + Alle verfügbaren Bildschirme nutzen + ++ ++ Key sequence already in use ++ Tastenkombination wird bereits benutzt ++ ++ ++ Mouse button already in use ++ Maustaste wird bereits benutzt ++ ++ ++ Stylus button already in use ++ Stifttaste wird bereits benutzt ++ ++ ++ Accept ++ preferencesDialog ++ Übernehmen ++ ++ ++ Record ++ preferencesDialog ++ Aufnehmen ++ + + + UBSettings +@@ -3079,7 +3101,7 @@ Möchten Sie diese Fehler für diesen Computer ignorieren? + + + Reset zoom factor +- Zoom zurücksetzen ++ Zoom-Faktor zurücksetzen + + + +@@ -3129,7 +3151,7 @@ Möchten Sie diese Fehler für diesen Computer ignorieren? + + + Command +- Kommando ++ Befehl + + + +@@ -3144,12 +3166,12 @@ Möchten Sie diese Fehler für diesen Computer ignorieren? + + + Mouse Button +- Mausknopf ++ Maustaste + + + + Tablet Button +- Tablet Stiftknopf ++ Stifttaste + + + +@@ -4076,6 +4098,46 @@ p, li { white-space: pre-wrap; } + List of screens used for Control, Display and Previous pages + Liste der Bildschirme, die für die Hauptansicht, Erweiterte Ansicht und Vorherige Seiten verwendet werden + ++ ++ Shortcut ++ Kurzbefehl ++ ++ ++ Filter ++ Filter ++ ++ ++ Active keyboard shortcuts without pressing Ctrl key ++ Aktiviere Kurzbefehle auch ohne Strg Taste ++ ++ ++ Shortcuts ++ Kurzbefehle ++ ++ ++ Abort ++ Abbrechen ++ ++ ++ Record ++ Aufnehmen ++ ++ ++ Stylus Button ++ Stifttaste ++ ++ ++ Mouse Button ++ Maustaste ++ ++ ++ Reset ++ Zurücksetzen ++ ++ ++ Key Sequence ++ Tasten ++ + + + trapFlashDialog +diff --git a/src/core/UBShortcutManager.cpp b/src/core/UBShortcutManager.cpp +index dfe8c8239..56a66a870 100644 +--- a/src/core/UBShortcutManager.cpp ++++ b/src/core/UBShortcutManager.cpp +@@ -43,7 +43,7 @@ UBShortcutManager* UBShortcutManager::sShortcutManager = nullptr; + + UBShortcutManager::UBShortcutManager() : mIgnoreCtrl(false) + { +- actionsOfGroup(QObject::tr("Common")); ++ actionsOfGroup(tr("Common")); + } + + UBShortcutManager *UBShortcutManager::shortcutManager() diff --git a/1347-chore-appdata.patch b/1347-chore-appdata.patch new file mode 100644 index 0000000..e6a3b5d --- /dev/null +++ b/1347-chore-appdata.patch @@ -0,0 +1,575 @@ +From b0d55d03ec4ce0b4c8142d03f0dba353aaad2aeb Mon Sep 17 00:00:00 2001 +From: letsfindaway +Date: Sat, 18 Oct 2025 16:07:57 +0200 +Subject: [PATCH 1/2] chore: add appdata metainfo + +- add metainfo.xml file +- add screenshot files +- update CMakeLists.txt to install metainfo +- note: screenshot URLs should be changed once this PR is merged + and images are available in the github repository + +Signed-off-by: letsfindaway +--- + CMakeLists.txt | 2 + + .../linux/ch.openboard.OpenBoard.metainfo.xml | 443 ++++++++++++++++++ + ...Board-227c6881013a1d904aca1a358400f3bd.png | Bin 0 -> 155967 bytes + ...Board-5d3ef7e025a1a382c1ed92fba185087a.png | Bin 0 -> 176792 bytes + ...Board-b93e95fc23edb6b9f70e571bc3e17b87.png | Bin 0 -> 293557 bytes + 5 files changed, 445 insertions(+) + create mode 100644 resources/linux/ch.openboard.OpenBoard.metainfo.xml + create mode 100644 resources/screenshots/ch.openboard.OpenBoard-227c6881013a1d904aca1a358400f3bd.png + create mode 100644 resources/screenshots/ch.openboard.OpenBoard-5d3ef7e025a1a382c1ed92fba185087a.png + create mode 100644 resources/screenshots/ch.openboard.OpenBoard-b93e95fc23edb6b9f70e571bc3e17b87.png + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b32a8d84f..a92cf6620 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -74,6 +74,7 @@ set(OPENBOARD_ICON_FILE resources/images/ch.openboard.OpenBoard.svg) + set(OPENBOARD_DESKTOP_FILE resources/linux/ch.openboard.OpenBoard.desktop) + set(OPENBOARD_MIMETYPE_FILE resources/linux/ch.openboard.openboard-ubz.xml) + set(OPENBOARD_MIMEICON_FILE resources/linux/ch.openboard.application-ubz.svg) ++set(OPENBOARD_METAINFO_FILE resources/linux/ch.openboard.OpenBoard.metainfo.xml) + + + # ========================================================================== +@@ -223,6 +224,7 @@ install(FILES ${OPENBOARD_ICON_FILE} DESTINATION ${CMAKE_INSTALL_DATA + install(FILES ${OPENBOARD_DESKTOP_FILE} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications) + install(FILES ${OPENBOARD_MIMETYPE_FILE} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/mime/packages) + install(FILES ${OPENBOARD_MIMEICON_FILE} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/mimetypes) ++install(FILES ${OPENBOARD_METAINFO_FILE} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo) + + + # ========================================================================== +diff --git a/resources/linux/ch.openboard.OpenBoard.metainfo.xml b/resources/linux/ch.openboard.OpenBoard.metainfo.xml +new file mode 100644 +index 000000000..84c6a1974 +--- /dev/null ++++ b/resources/linux/ch.openboard.OpenBoard.metainfo.xml +@@ -0,0 +1,443 @@ ++ ++ ++ ++ ch.openboard.OpenBoard ++ OpenBoard ++ Interactive whiteboard for schools and universities ++ Cuadro blanco interactivo para escuelas y universidades ++ Interaktiv tavle for skoler og universiteter ++ Quadro branco interativo para escolas e universidades ++ Interaktives Whiteboard für Schulen und Universitäten ++ Tableau blanc interactif pour écoles et universités ++ Lavagna interattiva per la scuola e l'università ++ GPL-3.0-only ++ CC0-1.0 ++ ++ Département de l'Instruction Publique (DIP-SEM) ++ ++ ++

OpenBoard is an open source cross-platform teaching software for interactive whiteboard designed primarily for use in schools and universities. It can be used both with interactive whiteboards or in a dual-screen setup with a pen-tablet display and a beamer.

++

OpenBoard es un software de enseñanza de plataforma cruzada de código abierto para cuadros interactivos diseñado principalmente para uso en escuelas y universidades. Se puede utilizar con marcos interactivos o en una configuración de pantalla dual con un monitor de escritorio gráfico y un proyector.

++

OpenBoard er et kryssplattform og åpen kildekode undervisningsprogram for interaktive tavler, spesielt designet for bruk i skoler og universiteter. Det kan brukes både med interaktive tavler eller i et dobbelt skjermoppsett med tegnebrett med skjerm og projektor.

++

O OpenBoard é um software de ensino de plataforma cruzada de código aberto para quadros interativos projetado principalmente para uso em escolas e universidades. Ele pode ser usado com quadros interativos ou em uma configuração de tela dupla com um monitor de mesa gráfica e um projetor.

++

OpenBoard ist ein interaktives Open-Source-Whiteboard für den Einsatz in Schulen oder Universitäten. Es kann entweder mit einem interaktiven Whiteboard oder in einer Dual-Screen-Konfiguration mit einem digitalen Tablet und einem Beamer verwendet werden.

++

OpenBoard est un logiciel d’enseignement interactif pour TNI open source conçu pour être utilisé dans les écoles ou universités. Il peut être utilisé indifféremment avec un tableau blanc interactif ou dans une configuration à double écran avec tablette numérique et un beamer.

++

OpenBoard è un'applicazione di lavagna interattiva open source e multipiattaforma progettata principalmente per l'uso nelle scuole e nelle università. Può essere usata sia con lavagne interattive che con uno schermo tavoletta a penna, con o senza un'impostazione a doppio schermo, ed un proiettore.

++
++ https://www.openboard.ch ++ https://github.com/OpenBoard-org/OpenBoard/issues ++ https://openboard.ch/support.en.html ++ https://github.com/OpenBoard-org/openboard/pulls ++ ++ OpenBoard ++ ch.openboard.OpenBoard.desktop ++ ++ pointing ++ keyboard ++ touch ++ tablet ++ ++ ++ ++ Board mode ++ https://github.com/flathub/ch.openboard.OpenBoard/blob/fix-screenshots/screenshots/ch.openboard.OpenBoard-227c6881013a1d904aca1a358400f3bd.png?raw=true ++ ++ ++ Web browser ++ https://github.com/flathub/ch.openboard.OpenBoard/blob/fix-screenshots/screenshots/ch.openboard.OpenBoard-b93e95fc23edb6b9f70e571bc3e17b87.png?raw=true ++ ++ ++ File browser ++ https://github.com/flathub/ch.openboard.OpenBoard/blob/fix-screenshots/screenshots/ch.openboard.OpenBoard-5d3ef7e025a1a382c1ed92fba185087a.png?raw=true ++ ++ ++ ++ ++ ++

Bug fixes

++
    ++
  • Tried to mitigate some audio related issues on Debian, by forcing the use of the ffmpeg backend (see Known Issues for more details on the remaining bugs)
  • ++
++

Known issues

++
    ++
  • On any widget, select options (Drop-down lists) won't appear at the right position. Be careful as it sometimes will appear behind the left or right palette of the Board Mode.
  • ++
  • Reading multiple audio files, then, within the same session, coming back to a previously played audio file end in the audio file not being played correctly, especially with short audios. Duplicate the audio to replay it without any issue, or use any other way to play audio (desktop mode, letters order interactivity, online audio and video apps like peertube, etc).
  • ++
  • Some use cases remain where you can end up with documents at the same level having the same name.
  • ++
  • An issue can occur, that is not clearly identified at this time, when importing an UBX, where users end up with the imported documents appearing multiple times in the documents tree, at the same level.
  • ++
  • In Desktop Mode, Gnome Dock should be set to bottom position to workaround the issue with the OpenBoard left palette not being usable from above it.
  • ++
++
++
++ ++ ++

New features

++
    ++
  • Added the "Snap-to-Grid" feature, which allows the user to snap elements on the lines of the backgrounds. If no ruled/crossed background is displayed, the feature uses the crossed background setting.
  • ++
++

Improvements

++
    ++
  • Scenes are loaded on idle time of the main thread when possible
  • ++
  • Improved a bit how thumbnails are handled to avoid useless and heavy operations
  • ++
  • Export axes tools when exporting document to PDF
  • ++
  • The current rotation angle is now displayed for any object, also for a group of objets being rotated
  • ++
  • The current z-index of an object is now displayed when clicking on the layer up/down buttons.
  • ++
  • It is now possible to draw on each side of the triangle
  • ++
  • It is now possible to draw beyond the triangle/ruler limits
  • ++
  • The rotation center is now the triangle corner instead of the 0 graduation
  • ++
  • Screen gray borders are now transparent and reflects the secondary screen resolution
  • ++
  • Upgraded from Qt 5 to Qt 6 on all officially supported platforms
  • ++
++

Bug Fixes

++
    ++
  • Fixed a bug where annotating the first page when OpenBoard launches and exiting from the Board would make the application crash and the data lost
  • ++
  • Fixed impossible to read a video on Debian
  • ++
  • Dice interactivity was not working
  • ++
  • Fixed several crashes
  • ++
++
++
++ ++ ++

New features

++
    ++
  • added the possibility to move tools (ruler, compass, etc) using arrow keys.
  • ++
  • added a new Latex2SVG application converting Latex formulas to SVG, that you can then drag and drop on the board. Also supports mhchem for chemistry
  • ++
  • added CMake support for community-driven Linux builds, thanks to @letsfindaway and @Vekhir.
  • ++
++ ++

Improvements

++
    ++
  • simplified the rules to be authorized to put a new text on the board, when close to another text box.
  • ++
  • Improved performances on document loading time, especially for heavy documents, containing a lot of annotations.
  • ++
  • changed delete icons' tooltip according to their text
  • ++
  • migrated Windows build from xpdf to poppler
  • ++
  • improved zLevel consistency and how the users can change it. A simple click on the "Layer Up" and "Layer Down" now simply increments or decrements the zLevel of the targeted object. Long click behavior remains unchanged.
  • ++
++ ++

Bug fixes

++
    ++
  • workaround for an issue related to QTBUG-79216, where dead keys were simply ignored in web widgets. The workaround fixes completely the issue on Linux, but not on macOS. You can workaround
  • ++
  • the issue by giving focus of an input of the widget and pressing Next page then previous page on the Board toolbar, or by simply reloading the page when possible.
  • ++
  • fixed an issue where the mask would preserve aspect ratio when using the bottom right handle to resize it.
  • ++
  • fixed an issue where a newly created widget would not be visible until next launch
  • ++
  • fixed an issue where removing from board a newly created widget would erase it from library and disk
  • ++
  • fixed an issue where drag and dropping an object from a widget to the board would never trigger mouseReleaseEvent, ending with the widget being moved when not intended
  • ++
  • fixed an issue where object zLevels would not be correctly set
  • ++
  • fixed crashes occurring when using the 'Add' button's functionalities in Documents Mode
  • ++
  • fixed a crash occurring when trying to drag and drop an image already on the board
  • ++
  • fixed an issue where an image would be copy-pasted at bad off-screen positions on Windows
  • ++
  • fixed a crash occuring when directly exiting OpenBoard from Board Mode on heavy documents.
  • ++
  • fixed an issue where the scale of a pdf item was not preserved when copying the page to another document, with the help of @letsfindaway
  • ++
  • fixed an issue where the eraser was not working when completely inside polygon, thanks to @letsfindaway
  • ++
  • fixed incorrect sRGB profile and some files rights, thanks to @letsfindaway
  • ++
  • fixed an issue by avoiding access to uninitialized DisplayManager, thanks to @letsfindaway
  • ++
  • fixed ruler icons behaviors when zooming, thanks to @Vekhir
  • ++
  • fixed windows silent install parameters for vcredist, thanks to @PatricCunhaforWork
  • ++
++
++
++ ++ ++ ++

New features

++
    ++
  • Added the possibility to mark your documents as favorite. You can then drag and drop them from the library palette to the board, so you can change from one document to another quicker. Note that every recently open document is also temporary added to the Favorite folder in the Library palette, even if they are not marked as favorite. They will be removed when you exit OpenBoard, unless you mark them as favorite.
  • ++
  • Added the possibility to import multiple files at once.
  • ++
  • Added a "Hints and tips" dialog that shows up in Board Mode, at launch, to provide some basic knowledge on how to use OpenBoard. The dialog can also be displayed via the OpenBoard menu.
  • ++
  • Removed obsolete "Web Browser" application from OpenBoard.
  • ++
  • Added a "Replace All" option in the replacement dialog of an UBX import.
  • ++
  • Added "Export background grid" and "Export background color" options to the preferences.
  • ++
  • In Board mode, thumbnails on the left palette display the current page in "real-time"
  • ++
  • Added the possibility to start in Document Mode.
  • ++
  • UBZ documents can now be imported everywhere in the Documents tree.
  • ++
  • Added the possibility to hide an object on extended screen when object is selected (useful for editable textboxes that you want to hide with the mask, and edit during class without revealing its content, for example). Note that your OS must be configured with "Extended Mode", not in "Clone Mode"
  • ++
  • Added a popup asking user what to do when dropping an object above a widget, as the intent could be to drop it inside the widget or on the board.
  • ++
  • The internal navigator was completely reworked to use a modern, Chrome-based browser engine including full support for HTML5. It represented a lot of work, almost entirely accomplished by @letsfindaway. A huge thank you for his continuous dedication to the project. This migration came with a bunch of rework, but also some cool adding. Among other things :
  • ++
  • Improved support for creating widgets from web pages and detecting embed-able content.
  • ++
  • Configurable Cookie handling.
  • ++
  • Web Inspector for widget developers.
  • ++
  • Pick images and PDFs from web pages and add them to the board.
  • ++
  • Added the possibility to drag-and-drop or copy-paste of URLs to the board, to create a widget from the dropped web page, thanks to @letsfindaway.
  • ++
  • Rework of the display management. Via the preferences, you can now organize your screens in a more user-friendly way, thanks to @letsfindaway.
  • ++
  • Added a tool to draw Cartesian axes, thanks to @letsfindaway.
  • ++
  • Added an option to show intermediate grid lines (5mm), thanks to @letsfindaway.
  • ++
  • Added an option to enable a Seyes ruled background, thanks to @sebojolais. This option is SeyesRuledBackground and to be placed in the [Board] section.
  • ++
  • Zoom with "Ctrl + mouse wheel". You can have a finer control of the zoom, using this functionality. You can also scroll in the current page (up and down with the mouse wheel, left and right with alt + mouse wheel). Original idea by @ootwch, improved by @letsfindaway.
  • ++
  • Added a Camera widget, to embed your camera directly in the board, thanks to @letsfindaway.
  • ++
  • Added the possibility to choose the text box size, by holding the mouse click until the desired width is reached (original idea by @sebojolais).
  • ++
  • Added the possibility to run the main screen of OpenBoard in Windowed mode, thanks to @micolous.
  • ++
  • Added support for ffmpeg-5, thanks to @letsfindaway.
  • ++
  • Added support for Qt 6, with the precious help of @letsfindaway amd @JBBgameich.
  • ++
  • Added support for Universal packaging on macOS.
  • ++
++

Improvements

++
    ++
  • Added keyboard shortcuts to colors (1, 2, 3, 4 and 5).
  • ++
  • Improved Desktop Mode UI so user knows what's selected easier. Also reduced the time to hold left click for sub-menus to show up
  • ++
  • Toolbar and Preferences now also usable on low-resolution devices.
  • ++
  • Improved height handling of text boxes. Height is now automatically handled and adapt through user's width resizes.
  • ++
  • Improved "confirm-before-delete" dialogs, by making them more explicit on what is about to be deleted. Added better icons to illustrate each use case.
  • ++
  • Display name in the tooltip of objects in the Library palette.
  • ++
  • Store JPEG images in their native format, thanks to @letsfindaway.
  • ++
  • Observe image rotation from image metadata, thanks to @letsfindaway.
  • ++
  • Size of exported PDF page is now same as imported PDF page size. Thank you @letsfindaway for the help !
  • ++
  • Allow dropping of images to sub-folders of the image library, thanks to @letsfindaway.
  • ++
  • Better positioning of annotations, thanks to @letsfindaway.
  • ++
  • Maintained compatibility for Qt 5.12, thanks to @letsfindaway and @JBBgameich
  • ++
  • Many performance improvements, with the precious help of @letsfindaway.
  • ++
++

Bug fixes

++
    ++
  • Fixed an issue where zooming in/out with an Axes tool on the board could end in a crash, thanks to @letsfindaway
  • ++
  • Fixed an issue where, in a network-storage context, objects (PDF, audio, etc) could be removed from the document.
  • ++
  • Fixed an issue where it was no longer possible to resize a widget, horizontally or vertically.
  • ++
  • Fixed an issue where right-clicking on a textbox, would deselect it, making inoperative the actions of the context menu.
  • ++
  • Fixed a crash where a not correctly readable PDF would prevent export from working. A new dialog is now showing up to explain user what's going on, before falling back to the export of the PDF pages as detailed (heavy) images.
  • ++
  • Fixed an issue where user would have to click multiple times on "undo" to obtain the desired result.
  • ++
  • Fixed an issue where it was not possible to change font size on an empty text box.
  • ++
  • Fixed an issue where deleting the last character of a text box would provoke a resize of the box.
  • ++
  • Fixed an issue where user could duplicate a page by accidentally drag and drop a thumbnail from Documents Mode to Board Mode.
  • ++
  • Fixed an issue where rotating an object more than 90° would flip it horizontally.
  • ++
  • Fixed an issue on macOS where clicking on "play" on a video would resize it to its original size.
  • ++
  • Fixed an issue where it was not possible to open an UBZ by double-clicking on it with OpenBoard already launched.
  • ++
  • Fixed an issue where an unwanted drag and drop could be started when simply clicking on a thumbnail on the left palette.
  • ++
  • Fixed an issue where grid-size was not persisted, nor read, if crossed/ruled background was not selected (making axes tool loaded in another machine not corresponding to original).
  • ++
  • Fixed an issue where an object in the right palette could be selected but displayed buttons not referring to it or its current state, after a drag and drop for example.
  • ++
  • Fixed an issue where clicking on a selected item or on its delegate frame would deselect it.
  • ++
  • Fixed an issue where Google Maps application was no longer working.
  • ++
  • Fixed an issue where it was no longer possible to drag and drop a JPEG from a Pixabay search.
  • ++
  • Fixed multiple crashes.
  • ++
  • Several issues were fixed regarding interactivities, thanks to the migration made by @letsfindaway to a Chrome-based browser engine. Drop-down lists should now behave correctly, and it should be possible to scroll up and down when needed.
  • ++
  • Many fixes related to handling of metadata, thanks to @letsfindaway.
  • ++
  • Export of pages with widgets now export a snapshot of the widget content, thanks to @letsfindaway.
  • ++
  • Fixed some typos, thanks to @cheese1.
  • ++
++

Known issues

++
    ++
  • Some 3rd party widgets may no longer work, as the internal widget API was changed. Please report to the widget author as well as to the OpenBoard team to help updating the widget.
  • ++
  • Adding a PDF to the board from the internal browser (right click -> add to board) does not work consistently.
  • ++
  • Some use cases remain where you can end up with documents at the same level having the same name.
  • ++
  • An issue can occur, that is not clearly identified at this time, when importing an UBX, where users end up with the imported documents appearing multiple times in the documents tree, at the same level.
  • ++
  • In Desktop Mode, Gnome Dock should be set to bottom position to workaround the issue with the OpenBoard left palette not being usable from above it
  • ++
++
++
++ ++ ++

New features

++
    ++
  • Added the possibility to zoom using ctrl/cmd + mouse wheel, scroll up/down with mouse wheel, and scroll left/right with alt + mouse wheel, thanks to @letsfindaway
  • ++
  • Updated Simplified Chinese translation, thanks to @wcxu21
  • ++
  • Updated basque translations, thanks to @alexgabi
  • ++
++

Bug fixes

++
    ++
  • Fixed an issue where a PDF imported in OpenBoard, then exported as PDF, could have the original PDF inside not correctly scaled, with the help of @letsfindaway
  • ++
  • Improved performance of building font model, thanks to @letsfindaway
  • ++
++

Known issues

++
    ++
  • When Control screen is not the first screen on the left, main menu will not appear where it should. It is due to a Qt bug
  • ++
  • With OpenBoard no longer able to be launched multiple times, double-clicking on an ubz file while OpenBoard is open won't open it.
  • ++
  • In Desktop Mode, Gnome Dock should be set to bottom position to workaround the issue with the Openboard left palette not beeing usable from above it.
  • ++
++
++
++ ++ ++

Bug fixes

++
    ++
  • Fixed an issue where using the ruler would make drawing impossible, thanks to @vivianecs and @letsfindaway
  • ++
++

Known issues

++
    ++
  • When Control screen is not the first screen on the left, main menu will not appear where it should. It is due to a Qt bug
  • ++
  • With OpenBoard no longer able to be launched multiple times, double-clicking on an ubz file while OpenBoard is open won't open it.
  • ++
++
++
++ ++ ++

New Features

++
    ++
  • Added a progression bar at OpenBoard's launch.
  • ++
  • Restored complete support of PDF (1.0 to 1.4 versions) at export and permitted partial support of versions above (1.5 to 1.7) : a bug introduced in 1.5.2 was preventing the use of this method for versions 1.0 to 1.4. Also, previously, exported PDF pages were flattened as high resolution images, if the initial version of the PDF was > 1.4 or if an error occured during export.
  • ++
  • exported PDFs are now much lighter, and text in the exported PDF is searchable again.
  • ++
  • if an error occurs during the export, previous method (flattened images of each page) is used.
  • ++
  • Added several messages to notify the users of what's happening during long operations
  • ++
  • It is now possible to double-click on an OpenBoard document (.ubz) to launch OpenBoard and open the document directly, on every officially supported platform
  • ++
  • Doubled the size of the arrows in Desktop Mode, making it easier to click on them with a stylus, thanks to @temaps
  • ++
  • Updated Russian translations of GraphMe, thanks to @temaps
  • ++
  • Updated Polish translations, thanks to @marcin-serwin
  • ++
  • Updated Hungarian translations, thanks to @ovari
  • ++
  • Updated Brazilian Portuguese translations, thanks to @alexrsoares
  • ++
  • Updated Traditional Chinese translations, thanks to @SiderealArt
  • ++
  • Added the possibility to export background grid/color to PDF, using two new settings (ExportBackgroundGrid, ExportBackgroundColor), thanks to @letsfindaway
  • ++
  • added a condition in packaging to enable it for Raspberry 3 and 4, thanks to @mothsART
  • ++
++

Bug fixes

++
    ++
  • Fixed multiple issues regarding thumbnails generation
  • ++
  • Fixed several issues regarding selection in Documents Mode
  • ++
  • Fixed two bugs occurring when inserting an image or a folder of images
  • ++
  • Fixed an issue in Desktop Mode behavior becoming unstable after clicking on the library palette with the pen
  • ++
  • Fixed an issue where in certain cases, text boxes could jump to their previous position
  • ++
  • Fixed an issue where erasing some drawings then completely erase the board would result on a crash on the next page save
  • ++
  • Fixed an issue where magnifier in rectangle shape on the main screen would appear rounded in a second screen in extended mode
  • ++
  • Fixed an issue where it was impossible to delete a document right after opening it
  • ++
  • Fixed an issue where a duplicated mask would not behave like the original
  • ++
  • Fixed an issue where it was possible to launch multiple instances of OpenBoard
  • ++
  • Fixed trash text inconsistent with context and/or tooltip
  • ++
  • Fixed an issue where Display Screen's view would be offset from Control Screen's one after clicking on "next/previous" buttons
  • ++
  • Fixed an issue where erasing the board then undo it would result in background objects being in an inconsistent state
  • ++
  • Fixed several issues where play/pause, stop buttons and ticker would not update correctly when playing a video or an audio
  • ++
  • Fixed an issue where it was possible to create documents with the same name in a same folder
  • ++
  • Fixed several crashes when deleting documents that were on the the trash folder
  • ++
  • Fixed some parameters not updating in the application Papier, and removed external links
  • ++
  • Fixed an issue where the selected font on the font dialog would not be the one under cursor.
  • ++
  • Fixed a crash occurring when trying to delete all pages of a document. Also, it is no longer possible to try to delete all the pages of a document. One needs to select the document instead of all its pages to delete it.
  • ++
  • Fixed an issue where it was not possible to replay a video after a first play ended.
  • ++
  • Fixed a crash after trying to copy multiple pages in another document
  • ++
  • Fixed an issue where importing a ubz document would add an undesired empty page at the end of the document
  • ++
  • Fixed some issues where thumbnails would be re-generated several times with no reason
  • ++
  • Fixed a crash occurring after "Erase board + undo + redo + click on a thumbnail in the board thumbnails view"
  • ++
  • Fixed an issue where the horizontal bar appearing during drag'n'drop would not adapt to the thumbnail size
  • ++
  • Fixed an issue where a text box would loose focus after an automatic save is performed
  • ++
  • Fixed a bug where a second display could randomly appear (like if a second screen was available) and prevent Desktop Mode to be used
  • ++
  • Fixed a bug where drag'n'drop could be triggered after a simple click on a thumbnail, if persisting the current page was taking too much time
  • ++
  • Fixed an issue where some svg objects could be lost if the page was copied from a document to another
  • ++
  • Fixed an issue where rotation arrows would not be oriented properly after a rotation
  • ++
  • Fixed an issue where the selected pen size was not seen as selected in the "Pen Size" buttons group
  • ++
  • Fixed an issue where the last page would not have a thumbnail after a document is copied in another one
  • ++
  • Fixed a an issue where after copying a page in another document, the thumbnail would not appear in Board Mode. The application could crash after that, in some cases
  • ++
  • Fixed a crash occurring after double-clicking or "open with" on an ubx file, to try to open it with OpenBoard
  • ++
  • Fixed several issues regarding duplication of pages in Document Mode
  • ++
  • Fixed an issue where it was not possible to insert multiple times the same file in Document Mode
  • ++
  • Fixed an issue where active document would not be visible (depending on selected sort and order)
  • ++
  • Fixed several issues where renaming button was not working or not modifying the expected document
  • ++
  • Fixed a crash occurring if trying in Document Mode to delete several pages of the document that is active in Board Mode
  • ++
  • Fixed "compile with poppler >= 22.01", thanks to @letsfindaway
  • ++
  • Fixed "coordinates when display screen is left of control screen", thanks to @letsfindaway
  • ++
  • Fixed "cursor shown on a ruler using pen tool", thanks to @letsfindaway
  • ++
  • Fixed "remove incorrect sRGB profile from iCCP data in png files", thanks to @letsfindaway
  • ++
  • Fixed "palette and tool resize", thanks to @letsfindaway
  • ++
  • Fixed "no icon for ubz files"
  • ++
  • Fixed several crashes occurring while deleting multiple pages at once
  • ++
++

Known Issues

++
    ++
  • When Control screen is not the first screen on the left, main menu will not appear where it should. It is due to a Qt bug
  • ++
  • With OpenBoard no longer able to be launched multiple times, double-clicking on an ubz file while OpenBoard is open won't open it.
  • ++
  • In Desktop Mode, Gnome Dock should be set to bottom position to workaround the issue with the Openboard left palette not beeing usable from above it.
  • ++
++
++
++ ++ ++

New features:

++
    ++
  • upgraded to Qt 5.15
  • ++
  • the laser pointer diameter is now configurable in the config file, thanks to @letsfindaway. You can modify its value by changing it in the config file (PointerDiameter in the Board section)
  • ++
  • it is now possible to draw intermediate lines in the grid backgrounds, thanks to @letsfindaway. You can enable it by passing EnableIntermediateLines to true in the config file. Once we have time to test it, it might become enabled by default.
  • ++
  • a new application called "Axes" has been added, thanks to @letsfindaway. it can be enabled by passing EnableToolAxes to true in the config file. Once we have time to test it, it might become enabled by default.
  • ++
  • a new application called "Paper" (already available for a while in some Geneva schools) has been added, thanks to François Le Cléac'h
  • ++
  • added an option do enable/disable the new work made to increase performances when zooming on a PDF enableQualityLossToIncreaseZoomPerfs (enabled by default)
  • ++
  • added 4 shapes in the library
  • ++
  • ported from QScriptEngine to QJSonDocument, thanks to @JBBgameich
  • ++
  • updated russian translations, thanks to @mariiaalt
  • ++
  • added a zoomBehavior parameter to test some features regarding PDF rendering performances, thanks to @jpapale
  • ++
++

Bug fixes:

++
    ++
  • It was no longer possible to make a selection above a PDF background. In some cases, undo could cause the PDF to be detached from background.
  • ++
  • added shortcuts events in the thumbnails view.
  • ++
  • Object moves were not memorized when using the "magicFinger" tool.
  • ++
  • Fixed several issues regarding UBX import.
  • ++
  • Selected pen color was no longer visible on the main bar.
  • ++
  • In a text-box, a resize was applied even when only changing the color of a text.
  • ++
  • potential fix to the "screen overlapping" issue
  • ++
  • metadatas were not correctly persisted when the last action was to deleted a page in Board Mode
  • ++
  • fixed two issues regarding ubx files where import could fail if some folders and files had the same name
  • ++
  • fixed an issue where rename a folder could break the folder's hierarchy
  • ++
  • fixed the labels of the colors toolbar
  • ++
  • fixed an issue where resizing widgets would scale them instead of resizing the viewport
  • ++
  • fixed an issue where OpenBoard would crash if trying to drag and drop anything on the thumbnails view
  • ++
  • fixed an issue with shortcuts on a german keyboard layout, thanks to @letsfindaway
  • ++
  • fixed an issue where changing of stylus tool while input device is pressed could result on a crash, thanks to @letsfindaway
  • ++
  • fixed an issue where eraser preview circle would not hide at input device release, thanks @letsfindaway
  • ++
  • fixed two issues where pageCount metadata could be corrupted
  • ++
  • fixed a number of uninitialized variable uses, thanks to @multun
  • ++
  • fixed some polish translations, thanks to @marcin-serwin
  • ++
++

Known issues:

++
    ++
  • In Desktop Mode, Gnome Dock should be set to bottom position to workaround the issue with the Openboard left palette not beeing usable from above it.
  • ++
++
++
++ ++ ++

New Features:

++
    ++
  • Added a preference in the display tab to show/hide the date column on alphabetical sort
  • ++
  • Text color is inverted on background changes (white/black only)
  • ++
  • Last used color applied globally is persisted (until the user loads another document)
  • ++
  • Added the Bstgreek font to resources
  • ++
  • Added GETypoLibre improvements (made by Neuchâtel)
  • ++
  • Added 4 shapes with 'nofill' property
  • ++
  • Added two options to periodically delete old documents in trash (emptyTrashForOlderDocuments and emptyTrashDaysValue)
  • ++
++

Bug fixes

++
    ++
  • Improved naming behavior (now accepts "/" in documents name and replaces it with "-" for folders)
  • ++
  • A crash could occur when replacing active document during import
  • ++
  • Improvements in the selection of another document when the current one selected is deleted
  • ++
  • Fixed an issue where the text could be in interaction mode without being selected
  • ++
  • Fixed several issues regarding text boxes
  • ++
  • The 'updated-at' metadata was not updating on Documents Mode when a document was moved to trash
  • ++
  • Improved scrolling behavior on thumbnails view
  • ++
  • Improvements on click handling on thumbnails view
  • ++
  • Changed background color of the pen preview circle to make it more visible on white background
  • ++
  • Renamed documents were not automatically reordered
  • ++
  • Improvements on German translation thanks to @gektor-de
  • ++
  • Fixed some typo in German translation thanks to @odo2063
  • ++
  • Fixed a massive memory leak in podcast thanks to @bartoszek
  • ++
  • Improved ffmpeg version test (distribution agnostic) thanks to @bartoszek
  • ++
  • Fixed UI with dark system themes thanks to @JBBgameich
  • ++
  • Added background color to QMenu, QPushButton and QComboBox thanks to @JBBgameich
  • ++
  • Updated Slovak translations @jrynik
  • ++
++
++
++ ++ ++

New Features:

++
    ++
  • Support of OpenSSL 1.1 has been added on the three supported platforms. A special thanks to super7ramp for his help
  • ++
++

Bug fixes:

++
    ++
  • Some scaling issues could be experienced while exporting a document to PDF format
  • ++
  • An image could be lost after a page duplication followed by the deletion of the image on one of the two pages
  • ++
  • An image could be lost after the duplication of a page in Documents Mode
  • ++
  • When duplicating grouped objects of different types, the z-order was not preserved
  • ++
  • Perform "Set As Tool" on a flash animation could result on a crash
  • ++
  • Secured web pages was not loading on Windows internal navigator
  • ++
  • Slashes were allowed in folder's names
  • ++
  • Ukrainian translation's file extension is now uk, instead of ua. A special thanks to glixx for reporting it
  • ++
++

Known issues:

++
    ++
  • The redesign of the Documents mode was a complex development and several small cosmetic bugs may still remain, including focus issues
  • ++
  • Some slow motion can be experienced in macOS while using drag and drop in the new document tree structure
  • ++
++
++
++ ++ ++ ++
++ ++ openboard ++ ++
+ + +From b05d9cc8c0c621c9d62afb67bd480a8fef13d6c5 Mon Sep 17 00:00:00 2001 +From: letsfindaway +Date: Tue, 3 Feb 2026 11:55:53 +0100 +Subject: [PATCH 2/2] chore: add descriptions for new versions + +- add description for 1.7.4 +- add description for 1.7.5 + +Signed-off-by: letsfindaway +--- + .../linux/ch.openboard.OpenBoard.metainfo.xml | 56 +++++++++++++++++++ + 1 file changed, 56 insertions(+) + +diff --git a/resources/linux/ch.openboard.OpenBoard.metainfo.xml b/resources/linux/ch.openboard.OpenBoard.metainfo.xml +index 84c6a1974..6fa42d8f1 100644 +--- a/resources/linux/ch.openboard.OpenBoard.metainfo.xml ++++ b/resources/linux/ch.openboard.OpenBoard.metainfo.xml +@@ -52,6 +52,62 @@ + + + ++ ++ ++

Bug fixes

++
    ++
  • Fixed an issue where duplicating a document and then selecting the newly created document would not show any thumbnail
  • ++
  • Fix drag&drop multiple pages and selection behavior in document thumbnails view.
  • ++
  • Fix typos in README.md.
  • ++
++

Known issues

++
    ++
  • On any widget, select options (Drop-down lists) won't appear at the right position. Be careful as it sometimes will appear behind the left or right palette of the Board Mode.
  • ++
++
++
++ ++ ++

New features

++
    ++
  • Rotate snap indicator and snap rotated items.
  • ++
  • Webp image support.
  • ++
++

Improvements

++
    ++
  • Performance: background loader
  • ++
  • Unified thumbnails for board and document mode.
  • ++
  • README.md - typo.
  • ++
  • Fix typos
  • ++
  • German translation for Cache
  • ++
++

Bug fixes

++
    ++
  • Fixed an issue where glitches would appear if a PDF was rendered in a screen with DPI scaling > 100%.
  • ++
  • Fixed a bug where a PDF would appear blurry when devicepixelratio is not 1.0
  • ++
  • Fixed a bug where the view would be restored to center when clearing scene.
  • ++
  • Fix dropping pdf url to board.
  • ++
  • Fix copy ItemOwnZValue when cloning item.
  • ++
  • Fix tool usage with tablet eraser
  • ++
  • Fix delegate handle recognition.
  • ++
  • Fix small scene shifts when switching pages.
  • ++
  • Import file only once to document.
  • ++
  • Fix spinning message after UBZ import.
  • ++
  • Fix thumbnail sync.
  • ++
  • Fix incomplete ubdocument.
  • ++
  • Fix possible crash in UBThumbnailScene.
  • ++
  • Fix check for valid document in thumbnails view.
  • ++
  • Fix thumbnail size and UI buttons.
  • ++
  • Fix detect delegate handle with tablet pen
  • ++
  • Worked around a systematic crash on Windows where dropbar would be attached to a dangling scene after a document.
  • ++
  • Fix blurry screenshots.
  • ++
++

Known issues

++
    ++
  • On any widget, select options (Drop-down lists) won't appear at the right position. Be careful as it sometimes will appear behind the left or right palette of the Board Mode.
  • ++
++
++
+ + +

Bug fixes

diff --git a/1387-fix-poppler-25-11.patch b/1387-fix-poppler-25-11.patch new file mode 100644 index 0000000..4747d20 --- /dev/null +++ b/1387-fix-poppler-25-11.patch @@ -0,0 +1,25 @@ +From 0beaa9c088728cd51928cedad4847f4ccd48cd2a Mon Sep 17 00:00:00 2001 +From: Vekhir +Date: Mon, 8 Dec 2025 00:07:19 +0100 +Subject: [PATCH] Explicit cast to string_view + +Poppler 25.12 allows string_view and char*. QByteArray can be converted to both, so choose one explicitly +--- + src/pdf/XPDFRenderer.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/pdf/XPDFRenderer.cpp b/src/pdf/XPDFRenderer.cpp +index e8eb1c64d..23b76a9aa 100644 +--- a/src/pdf/XPDFRenderer.cpp ++++ b/src/pdf/XPDFRenderer.cpp +@@ -61,7 +61,9 @@ XPDFRenderer::XPDFRenderer(const QString &filename, bool importingFile) + #endif + globalParams->setupBaseFonts(QFile::encodeName(UBPlatformUtils::applicationResourcesDirectory() + "/" + "fonts").data()); + } +-#if POPPLER_VERSION_MAJOR > 22 || (POPPLER_VERSION_MAJOR == 22 && POPPLER_VERSION_MINOR >= 3) ++#if POPPLER_VERSION_MAJOR > 25 || (POPPLER_VERSION_MAJOR == 25 && POPPLER_VERSION_MINOR >= 12) ++ mDocument = new PDFDoc(std::make_unique(static_cast(filename.toLocal8Bit()))); ++#elif POPPLER_VERSION_MAJOR > 22 || (POPPLER_VERSION_MAJOR == 22 && POPPLER_VERSION_MINOR >= 3) + mDocument = new PDFDoc(std::make_unique(filename.toLocal8Bit())); + #else + mDocument = new PDFDoc(new GooString(filename.toLocal8Bit()), 0, 0, 0); // the filename GString is deleted on PDFDoc desctruction diff --git a/9117-disable-software-update.patch b/9117-disable-software-update.patch new file mode 100644 index 0000000..4c3de91 --- /dev/null +++ b/9117-disable-software-update.patch @@ -0,0 +1,41 @@ +From cc89f09bbc7f464ad79eaa82a74d490d507e4756 Mon Sep 17 00:00:00 2001 +From: letsfindaway +Date: Wed, 16 Nov 2022 08:31:29 +0100 +Subject: [PATCH] feat: disable software update check + +- for packages maintained by a Linux distribution, + a software update check is not relevant +- disable the check in the settings +- hide the associated checkbox in the preferences +--- + resources/etc/OpenBoard.config | 5 ++--- + src/core/UBPreferencesController.cpp | 1 + + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/resources/etc/OpenBoard.config b/resources/etc/OpenBoard.config +index ce77e232e..a3c8bf04e 100644 +--- a/resources/etc/OpenBoard.config ++++ b/resources/etc/OpenBoard.config +@@ -1,8 +1,7 @@ + [App] +-HideCheckForSoftwareUpdate=false ++HideCheckForSoftwareUpdate=true + HideSwapDisplayScreens=true +-EnableAutomaticSoftwareUpdates=true +-EnableSoftwareUpdates=true ++EnableAutomaticSoftwareUpdates=false + EnableStartupHints=true + FavoriteToolURIs=openboardtool://openboard/mask, openboardtool://ruler, openboardtool://compass, openboardtool://protractor, openboardtool://triangle, openboardtool://magnifier, openboardtool://cache + IsInSoftwareUpdateProcess=false +diff --git a/src/core/UBPreferencesController.cpp b/src/core/UBPreferencesController.cpp +index ed0e393d8..b67c415c3 100644 +--- a/src/core/UBPreferencesController.cpp ++++ b/src/core/UBPreferencesController.cpp +@@ -85,6 +85,7 @@ UBPreferencesController::UBPreferencesController(QWidget *parent) + mPreferencesWindow = new UBPreferencesDialog(this,parent, Qt::Dialog); + mPreferencesUI = new Ui::preferencesDialog(); // deleted in destructor + mPreferencesUI->setupUi(mPreferencesWindow); ++ mPreferencesUI->softwareUpdateGroupBox->hide(); // disable check for software update + adjustScreensPreferences(); + + connect(UBApplication::displayManager, &UBDisplayManager::availableScreenCountChanged, this, &UBPreferencesController::adjustScreensPreferences); diff --git a/OpenBoard-1.7.3.tar.gz b/OpenBoard-1.7.3.tar.gz new file mode 100644 index 0000000..6cab04c --- /dev/null +++ b/OpenBoard-1.7.3.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55532df042e3a5b36e1f6f1e29916d3bbd01796d920782fa1f8a03438dcddd9c +size 63271111 diff --git a/OpenBoard-1.7.4.tar.gz b/OpenBoard-1.7.4.tar.gz new file mode 100644 index 0000000..02d0053 --- /dev/null +++ b/OpenBoard-1.7.4.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9948a2fec3920679087422d5c1c1b18839e2a95cee5b485d7584bb972b54a13c +size 63263123 diff --git a/OpenBoard-1.7.5.tar.gz b/OpenBoard-1.7.5.tar.gz new file mode 100644 index 0000000..d343f15 --- /dev/null +++ b/OpenBoard-1.7.5.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31cdb4049402b93a346637bda537d528ef53c84d70598f0861ad9d77ad3e37eb +size 63262455 diff --git a/OpenBoard.changes b/OpenBoard.changes new file mode 100644 index 0000000..7980d07 --- /dev/null +++ b/OpenBoard.changes @@ -0,0 +1,389 @@ +------------------------------------------------------------------- +Tue Feb 3 11:11:42 UTC 2026 - Martin Winter + +- add AppData in metainfo.xml + +------------------------------------------------------------------- +Tue Feb 3 10:07:35 UTC 2026 - Martin Winter + +- update to release version 1.7.5 + +------------------------------------------------------------------- +Sun Jan 25 17:57:26 UTC 2026 - Martin Winter + +- update to release version 1.7.4 +- remove upstreamed patch 1387-fix-poppler-25-11.patch + +------------------------------------------------------------------- +Thu Dec 18 10:34:30 UTC 2025 - Martin Winter + +- add patch 1387-fix-poppler-25-11.patch + * compatibility with poppler 25.11 + * already merged upstream for next release + +------------------------------------------------------------------- +Mon Dec 23 20:47:49 UTC 2024 - Martin Winter + +- update to release version 1.7.3 +- remove patch 1165-fix-some-wayland-problems.patch + * users reported problems with this patch + * will not be merged upstream + +------------------------------------------------------------------- +Mon Nov 18 14:08:50 UTC 2024 - Martin Winter + +- update to release version 1.7.2 +- remove upstreamed patches + * remove 0569-scale-mirror-pixmap.patch + * remove 0961-use-cpp20.patch + * remove 0962-fix-cpp20-compatibility.patch + * remove 1010-fix-qapp-cast.patch + * remove 1017-ffmpeg7.patch +- adjust patches to new version + * adjust 0955-shortcut-configuration.patch + * adjust 9117-disable-software-update.patch +- add patch to circumvent some problems on wayland + * add 1165-fix-some-wayland-problems.patch +- switch from Qt5 to Qt6 + +------------------------------------------------------------------- +Tue Aug 13 14:27:48 UTC 2024 - Martin Winter + +- compatibility with ffmpeg-7 + * add 1017-ffmpeg7.patch + * patch is already merged and will be part of the next release + +------------------------------------------------------------------- +Thu Jul 4 06:31:52 UTC 2024 - Martin Winter + +- compatibility with poppler >= 24.05 + * poppler >= 24.05 requires c++20 + * add 0961-use-cpp20.patch + * add 0962-fix-cpp20-compatibility.patch + * both patches are already merged upstream + and will be part of the next release + +------------------------------------------------------------------- +Sun Jun 9 08:35:35 UTC 2024 - Martin Winter + +- fix a problem with latest plasma5 security patches + * add 1010-fix-qapp-cast.patch + +------------------------------------------------------------------- +Wed May 8 09:01:25 UTC 2024 - Martin Winter + +- update to release version 1.7.1 +- remove upstreamed patches + * remove 0830-cmake-community-builds.patch + * remove 9686-cmake-add-shortcut-manager.patch +- update patch to match updated sources + * replace 0686-shortcut-configuration.patch by 0955-shortcut-configuration.patch + +------------------------------------------------------------------- +Sat Dec 9 09:21:18 UTC 2023 - Martin Winter + +- update to release version 1.7.0 +- update patches to match updated sources + * update 0569-scale-mirror-pixmap.patch + * update 0686-shortcut-configuration.patch +- replace build system patch + * remove 0698-add-cmake-build-system.patch + * add 0830-cmake-community-builds.patch +- switch from pgkconfig to cmake for some BuildRequires + +------------------------------------------------------------------- +Sun Jun 18 06:21:57 UTC 2023 - Martin Winter + +- update to version 1.7.0~git20230614.2ff8f29 + * feature freeze before release +- remove upstreamed patches + * remove upstreamed 0551-common-background-drawing.patch + * remove upstreamed 0677-pdf-export-page-size.patch +- update patches to match updated sources + * update 0686-shortcut-configuration.patch + * update 0698-add-cmake-build-system.patch + * update 9117-disable-software-update.patch + +------------------------------------------------------------------- +Wed Jan 25 10:39:59 UTC 2023 - Dominique Leuenberger + +- BuildRequire pkgconfig(libavdevice) instead of ffmpeg-devel: let + OBS figure out the right packages that do not conlfict. + +------------------------------------------------------------------- +Tue Nov 29 16:17:02 UTC 2022 - Martin Winter + +- update to version 1.7.0~git20221129.9de37af +- feat: user configurable shortcuts + * replace 0460-shortcut-configuration.patch by updated + 0686-shortcut-configuration.patch + * add 9686-cmake-add-shortcut-manager.patch + add new files to CMakeLists.txt +- fix: background drawing when switching page size + * update 0551-common-background-drawing.patch +- fix: mirror pixmap size + * update 0569-scale-mirror-pixmap.patch +- remove upstreamed patches + * remove upstreamed 0604-qt-5.12-compatibility.patch + * remove upstreamed 0629-bug-ruler.patch + * remove upstreamed 0633-improve-displaymanager.patch + * remove upstreamed 0637-fix-pdf-background-export.patch + * remove upstreamed 0641-fix-font-handling.patch + * remove upstreamed 0649-fix-pdf-export-scaling.patch +- chore: replace qmake by cmake build system + * remove 0651-chore-reorganize-linux-build.patch + * add 0698-add-cmake-build-system.patch +- fix: page size for PDF export + * add 0677-pdf-export-page-size.patch +- disable software update from openboard web page + * add 9117-disable-software-update.patch + +------------------------------------------------------------------- +Tue Sep 20 09:23:13 UTC 2022 - Martin Winter + +- fix file list in spec file + - do not include /usr/share/mime/packages directory owned by + filesystem + +------------------------------------------------------------------- +Wed Sep 14 06:24:01 UTC 2022 - Martin Winter + +- update to version 1.7.0~git20220914.47a96e1 +- feat: user configurable shortcuts + * add 0460-shortcut-configuration.patch +- fix: boxing in single screen mode + * update 0633-improve-displaymanager.patch +- fix: PDF background export + * update 0637-fix-pdf-background-export.patch +- fix: font handling + * update 0641-fix-font-handling.patch +- fix: PDF export scaling + * add 0649-fix-pdf-export-scaling.patch +- refactor: Linux build and installation + * add 0651-chore-reorganize-linux-build.patch + * replaces 0001-Rewrite-libs.pri.patch + * replaces 0002-Install-to-correct-directories-on-linux.patch + * replaces 0003-podcast.pri-port-to-pkgconfig.patch + * replaces 0004-Use-QStandardPaths-to-locate-resources.patch + * replaces 0005-Add-svg-icon.patch + * replaces 0006-pro-Remove-UB_THIRDPARTY_INTERACTIVE.patch + * replaces 0007-Linux-Only-use-onboard-by-default-if-it-s-installed.patch + * replaces 0008-install-fonts.patch + * add mimespec for .ubz files + * also improve handling of onboard on-screen keyboard +- refactor: clean spec file + +------------------------------------------------------------------- +Fri Jun 24 09:56:26 UTC 2022 - Martin Winter + +- minor changes in spec file + +------------------------------------------------------------------- +Fri Jun 24 09:13:52 UTC 2022 - Martin Winter + +- fix several issues + - add 0008-install-fonts.patch + - add 0637-fix-pdf-background-export.patch + - add 0641-fix-font-handling.patch + +------------------------------------------------------------------- +Sun Jun 19 13:03:26 UTC 2022 - Martin Winter + +- update to 1.7.0~git47a96e1 + - use development branch to enable build for Tumbleweed + (switch from QWebKit to QWebEngine) +- add patches fixing known issues according to existing upstream PRs + - 0551-common-background-drawing.patch + - 0569-scale-mirror-pixmap.patch + - 0604-qt-5.12-compatibility.patch + - 0629-bug-ruler.patch + - 0633-improve-displaymanager.patch +- remove unused build dependencies + +------------------------------------------------------------------- +Mon Jun 13 09:21:50 UTC 2022 - Martin Winter + +- Update to 1.6.3 + - see https://github.com/OpenBoard-org/OpenBoard/releases/tag/v1.6.3 + +------------------------------------------------------------------- +Mon Jun 6 09:38:26 UTC 2022 - Martin Winter + +- Update to 1.6.2 + - see https://github.com/OpenBoard-org/OpenBoard/releases/tag/v1.6.2 + - adapt 0001-Rewrite-libs.pri.patch + - adapt 0002-Install-to-correct-directories-on-linux.patch + - drop 0573-compile-with-poppler-22.03.patch (upstreamed) + +------------------------------------------------------------------- +Tue Mar 15 17:28:47 UTC 2022 - Martin Winter + +- add 0573-compile-with-poppler-22.03.patch + +------------------------------------------------------------------- +Tue Dec 28 10:31:51 UTC 2021 - Martin Winter + +- update to OpenBoard 1.6.1 + - adapt patches + +------------------------------------------------------------------- +Mon Feb 8 18:36:17 UTC 2021 - Adam Majer + +- Compile translations so they are installed (bsc#1181857) + +------------------------------------------------------------------- +Mon Nov 23 12:20:56 UTC 2020 - Adam Majer + +- 0001-Rewrite-libs.pri.patch: + + update patch and BR on now weirdly named quazip - pkgconfig(quazip1-qt5) + + continue to function with with pkgconfig(quazip) in Leap 15.2 +- Remove BR on libx264-devel and fdk-aac-devel as these are no longer + available in Factory + +------------------------------------------------------------------- +Sat May 23 15:58:55 UTC 2020 - Frank Schütte + +- fixed building with patches from https://github.com/flathub/ch.openboard.OpenBoard + +------------------------------------------------------------------- +Fri May 22 11:48:28 UTC 2020 - Frank Schütte + +- update to 1.5.4 + +------------------------------------------------------------------- +Mon Jun 10 17:00:17 UTC 2019 - Frank Schütte + +- remove openssl patch + +------------------------------------------------------------------- +Mon Jun 10 16:49:24 UTC 2019 - Frank Schütte + +- Update to OpenBoard 1.5.3 +- updated OpenBoard-no-Third-Party patch + +------------------------------------------------------------------- +Fri Jan 25 11:44:14 UTC 2019 - F.Schuette@t-online.de + +- Update to OpenBoard 1.5.2 + +------------------------------------------------------------------- +Tue Sep 11 21:19:36 UTC 2018 - F.Schuette@t-online.de + +- Update to OpenBoard 1.4.1 + * Add patch for ffmpeg includes. + +------------------------------------------------------------------- +Wed Jan 10 19:01:57 UTC 2018 - antoine.belvire@opensuse.org + +- Add compatibility with OpenSSL 1.1 API: + * OpenBoard-1.3.6-add-openssl-1.1-compat.patch. + * Authorize build with OpenSSL 1.1 by removing version constraint + on "BuildRequires". +- Merge quazip_libname.patch with OpenBoard-no_Third-Party.patch. + +------------------------------------------------------------------- +Tue Jan 9 22:17:13 UTC 2018 - antoine.belvire@opensuse.org + +- Update to version 1.3.6: + * Fix several issues relating to copy-pasting and + cut-and-pasting elements from one page or document to another. + * Fix an issue where pen strokes that had been erased with the + eraser would reappear after saving and loading. + * Fix an issue where duplicating a pen stroke that had been + moved could cause the new stroke to be placed in the wrong + position. + * Fix an issue where strokes could be badly placed after using + the "undo" and "redo" functions. + * Fix an issue where compass strokes were not saved (when + making several strokes, only the first one was saved). + * Fix an issue where pages could be truncated when exporting to + PDF. + * Fix an issue where locked items could be moved when part of a + multiple selection + * (Document mode) Fix document selection after deleting a + trashed document. + * Tweak the background grid color for the dark background. + * The mask tool can now be resized non-proportionately. + * Re-implemented automatic update checking, which will appear + to users when the next version is released. +- Changes from version 1.3.5: + * Fix detection of "cloned" multi-monitor setups to avoid + multi-screen mode being activated in this configuration. + [Note: some problems remain with multi-monitor setups on some + Linux versions.]. + * Text items: Text can no longer be selected or edited if the + text item is marked as non-editable through its menu. + * Text items: On page load, text items no longer take keyboard + focus. + * Library pane: Fix moving of items (upon moving an item to a + folder, the item would not immediately disappear from its + current location). + * Library pane: Fix nested folder issue in breadcrumbs trail (two + folders that were at the same path and whose names started with + the same characters were considered by the breadcrumbs trail to + be nested). + * Document view: Fix folder names not being saved after renaming + them. + * Fix audio item saving (v1.3.3 bug): Documents containing an + audio item were saved incorrectly, making the audio unplayable + upon page load. + * Desktop mode: Eraser and marker preview circles now disappear + when the cursor hovers over the left or right-hand toolbars, as + in board mode. +- Drop OpenBoard-fix-call-of-overloaded-abs-is-ambiguous.patch + (fixed upstream). +- Fix some rpmlint warnings. + +------------------------------------------------------------------- +Tue Jan 9 20:19:28 UTC 2018 - antoine.belvire@opensuse.org + +- Fix build: + * Change OpenBoard-XPDFRenderer_with_poppler.patch to make it + work with libpoppler >= 0.55. + * Force use of OpenSSL 1.0 as build requirement instead of 1.1. + * Use "libquazip-qt5-devel" instead of "quazip-qt5-devel" in + build requirements to fix build on Leap. + +------------------------------------------------------------------- +Fri Jun 30 13:33:43 UTC 2017 - adam.majer@suse.de + +- quazip_libname.patch: Use quazip-qt5 instead of quazip as mixing + Qt versions is bad. Qt5 quazip also uses a different library + name. (boo#1042040) +- add missing libpulse BuildRequires + +------------------------------------------------------------------- +Mon Feb 13 19:40:30 UTC 2017 - mrueckert@suse.de + +- update to 1.3.4 + - OS X: fixed desktop drop shadow bug: when switching from + desktop mode to board mode and back, shadows were drawn behind + annotations; these persisted even if the annotation was erased + - Windows: Updated bundled Visual C++ runtime library; fixed + installer so that the library installation would be silent (no + more dialog box appearing) + - Linux: fixed detection of "cloned" multi-monitor setups to + avoid multi-screen mode being activated in this configuration. + [Note: some problems remain with multi-monitor setups on some + Linux versions; see Known Issues] + - Text items: text can no longer be selected or edited if the + text item is marked as non-editable through its menu + - Text items: on page load, text items no longer take keyboard + focus + - Library pane: fixed moving of items (upon moving an item to a + folder, the item would not immediately disappear from its + current location) + - Library pane: fixed nested folder issue in breadcrumbs trail + (two folders that were at the same path and whose names started + with the same characters were considered by the breadcrumbs + trail to be nested) + - Document view: fixed folder names not being saved after + renaming them + - Fixed audio item saving (v1.3.3 bug): documents containing an + audio item were saved incorrectly, making the audio unplayable + upon page load + - Desktop mode: eraser and marker preview circles now disappear + when the cursor hovers over the left or right-hand toolbars, as + in board mode +- refreshed OpenBoard-XPDFRenderer_with_poppler.patch to apply + cleanly again diff --git a/OpenBoard.spec b/OpenBoard.spec new file mode 100644 index 0000000..cd40ba0 --- /dev/null +++ b/OpenBoard.spec @@ -0,0 +1,96 @@ +# +# spec file for package OpenBoard +# +# Copyright (c) 2026 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define namelc openboard +%define fqname ch.%{namelc}.%{name} +Name: OpenBoard +Version: 1.7.5 +Release: 0 +Summary: Interactive whiteboard for schools and universities +License: GPL-3.0-or-later +Group: Amusements/Teaching/Other +URL: https://openboard.ch +Source0: https://github.com/OpenBoard-org/OpenBoard/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +# https://github.com/OpenBoard-org/OpenBoard/pull/955 +Patch955: 0955-shortcut-configuration.patch +# https://github.com/OpenBoard-org/OpenBoard/pull/1347 +Patch1347: 1347-chore-appdata.patch +# https://github.com/letsfindaway/OpenBoard/pull/117 +Patch9117: 9117-disable-software-update.patch +BuildRequires: desktop-file-utils +BuildRequires: fdupes +BuildRequires: pkgconfig +BuildRequires: cmake(Qt6Concurrent) +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6LinguistTools) +BuildRequires: cmake(Qt6Multimedia) +BuildRequires: cmake(Qt6MultimediaWidgets) +BuildRequires: cmake(Qt6Network) +BuildRequires: cmake(Qt6PrintSupport) +BuildRequires: cmake(Qt6Svg) +BuildRequires: cmake(Qt6UiTools) +BuildRequires: cmake(Qt6WebEngineWidgets) +BuildRequires: cmake(Qt6Xml) +BuildRequires: pkgconfig(libavdevice) +BuildRequires: pkgconfig(openssl) +BuildRequires: pkgconfig(poppler) +BuildRequires: pkgconfig(quazip1-qt6) +Recommends: onboard +%if 0%{?suse_version} < 1600 +BuildRequires: gcc10-c++ +%endif + +%description +OpenBoard is an open source cross-platform interactive white board +application designed primarily for use in schools. It was +originally forked from Open-Sankoré, which was itself based on +Uniboard. + +%prep +%autosetup -p1 -n %{name}-%{version} + +%build +%if 0%{?suse_version} < 1600 +export CXX=%{_bindir}/g++-10 +%cmake +%else +%cmake -DCMAKE_CXX_STANDARD=20 +%endif +%cmake_build + +%install +%cmake_install +%fdupes -s %{buildroot} + +%files +%license LICENSE +%doc COPYRIGHT +%dir %{_datadir}/icons/hicolor +%dir %{_datadir}/icons/hicolor/scalable +%dir %{_datadir}/icons/hicolor/scalable/apps +%dir %{_datadir}/icons/hicolor/scalable/mimetypes +%{_datadir}/applications/%{fqname}.desktop +%{_datadir}/icons/hicolor/scalable +%{_datadir}/mime/packages/* +%{_datadir}/metainfo/%{fqname}.metainfo.xml +%{_datadir}/%{namelc} +%{_bindir}/%{namelc} +%config %{_sysconfdir}/%{namelc} + +%changelog -- 2.51.1 From 0f8e78266f4e4fb8232ed8526d489de0a85979df2f48203c5fc139be1dfb1382 Mon Sep 17 00:00:00 2001 From: Martin Winter Date: Tue, 3 Feb 2026 13:12:42 +0000 Subject: [PATCH 4/4] mention new patch in changelog OBS-URL: https://build.opensuse.org/package/show/Education/OpenBoard?expand=0&rev=50 --- OpenBoard.changes | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OpenBoard.changes b/OpenBoard.changes index 7980d07..1323ecf 100644 --- a/OpenBoard.changes +++ b/OpenBoard.changes @@ -2,6 +2,8 @@ Tue Feb 3 11:11:42 UTC 2026 - Martin Winter - add AppData in metainfo.xml +- add patch 1347-chore-appdata.patch + * add metainfo.xml and adjust cmake ------------------------------------------------------------------- Tue Feb 3 10:07:35 UTC 2026 - Martin Winter -- 2.51.1