Compare commits

..
4 Commits
Author SHA1 Message Date
blumiaandyyc12345 40d82e757e chore: update release info to 1.6.0 2026-08-24 10:13:27 +08:00
blumiaandyyc12345 da190a22c1 fix(CI): should use 6.11.2 for both Windows and macOS build 2026-08-24 10:13:03 +08:00
blumiaandyyc12345 2995f06d49 chore: update Windows action used Qt version
Also use git version of aqtinstall for Qt 6.11.0+ for Windows
miurahr/aqtinstall#1007
2026-08-24 10:11:33 +08:00
Tech-Tacandyyc12345 ff6a9ebfae feat: add an option to show/hide navigator view 2026-08-24 10:05:02 +08:00
11 changed files with 94 additions and 17 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
- name: Install Qt - name: Install Qt
uses: jurplel/install-qt-action@v4 uses: jurplel/install-qt-action@v4
with: with:
version: '6.10.3' version: '6.11.2'
modules: 'qtimageformats' modules: 'qtimageformats'
cache: true cache: true
- name: Install Conan and Dependencies - name: Install Conan and Dependencies
+6 -2
View File
@@ -8,7 +8,7 @@ jobs:
strategy: strategy:
matrix: matrix:
include: include:
- qt_ver: '6.10.3' - qt_ver: '6.11.2'
vs: '2022' vs: '2022'
aqt_arch: 'win64_msvc2022_64' aqt_arch: 'win64_msvc2022_64'
msvc_arch: 'x64' msvc_arch: 'x64'
@@ -24,6 +24,8 @@ jobs:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
modules: 'qtimageformats' modules: 'qtimageformats'
cache: true cache: true
# we need this until miurahr/aqtinstall#1007 ships 3.3.1 for Qt >= 6.11.0 for Windows.
aqtsource: 'aqtinstall @ git+https://github.com/miurahr/aqtinstall@16db45a70b5905ad596941b223469bc86a56901e'
- name: Build - name: Build
shell: cmd shell: cmd
run: | run: |
@@ -45,7 +47,7 @@ jobs:
strategy: strategy:
matrix: matrix:
include: include:
- qt_ver: '6.10.3' - qt_ver: '6.11.2'
vs: '2022' vs: '2022'
aqt_arch: 'win64_msvc2022_64' aqt_arch: 'win64_msvc2022_64'
msvc_arch: 'x64' msvc_arch: 'x64'
@@ -61,6 +63,8 @@ jobs:
version: ${{ matrix.qt_ver }} version: ${{ matrix.qt_ver }}
modules: 'qtimageformats' modules: 'qtimageformats'
cache: true cache: true
# we need this until miurahr/aqtinstall#1007 ships 3.3.1 for Qt >= 6.11.0 for Windows.
aqtsource: 'aqtinstall @ git+https://github.com/miurahr/aqtinstall@16db45a70b5905ad596941b223469bc86a56901e'
- name: Build - name: Build
shell: cmd shell: cmd
run: | run: |
+1 -1
View File
@@ -4,7 +4,7 @@
cmake_minimum_required(VERSION 3.16) cmake_minimum_required(VERSION 3.16)
project(pineapple-pictures VERSION 1.5.0) # don't forget to update NEWS file and AppStream metadata. project(pineapple-pictures VERSION 1.6.0) # don't forget to update NEWS file and AppStream metadata.
include(GNUInstallDirs) include(GNUInstallDirs)
include(FeatureSummary) include(FeatureSummary)
+20
View File
@@ -1,3 +1,23 @@
Version 1.6.0
~~~~~~~~~~~~~
Released: 2026-08-22
Features:
* Allow dragging window from titlebar to move window when maximized
* Add an option to show/hide bird-eye view
Bugfixes:
* Maximize the window when the image size matches the screen size
* Fix window might stuck when drag move on some ill-formed window manager
* Make titlebar respect RTL layout
Miscellaneous:
* Update translations
* Update Qt version to 6.11.2 for Windows and macOS pre-built binaries
Contributors:
Tech-Tac, Heimen Stoffels (vistaus), VenusGirl, Oğuz Ersen
Version 1.5.0 Version 1.5.0
~~~~~~~~~~~~~ ~~~~~~~~~~~~~
Released: 2026-07-04 Released: 2026-07-04
+5
View File
@@ -78,11 +78,16 @@ MainWindow::MainWindow(QWidget *parent)
// Binding graphics and navigator views signals // Binding graphics and navigator views signals
connect(ui->m_gv, &GraphicsView::navigatorViewRequired, connect(ui->m_gv, &GraphicsView::navigatorViewRequired,
this, [this](bool required, const QTransform & tf){ this, [this](bool required, const QTransform & tf){
if (Settings::instance()->showNavigatorView()){
ui->m_nav->setTransform(GraphicsView::resetScale(tf)); ui->m_nav->setTransform(GraphicsView::resetScale(tf));
ui->m_nav->fitInView(ui->m_nav->sceneRect(), Qt::KeepAspectRatio); ui->m_nav->fitInView(ui->m_nav->sceneRect(), Qt::KeepAspectRatio);
ui->m_nav->setVisible(required); ui->m_nav->setVisible(required);
ui->m_navPH->setVisible(required); ui->m_navPH->setVisible(required);
ui->m_nav->updateMainViewportRegion(); ui->m_nav->updateMainViewportRegion();
} else {
ui->m_nav->setVisible(false);
ui->m_navPH->setVisible(false);
}
}); });
connect(ui->m_gv, &GraphicsView::viewportRectChanged, connect(ui->m_gv, &GraphicsView::viewportRectChanged,
ui->m_nav, &NavigatorView::updateMainViewportRegion); ui->m_nav, &NavigatorView::updateMainViewportRegion);
+11
View File
@@ -42,6 +42,11 @@ namespace QEnumHelper
} }
} }
bool Settings::showNavigatorView() const
{
return m_qsettings->value("show_navigator_view", true).toBool();
}
bool Settings::useLightCheckerboard() const bool Settings::useLightCheckerboard() const
{ {
return m_qsettings->value("use_light_checkerboard", false).toBool(); return m_qsettings->value("use_light_checkerboard", false).toBool();
@@ -83,6 +88,12 @@ Qt::HighDpiScaleFactorRoundingPolicy Settings::hiDpiScaleFactorBehavior() const
return QEnumHelper::fromString<Qt::HighDpiScaleFactorRoundingPolicy>(result, Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); return QEnumHelper::fromString<Qt::HighDpiScaleFactorRoundingPolicy>(result, Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
} }
void Settings::setShowNavigatorView(bool on)
{
m_qsettings->setValue("show_navigator_view", on);
m_qsettings->sync();
}
void Settings::setUseLightCheckerboard(bool light) void Settings::setUseLightCheckerboard(bool light)
{ {
m_qsettings->setValue("use_light_checkerboard", light); m_qsettings->setValue("use_light_checkerboard", light);
+2
View File
@@ -25,6 +25,7 @@ public:
static Settings *instance(); static Settings *instance();
bool showNavigatorView() const;
bool useLightCheckerboard() const; bool useLightCheckerboard() const;
bool loopGallery() const; bool loopGallery() const;
bool svgTiny12Only() const; bool svgTiny12Only() const;
@@ -32,6 +33,7 @@ public:
WindowSizeBehavior initWindowSizeBehavior() const; WindowSizeBehavior initWindowSizeBehavior() const;
Qt::HighDpiScaleFactorRoundingPolicy hiDpiScaleFactorBehavior() const; Qt::HighDpiScaleFactorRoundingPolicy hiDpiScaleFactorBehavior() const;
void setShowNavigatorView(bool on);
void setUseLightCheckerboard(bool light); void setUseLightCheckerboard(bool light);
void setLoopGallery(bool on); void setLoopGallery(bool on);
void setSvgTiny12Only(bool on); void setSvgTiny12Only(bool on);
+5
View File
@@ -79,6 +79,7 @@ SettingsDialog::SettingsDialog(QWidget *parent)
setWindowFlag(Qt::WindowContextHelpButtonHint, false); setWindowFlag(Qt::WindowContextHelpButtonHint, false);
auto* settings = Settings::instance(); auto* settings = Settings::instance();
ui->m_showNavigatorView->setChecked(Settings::instance()->showNavigatorView());
ui->m_useLightCheckerboard->setChecked(settings->useLightCheckerboard()); ui->m_useLightCheckerboard->setChecked(settings->useLightCheckerboard());
ui->m_loopGallery->setChecked(settings->loopGallery()); ui->m_loopGallery->setChecked(settings->loopGallery());
ui->m_svgTiny12Only->setChecked(settings->svgTiny12Only()); ui->m_svgTiny12Only->setChecked(settings->svgTiny12Only());
@@ -100,6 +101,10 @@ SettingsDialog::SettingsDialog(QWidget *parent)
# define QT_CHECKSTATE int # define QT_CHECKSTATE int
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 7, 0) #endif // QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
connect(ui->m_showNavigatorView, &QCHECKBOX_CHECKSTATECHANGED, this, [ = ](QT_CHECKSTATE state){
Settings::instance()->setShowNavigatorView(state == Qt::Checked);
});
connect(ui->m_useLightCheckerboard, &QCHECKBOX_CHECKSTATECHANGED, this, [ = ](QT_CHECKSTATE state){ connect(ui->m_useLightCheckerboard, &QCHECKBOX_CHECKSTATECHANGED, this, [ = ](QT_CHECKSTATE state){
Settings::instance()->setUseLightCheckerboard(state == Qt::Checked); Settings::instance()->setUseLightCheckerboard(state == Qt::Checked);
}); });
+15 -8
View File
@@ -20,54 +20,61 @@
</attribute> </attribute>
<layout class="QFormLayout" name="settingsForm"> <layout class="QFormLayout" name="settingsForm">
<item row="0" column="0" colspan="2"> <item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="m_showNavigatorView">
<property name="text">
<string>Show navigation view</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="m_useLightCheckerboard"> <widget class="QCheckBox" name="m_useLightCheckerboard">
<property name="text"> <property name="text">
<string>Use light-color checkerboard</string> <string>Use light-color checkerboard</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0" colspan="2"> <item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="m_loopGallery"> <widget class="QCheckBox" name="m_loopGallery">
<property name="text"> <property name="text">
<string>Loop the loaded gallery</string> <string>Loop the loaded gallery</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0" colspan="2"> <item row="3" column="0" colspan="2">
<widget class="QCheckBox" name="m_svgTiny12Only"> <widget class="QCheckBox" name="m_svgTiny12Only">
<property name="text"> <property name="text">
<string>Limit SVG support to SVG Tiny 1.2</string> <string>Limit SVG support to SVG Tiny 1.2</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="4" column="0">
<widget class="QLabel" name="m_mouseWheelBehaviorLabel"> <widget class="QLabel" name="m_mouseWheelBehaviorLabel">
<property name="text"> <property name="text">
<string>Mouse wheel behavior</string> <string>Mouse wheel behavior</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="1"> <item row="4" column="1">
<widget class="QComboBox" name="m_mouseWheelBehavior"/> <widget class="QComboBox" name="m_mouseWheelBehavior"/>
</item> </item>
<item row="4" column="0"> <item row="5" column="0">
<widget class="QLabel" name="m_initWindowSizeBehaviorLabel"> <widget class="QLabel" name="m_initWindowSizeBehaviorLabel">
<property name="text"> <property name="text">
<string>Default window size</string> <string>Default window size</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="5" column="1">
<widget class="QComboBox" name="m_initWindowSizeBehavior"/> <widget class="QComboBox" name="m_initWindowSizeBehavior"/>
</item> </item>
<item row="5" column="0"> <item row="6" column="0">
<widget class="QLabel" name="m_hiDpiRoundingPolicyBehaviorLabel"> <widget class="QLabel" name="m_hiDpiRoundingPolicyBehaviorLabel">
<property name="text"> <property name="text">
<string>HiDPI scale factor rounding policy</string> <string>HiDPI scale factor rounding policy</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1"> <item row="6" column="1">
<widget class="QComboBox" name="m_hiDpiRoundingPolicyBehavior"/> <widget class="QComboBox" name="m_hiDpiRoundingPolicyBehavior"/>
</item> </item>
</layout> </layout>
@@ -102,6 +102,28 @@
</screenshot> </screenshot>
</screenshots> </screenshots>
<releases> <releases>
<release type="stable" version="1.6.0" date="2026-08-22T00:00:00Z">
<description>
<p>This release adds the following features:</p>
<ul>
<li>Allow dragging window from titlebar to move window when maximized</li>
<li>Add an option to show/hide bird-eye view</li>
</ul>
<p>This release fixes the following bugs:</p>
<ul>
<li>Maximize the window when the image size matches the screen size</li>
<li>Fix window might stuck when drag move on some ill-formed window manager</li>
<li>Make titlebar respect RTL layout</li>
</ul>
<p>This release includes the following changes:</p>
<ul>
<li>Update translations</li>
<li>Update Qt version to 6.11.2 for Windows and macOS pre-built binaries</li>
</ul>
<p>With contributions from:</p>
<p>Tech-Tac, Heimen Stoffels (vistaus), VenusGirl, Oğuz Ersen</p>
</description>
</release>
<release type="stable" version="1.5.0" date="2026-07-04T00:00:00Z"> <release type="stable" version="1.5.0" date="2026-07-04T00:00:00Z">
<description> <description>
<p>This release adds the following features:</p> <p>This release adds the following features:</p>
+1
View File
@@ -5,6 +5,7 @@ Comment[zh_CN]=菠萝看图是一个轻量级的图像查看器
Exec=ppic %F Exec=ppic %F
GenericName=Image Viewer GenericName=Image Viewer
GenericName[zh_CN]=图像查看器 GenericName[zh_CN]=图像查看器
GenericName[ja]=画像ビューアー
Icon=net.blumia.pineapple-pictures Icon=net.blumia.pineapple-pictures
Keywords=Picture;Image;Viewer;Jpg;Jpeg;Png; Keywords=Picture;Image;Viewer;Jpg;Jpeg;Png;
MimeType=image/bmp;image/bmp24;image/jpg;image/jpe;image/jpeg;image/jpeg24;image/jng;image/pcd;image/pcx;image/png;image/tif;image/tiff;image/tiff24;image/dds;image/gif;image/sgi;image/j2k;image/jp2;image/pct;image/wdp;image/arw;image/icb;image/dng;image/vda;image/vst;image/svg;image/ptif;image/mef;image/xbm;image/svg+xml; MimeType=image/bmp;image/bmp24;image/jpg;image/jpe;image/jpeg;image/jpeg24;image/jng;image/pcd;image/pcx;image/png;image/tif;image/tiff;image/tiff24;image/dds;image/gif;image/sgi;image/j2k;image/jp2;image/pct;image/wdp;image/arw;image/icb;image/dng;image/vda;image/vst;image/svg;image/ptif;image/mef;image/xbm;image/svg+xml;