Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package panini for openSUSE:Factory checked in at 2026-07-17 01:44:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/panini (Old) and /work/SRC/openSUSE:Factory/.panini.new.24530 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "panini" Fri Jul 17 01:44:52 2026 rev:5 rq:1366214 version:0.75.0 Changes: -------- --- /work/SRC/openSUSE:Factory/panini/panini.changes 2023-12-20 21:03:46.493781610 +0100 +++ /work/SRC/openSUSE:Factory/.panini.new.24530/panini.changes 2026-07-17 01:45:29.229308138 +0200 @@ -1,0 +2,7 @@ +Thu Jul 16 15:01:25 UTC 2026 - Michael Vetter <[email protected]> + +- Update to 0.75.0: + * Port to Qt6 (#18) + * Easily navigate to the next image in the directory via page up and page down keys + +------------------------------------------------------------------- Old: ---- v0.74.0.tar.gz New: ---- 0.75.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ panini.spec ++++++ --- /var/tmp/diff_new_pack.pa3OLr/_old 2026-07-17 01:45:29.949332432 +0200 +++ /var/tmp/diff_new_pack.pa3OLr/_new 2026-07-17 01:45:29.953332567 +0200 @@ -1,7 +1,7 @@ # # spec file for package panini # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,17 +17,20 @@ Name: panini -Version: 0.74.0 +Version: 0.75.0 Release: 0 Summary: A tool for creating perspective views from panoramic and wide angle images License: GPL-3.0-only Group: Productivity/Graphics/Viewers URL: https://github.com/lazarus-pkgs/panini -Source: https://github.com/lazarus-pkgs/panini/archive/v%{version}.tar.gz +Source: https://github.com/lazarus-pkgs/panini/archive/%{version}.tar.gz BuildRequires: pkgconfig -BuildRequires: pkgconfig(Qt5Core) -BuildRequires: pkgconfig(Qt5Gui) -BuildRequires: pkgconfig(Qt5OpenGL) +BuildRequires: qt6-macros +BuildRequires: pkgconfig(Qt6Core) +BuildRequires: pkgconfig(Qt6Gui) +BuildRequires: pkgconfig(Qt6OpenGL) +BuildRequires: pkgconfig(Qt6OpenGLWidgets) +BuildRequires: pkgconfig(Qt6Widgets) BuildRequires: pkgconfig(glu) BuildRequires: pkgconfig(zlib) # Disable on Arm, since build fails @@ -40,12 +43,11 @@ %setup -q %build -# use qmake macro is present (fedora) -%{?qmake_qt5}%{?!qmake_qt5:qmake-qt5} PREFIX=%{buildroot}%{_prefix}/ -make %{?_smp_mflags} +%qmake6 PREFIX=%{_prefix} +%qmake6_build %install -%make_install +%qmake6_install %files %license LICENSE ++++++ v0.74.0.tar.gz -> 0.75.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/.github/FUNDING.yml new/panini-0.75.0/.github/FUNDING.yml --- old/panini-0.74.0/.github/FUNDING.yml 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/.github/FUNDING.yml 2026-07-16 16:51:16.000000000 +0200 @@ -1,7 +1,7 @@ # These are supported funding model platforms github: jubalh -patreon: jubalh +patreon: #jubalh open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/MSVS-project/panini.sln new/panini-0.75.0/MSVS-project/panini.sln --- old/panini-0.74.0/MSVS-project/panini.sln 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/MSVS-project/panini.sln 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual C++ Express 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pvQt_1", "pvQt_1\pvQt_1.vcproj", "{A70594CC-2C31-4F76-AC81-DB3B0475F57E}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A70594CC-2C31-4F76-AC81-DB3B0475F57E}.Debug|Win32.ActiveCfg = Debug|Win32 - {A70594CC-2C31-4F76-AC81-DB3B0475F57E}.Debug|Win32.Build.0 = Debug|Win32 - {A70594CC-2C31-4F76-AC81-DB3B0475F57E}.Release|Win32.ActiveCfg = Release|Win32 - {A70594CC-2C31-4F76-AC81-DB3B0475F57E}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/MSVS-project/pvQt_1/pvQt_1.vcproj new/panini-0.75.0/MSVS-project/pvQt_1/pvQt_1.vcproj --- old/panini-0.74.0/MSVS-project/pvQt_1/pvQt_1.vcproj 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/MSVS-project/pvQt_1/pvQt_1.vcproj 1970-01-01 01:00:00.000000000 +0100 @@ -1,255 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9.00" - Name="panini" - ProjectGUID="{A70594CC-2C31-4F76-AC81-DB3B0475F57E}" - Keyword="MakeFileProj" - TargetFrameworkVersion="196613" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="..\bin" - IntermediateDirectory="..\build" - ConfigurationType="0" - > - <Tool - Name="VCNMakeTool" - BuildCommandLine="cd ..\.. 
make debug" - ReBuildCommandLine="cd ..\.. 
qmake panini.pro 
make clean 
make debug 

" - CleanCommandLine="cd ..\.. 
make clean" - Output="" - PreprocessorDefinitions="WIN32;_DEBUG" - IncludeSearchPath="C:\Qt\4.4.1\include;C:\MinGW\include;C:\MinGW\GnuWin32\include" - ForcedIncludes="" - AssemblySearchPath="" - ForcedUsingAssemblies="" - CompileAsManaged="" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="..\bin" - IntermediateDirectory="..\build" - ConfigurationType="0" - > - <Tool - Name="VCNMakeTool" - BuildCommandLine="cd ..\.. 
make release" - ReBuildCommandLine="cd ..\.. 
qmake panini.pro 
make clean 
make release 
" - CleanCommandLine="cd ..\.. 
make clean" - Output="" - PreprocessorDefinitions="WIN32;NDEBUG" - IncludeSearchPath="C:\Qt\4.4.1\include;C:\MinGW\include;C:\MinGW\GnuWin32\include" - ForcedIncludes="" - AssemblySearchPath="" - ForcedUsingAssemblies="" - CompileAsManaged="" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath="..\..\src\About.cpp" - > - </File> - <File - RelativePath="..\..\src\GLwindow.cpp" - > - </File> - <File - RelativePath="..\..\src\main.cpp" - > - </File> - <File - RelativePath="..\..\src\MainWindow.cpp" - > - </File> - <File - RelativePath="..\..\src\panocylinder.cpp" - > - </File> - <File - RelativePath="..\..\src\panosphere.cpp" - > - </File> - <File - RelativePath="..\..\src\panosurface.cpp" - > - </File> - <File - RelativePath="..\..\src\pictureTypes.cpp" - > - </File> - <File - RelativePath="..\..\src\picTypeDialog.cpp" - > - </File> - <File - RelativePath="..\..\src\pvQt_QTVR.cpp" - > - </File> - <File - RelativePath="..\..\src\pvQtPic.cpp" - > - </File> - <File - RelativePath="..\..\src\pvQtView.cpp" - > - </File> - <File - RelativePath="..\..\src\TurnDialog.cpp" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc;xsd" - UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" - > - <File - RelativePath="..\..\src\About.h" - > - </File> - <File - RelativePath="..\..\src\GLwindow.h" - > - </File> - <File - RelativePath="..\..\src\MainWindow.h" - > - </File> - <File - RelativePath="..\..\src\panocylinder.h" - > - </File> - <File - RelativePath="..\..\src\panosphere.h" - > - </File> - <File - RelativePath="..\..\src\panosurface.h" - > - </File> - <File - RelativePath="..\..\src\picTypeDialog.h" - > - </File> - <File - RelativePath="..\..\src\pvQt_QTVR.h" - > - </File> - <File - RelativePath="..\..\src\pvQtMouseModes.h" - > - </File> - <File - RelativePath="..\..\src\pvQtPic.h" - > - </File> - <File - RelativePath="..\..\build\PvQtVersion.h" - > - </File> - <File - RelativePath="..\..\src\pvQtView.h" - > - </File> - <File - RelativePath="..\..\SVNnoVersion.h" - > - </File> - <File - RelativePath="..\..\src\TurnDialog.h" - > - </File> - <File - RelativePath="..\..\build\ui_About.h" - > - </File> - <File - RelativePath="..\..\build\ui_mainwindow.h" - > - </File> - <File - RelativePath="..\..\build\ui_picTypeDialog.h" - > - </File> - <File - RelativePath="..\..\build\ui_ShowText.h" - > - </File> - <File - RelativePath="..\..\build\ui_TurnDialog.h" - > - </File> - <File - RelativePath="..\..\Version0.h" - > - </File> - <File - RelativePath="..\..\Version1.h" - > - </File> - </Filter> - <Filter - Name="Resource Files" - Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" - UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" - > - <File - RelativePath="..\..\ui\About.ui" - > - </File> - <File - RelativePath="..\..\ui\mainwindow.ui" - > - </File> - <File - RelativePath="..\..\ui\picTypeDialog.ui" - > - </File> - <File - RelativePath="..\..\ui\ShowText.ui" - > - </File> - <File - RelativePath="..\..\ui\TurnDialog.ui" - > - </File> - </Filter> - <File - RelativePath="..\..\panini-0.62-release.txt" - > - </File> - <File - RelativePath="..\..\panini-build.txt" - > - </File> - <File - RelativePath="..\..\panini-usage.txt" - > - </File> - <File - RelativePath="..\..\panini.pro" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/NEWS new/panini-0.75.0/NEWS --- old/panini-0.74.0/NEWS 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/NEWS 2026-07-16 16:51:16.000000000 +0200 @@ -1,3 +1,11 @@ +# Panini 0.75.0 Release Notes 16 July 2026 + +This is a Linux only release. + +Changes: +* Port to Qt6 +* Easily navigate to the next image in the directory via page up and page down keys + # Panini 0.74.0 Release Notes 20 December 2023 This is a Linux only release. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/README.md new/panini-0.75.0/README.md --- old/panini-0.74.0/README.md 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/README.md 2026-07-16 16:51:16.000000000 +0200 @@ -4,24 +4,40 @@ ## Installation See [INSTALL](INSTALL.md). + ## Dependencies -* Qt5 +* Qt6 (specifically `Core`, `Gui`, `Widgets`, `OpenGL`, and `OpenGLWidgets`) * zlib ## Get source code -``` +```bash git clone https://github.com/lazarus-pkgs/panini cd panini ``` ## Compile -``` -qmake #qmake-qt5 on some systems +```bash +qmake6 panini.pro make ./panini ``` Also see: [BUILD](BUILD.md). + +## Troubleshooting / Wayland Compatibility + +If you are running on a Wayland-based desktop session and encounter dialog rendering or window management issues with Qt6, you can force the application to run via XWayland (X11 compatibility layer) by setting the `QT_QPA_PLATFORM` environment variable: + +```bash +QT_QPA_PLATFORM=xcb ./panini +``` + +## Keyboard Shortcuts + +Panini supports the following standard keyboard shortcuts for file browsing within the same folder: + +* **Page Down**: Go to the **next** image file in the current directory. +* **Page Up**: Go to the **previous** image file in the current directory. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/panini.pro new/panini-0.75.0/panini.pro --- old/panini-0.74.0/panini.pro 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/panini.pro 2026-07-16 16:51:16.000000000 +0200 @@ -1,13 +1,13 @@ ## qmake project for panini ## TEMPLATE = app -VERSION = 0.73.0 +VERSION = 0.75.0 TARGET = panini CONFIG += debug_and_release -QT = gui core opengl +QT = gui core opengl openglwidgets widgets LIBS += -lz -lGLU -# We want Qt5 now -lessThan(QT_MAJOR_VERSION, 5): error("requires Qt 5") +# We want Qt6 now +lessThan(QT_MAJOR_VERSION, 6): error("requires Qt 6") ## Directories ## OBJECTS_DIR = build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/src/GLwindow.cpp new/panini-0.75.0/src/GLwindow.cpp --- old/panini-0.74.0/src/GLwindow.cpp 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/src/GLwindow.cpp 2026-07-16 16:51:16.000000000 +0200 @@ -30,6 +30,7 @@ #include <QtCore> #include <QFileDialog> +#include <QDir> #include "GLwindow.h" #include "pvQtView.h" #include "pvQt_QTVR.h" @@ -165,7 +166,7 @@ if( n > 1 ){ ok = loadTypedFiles( "cube", paths ); } else { // add or replace one cube face - QPoint pnt = event->pos(); + QPoint pnt = event->position().toPoint(); pvQtPic::PicFace pf = glview->pickFace( pnt ); ok = pvpic->setFaceImage( pf, paths[0] ); if( ok ){ @@ -249,7 +250,7 @@ msg += tr("Video: ") + glview->OpenGLHardware() + QString("\n"); msg += tr("Limits: ") + glview->OpenGLLimits() + QString("\n"); aboutbox->setInfo( msg ); - aboutbox->show(); + aboutbox->exec(); } // relay window resize to the GL widget @@ -929,3 +930,47 @@ } } } + +void GLwindow::loadNextPicture() { + navigateDirectory(1); +} + +void GLwindow::loadPreviousPicture() { + navigateDirectory(-1); +} + +void GLwindow::navigateDirectory(int direction) { + if (loaddir.isEmpty() || loadname.isEmpty()) { + return; + } + + QDir dir(loaddir); + QStringList filters; + filters << "*.jpg" << "*.jpeg" << "*.png" << "*.tif" << "*.tiff"; + dir.setNameFilters(filters); + dir.setFilter(QDir::Files | QDir::NoSymLinks); + dir.setSorting(QDir::Name | QDir::IgnoreCase); + + QStringList files = dir.entryList(); + if (files.isEmpty()) { + return; + } + + int index = files.indexOf(loadname); + if (index == -1) { + // Current file not found in filters (e.g., if it's a .mov) + dir.setNameFilters(QStringList()); + files = dir.entryList(); + index = files.indexOf(loadname); + } + + if (index == -1) { + return; + } + + int nextIndex = (index + direction + files.count()) % files.count(); + QString nextFile = files.at(nextIndex); + QString absolutePath = dir.absoluteFilePath(nextFile); + + loadPictureFiles(QStringList(absolutePath)); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/src/GLwindow.h new/panini-0.75.0/src/GLwindow.h --- old/panini-0.74.0/src/GLwindow.h 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/src/GLwindow.h 2026-07-16 16:51:16.000000000 +0200 @@ -49,6 +49,8 @@ void set_surface( int surf ); void turn90( int t ); void setCubeLimit( int ); + void loadNextPicture(); + void loadPreviousPicture(); // from picType dialog... void picTypeChanged( int t ); void hFovChanged( double h ); @@ -66,6 +68,7 @@ bool QTVR_file( QString name ); bool choosePictureFiles( const char * picTypeName = 0 ); bool loadPictureFiles( QStringList names ); + void navigateDirectory(int direction); const QStringList picTypeDescrs(); const char * askPicType( QStringList files, const char * ptyp = 0 ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/src/MainWindow.cpp new/panini-0.75.0/src/MainWindow.cpp --- old/panini-0.74.0/src/MainWindow.cpp 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/src/MainWindow.cpp 2026-07-16 16:51:16.000000000 +0200 @@ -17,7 +17,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include <QtGui> +#include <QtWidgets> #include <QErrorMessage> #include <QSettings> #include <QMessageBox> @@ -181,13 +181,25 @@ ev->accept(); } +void MainWindow::keyPressEvent( QKeyEvent * ev ){ + if( ev->key() == Qt::Key_PageDown ){ + glwindow->loadNextPicture(); + ev->accept(); + return; + } else if( ev->key() == Qt::Key_PageUp ){ + glwindow->loadPreviousPicture(); + ev->accept(); + return; + } + QMainWindow::keyPressEvent( ev ); +} + void MainWindow::showStatus( QString msg ){ statusBar()->showMessage(msg); } void MainWindow::verify( int i ){ - QString s; - showStatus( s.sprintf("verify: %d", i) ); + showStatus( QString::asprintf("verify: %d", i) ); } void MainWindow::showTitle( QString msg ){ @@ -316,7 +328,7 @@ } void MainWindow::on_actionMouse_modes_triggered(){ - pmm->show(); + pmm->exec(); } /* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/src/MainWindow.h new/panini-0.75.0/src/MainWindow.h --- old/panini-0.74.0/src/MainWindow.h 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/src/MainWindow.h 2026-07-16 16:51:16.000000000 +0200 @@ -83,6 +83,7 @@ protected: virtual void resizeEvent( QResizeEvent * ev ); virtual void closeEvent( QCloseEvent * ev ); + virtual void keyPressEvent( QKeyEvent * ev ) override; QErrorMessage * errorMsgHandler; private: GLwindow * glwindow; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/src/pvQtPic.h new/panini-0.75.0/src/pvQtPic.h --- old/panini-0.74.0/src/pvQtPic.h 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/src/pvQtPic.h 2026-07-16 16:51:16.000000000 +0200 @@ -74,7 +74,7 @@ #ifndef __PVQTPIC_H__ #define __PVQTPIC_H__ -#include <QtGui> +#include <QtWidgets> #define PVQT_PIC_FACE_FORMAT QImage::Format_ARGB32 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/src/pvQtView.cpp new/panini-0.75.0/src/pvQtView.cpp --- old/panini-0.74.0/src/pvQtView.cpp 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/src/pvQtView.cpp 2026-07-16 16:51:16.000000000 +0200 @@ -20,7 +20,9 @@ #include "pvQtView.h" -#include <QtOpenGL/QtOpenGL> +#include <QOpenGLContext> +#include <QSurfaceFormat> +#include <QOpenGLFramebufferObject> #ifdef __APPLE__ #include "glext.h" #include "glu.h" @@ -28,7 +30,6 @@ #include <GL/glext.h> #include <GL/glu.h> #endif -#include <QGLFramebufferObject> #include <cmath> @@ -117,9 +118,11 @@ * proper cube map display when the default format is used. */ pvQtView::pvQtView(QWidget *parent) - : QGLWidget( QGLFormat( QGL::AlphaChannel ), - parent) + : QOpenGLWidget(parent) { + QSurfaceFormat format; + format.setAlphaBufferSize(8); + setFormat(format); // set up mouse control timer mTimer.setInterval( 50 ); mTimer.setSingleShot( true ); @@ -185,13 +188,15 @@ The minimum feasible OpenGL version is 1.2 */ - unsigned int vf = QGLFormat::openGLVersionFlags(); - if( vf & QGLFormat::OpenGL_Version_1_2 ){ - if( vf & QGLFormat::OpenGL_Version_1_3 ){ + QSurfaceFormat contextFormat = QOpenGLContext::currentContext()->format(); + int major = contextFormat.majorVersion(); + int minor = contextFormat.minorVersion(); + if( major > 1 || (major == 1 && minor >= 2) ){ + if( major > 1 || minor >= 3 ){ cubeMap = true; - if( vf & QGLFormat::OpenGL_Version_1_5 ){ + if( major > 1 || minor >= 5 ){ vertBuf = true; - if( vf & QGLFormat::OpenGL_Version_2_0 ) { + if( major >= 2 ) { texPwr2 = false; } } @@ -332,7 +337,7 @@ setFOV( normalizeAngle( izoom, 1, minFOV, maxFOV ) ); } } - } else if( mb == Qt::LeftButton + Qt::RightButton ){ + } else if( mb == (Qt::LeftButton | Qt::RightButton) ){ if( mk & Qt::ShiftModifier ){ // hFov, vFov if( !( mk & Qt::AltModifier ) ) xtexmag -= 0.00225 * dx; @@ -351,14 +356,14 @@ } } - updateGL(); + update(); showview(); mTimer.start(); } // zoom on scroll wheel void pvQtView::wheelEvent(QWheelEvent *event){ - int d = event->delta(); + int d = event->angleDelta().y(); if( d == 0 ){ event->ignore(); return; @@ -436,7 +441,7 @@ eyex -= 0.01 * dp; } clipEyePosition(); - updateGL(); + update(); showview(); } @@ -448,7 +453,7 @@ eyey -= 0.01 * dp; } clipEyePosition(); - updateGL(); + update(); showview(); } @@ -496,7 +501,7 @@ double a = normalizeAngle( idangl, stp, 0, MAXDANGLE ); setDist( tan( RAD( a )) ); } - updateGL(); + update(); showview(); } @@ -505,13 +510,13 @@ **/ void pvQtView::step_hfov( int dp ){ framex = KLIP( framex + 10 * fwf * dp, -1, 1 ); - updateGL(); + update(); showview(); } void pvQtView::step_vfov( int dp ){ framey = KLIP( framey + 10 * fhf * dp, -1, 1 ); - updateGL(); + update(); showview(); } @@ -530,7 +535,7 @@ curr_ipt = i; makeSphere( theScreen ); // set & display proj setTexMag( xtexmag, ytexmag ); // display fovs - updateGL(); + update(); } } @@ -540,14 +545,14 @@ setPicType( picType ); initView(); makeSphere( theScreen ); - updateGL(); + update(); showview(); } void pvQtView::home_view(){ panAngle = tiltAngle = spinAngle = 0; ipan = itilt = ispin = 0; - updateGL(); + update(); showview(); } @@ -555,7 +560,7 @@ eyex = eyey = 0; fcompx = fcompy = 0; framex = framey = 0; // also reset framing shifts - updateGL(); + update(); showview(); } @@ -563,7 +568,7 @@ void pvQtView::super_fish(){ // max angular view setDist( 1.07 ); setZoom( int(16 * maxFOV) ); - updateGL(); + update(); showview(); } @@ -572,7 +577,7 @@ if( v == 1 ) d = 1; else if( v == 2 ) d = MAXDIST; setDist( d ); - updateGL(); + update(); showview(); } @@ -584,7 +589,7 @@ turnRoll = ( roll < -45 ? -45 : roll > 45 ? 45 : roll ); turnPitch = ( pitch < -90 ? -90 : pitch > 90 ? 90 : pitch ); turnYaw = ( yaw < -180 ? -180 : yaw > 180 ? 180 : yaw ); - updateGL(); + update(); showview(); emit reportTurn( turn90, turnRoll, turnPitch, turnYaw ); } @@ -595,10 +600,10 @@ void pvQtView::showview(){ QString s; if( recenter ){ - s.sprintf("Y%.1f P%.1f R%.1f V%.1f eD%.2f eA(%.1f, %.1f) fS(%.2f, %.2f)", + s = QString::asprintf("Y%.1f P%.1f R%.1f V%.1f eD%.2f eA(%.1f, %.1f) fS(%.2f, %.2f)", panAngle, tiltAngle, spinAngle, vFOV, eyeDistance, -hangle, -vangle, framex, framey); } else { - s.sprintf("Y%.1f P%.1f R%.1f V%.1f eD%.2f eS(%.2f, %.2f) fS(%.2f, %.2f)", + s = QString::asprintf("Y%.1f P%.1f R%.1f V%.1f eD%.2f eS(%.2f, %.2f) fS(%.2f, %.2f)", panAngle, tiltAngle, spinAngle, vFOV, eyeDistance, eyex, eyey, framex, framey); } emit reportView( s ); @@ -721,7 +726,7 @@ panAngle = normalizeAngle(angle, panstep, minpan, maxpan); if (angle != ipan) { ipan = angle; - updateGL(); + update(); showview(); } } @@ -731,7 +736,7 @@ tiltAngle = normalizeAngle(angle, tiltstep, mintilt, maxtilt); if (angle != itilt) { itilt = angle; - updateGL(); + update(); showview(); } } @@ -741,7 +746,7 @@ spinAngle = normalizeAngle(angle, spinstep, -180, 180); if (angle != ispin) { ispin = angle; - updateGL(); + update(); showview(); } } @@ -752,7 +757,7 @@ if (angle != izoom) { izoom = angle; setFOV(a); - updateGL(); + update(); showview(); } } @@ -793,7 +798,7 @@ // abort if the OpenGL version is insufficient if( !OpenGLOK() ) return; - qglClearColor(Qt::black); + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glShadeModel(GL_SMOOTH); glEnable(GL_CULL_FACE); @@ -817,9 +822,7 @@ glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_NEAREST); // 2d maps... glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - - glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); float anisotropy = 0.0f; glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &anisotropy); @@ -1067,7 +1070,7 @@ fwf = 2.0 / width; fhf = 2.0 / height; portAR = (double)Width / (double)Height; - updateGL(); + update(); showview(); // displays settings } @@ -1186,6 +1189,7 @@ thePic->fitFaceToImage( maxdims, texPwr2 ); makeCurrent(); + glBindTexture( textgt, texname ); glPixelStorei(GL_UNPACK_ALIGNMENT, 4); // QImage row alignment if( picType == pvQtPic::cub ){ @@ -1289,6 +1293,7 @@ if( curr_pt != pvQtPic::cub ) return; makeCurrent(); + glBindTexture( textgt, texname ); glPixelStorei(GL_UNPACK_ALIGNMENT, 4); // QImage row alignment QImage * p = thePic->FaceImage( face ); if( p ){ @@ -1299,7 +1304,7 @@ delete p; } - updateGL(); + update(); showview(); } @@ -1314,11 +1319,10 @@ { bool done = false; int W = size.width(), H = size.height(); - if( ( W != Width || H != Height ) - && QGLFramebufferObject::hasOpenGLFramebufferObjects() ){ + if( ( W != Width || H != Height ) ){ makeCurrent(); // create private frame buffer - QGLFramebufferObject fbo( W, H ); + QOpenGLFramebufferObject fbo( W, H ); bool ok = fbo.isValid(); // try to render and save if( ok && fbo.bind() ){ @@ -1378,7 +1382,7 @@ } } povly = ovl; - updateGL(); + update(); return true; } @@ -1390,6 +1394,6 @@ ivangl = -itilt; eyex = eyey = eyez = 0; setDist( 0 ); - updateGL(); + update(); showview(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/src/pvQtView.h new/panini-0.75.0/src/pvQtView.h --- old/panini-0.74.0/src/pvQtView.h 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/src/pvQtView.h 2026-07-16 16:51:16.000000000 +0200 @@ -30,12 +30,12 @@ #ifndef PVQTVIEW_H #define PVQTVIEW_H -#include <QtOpenGL/QGLWidget> +#include <QOpenGLWidget> #include "pvQtPic.h" #include "panosphere.h" #include "panocylinder.h" -class pvQtView : public QGLWidget +class pvQtView : public QOpenGLWidget { Q_OBJECT public: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/panini-0.74.0/ui/About.ui new/panini-0.75.0/ui/About.ui --- old/panini-0.74.0/ui/About.ui 2023-12-20 15:31:47.000000000 +0100 +++ new/panini-0.75.0/ui/About.ui 2026-07-16 16:51:16.000000000 +0200 @@ -34,9 +34,9 @@ <property name="geometry"> <rect> <x>30</x> - <y>150</y> + <y>165</y> <width>371</width> - <height>151</height> + <height>135</height> </rect> </property> <property name="font"> @@ -79,7 +79,7 @@ <rect> <x>160</x> <y>50</y> - <width>191</width> + <width>250</width> <height>41</height> </rect> </property> @@ -131,8 +131,8 @@ <rect> <x>160</x> <y>90</y> - <width>211</width> - <height>41</height> + <width>250</width> + <height>70</height> </rect> </property> <property name="font"> @@ -144,11 +144,14 @@ </font> </property> <property name="text"> - <string><html><head/><body><p>© 2008 - 2009 Thomas Sharpless<br/>© 2017 - 2019 Michael Vetter</p></body></html></string> + <string><html><head/><body><p>© 2008 - 2009 Thomas Sharpless<br/>© 2017 - 2026 Michael Vetter</p><p><a href="https://github.com/sponsors/jubalh">Donate to Panini development</a></p></body></html></string> </property> <property name="textFormat"> <enum>Qt::RichText</enum> </property> + <property name="openExternalLinks"> + <bool>true</bool> + </property> </widget> <widget class="QLabel" name="VersionLabel"> <property name="geometry">
