[neon/backports-jammy/kimageannotator/Neon/release] /: New upstream version 0.5.3

Boyuan Yang null at kde.org
Tue Jan 16 14:14:19 GMT 2024


Git commit 7acd650d0581c2f41917ce25a0711bbe8d883395 by Boyuan Yang.
Committed on 23/11/2021 at 22:38.
Pushed by jriddell into branch 'Neon/release'.

New upstream version 0.5.3

M  +4    -0    CHANGELOG.md
M  +1    -1    CMakeLists.txt
M  +1    -1    README.md
M  +1    -0    src/CMakeLists.txt
M  +9    -12   src/annotations/items/AnnotationPixelate.cpp
M  +17   -13   src/annotations/items/text/CapsLockStatusChecker.cpp
M  +0    -4    src/annotations/items/text/CapsLockStatusChecker.h
M  +1    -1    src/annotations/items/text/KeyInputHelper.cpp
M  +1    -1    src/annotations/items/text/KeyInputHelper.h
C  +16   -16   src/common/platform/PlatformChecker.cpp [from: src/annotations/items/text/CapsLockStatusChecker.h - 065% similarity]
C  +15   -12   src/common/platform/PlatformChecker.h [from: src/annotations/items/text/CapsLockStatusChecker.h - 066% similarity]
M  +1    -0    src/gui/annotator/docks/AbstractAnnotationDockWidgetContent.h
M  +7    -3    src/gui/annotator/settings/AnnotationToolSelection.cpp
M  +1    -0    src/gui/annotator/settings/AnnotationToolSelection.h
M  +21   -19   translations/kImageAnnotator_el.ts

https://invent.kde.org/neon/backports-jammy/kimageannotator/-/commit/7acd650d0581c2f41917ce25a0711bbe8d883395

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6c848aa..8dab88a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change log
 
+## Release 0.5.3
+* Fixed: Crash while typing text on wayland. ([#256](https://github.com/ksnip/kImageAnnotator/issues/256))
+* Changed: Show scrollbar when not all tools visible. ([#258](https://github.com/ksnip/kImageAnnotator/issues/258))
+
 ## Release 0.5.2
 * Fixed: Memory leaks caught by ASAN. ([#243](https://github.com/ksnip/kImageAnnotator/issues/243))
 * Changed: Use system font provided by QGuiApplication as default for text tool. ([#247](https://github.com/ksnip/kImageAnnotator/issues/247))
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 53c9449..4f9dc0c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.5)
-project(kImageAnnotator LANGUAGES CXX VERSION 0.5.2)
+project(kImageAnnotator LANGUAGES CXX VERSION 0.5.3)
 
 set(CMAKE_CXX_STANDARD 11)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
diff --git a/README.md b/README.md
index 518491f..d221eb0 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 # kImageAnnotator [![Build Status][github-badge]][github-url] [![Translation status][weblate-badge]][weblate-url]
 Tool for annotating images
 
-Version 0.5.2
+Version 0.5.3
 
 ![kImageAnnotator](https://i.imgur.com/4vlPDUn.png "kImageAnnotator")
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 81afa53..cab541e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -128,6 +128,7 @@ set(KIMAGEANNOTATOR_SRCS
 	${CMAKE_CURRENT_SOURCE_DIR}/common/helper/PathHelper.cpp
 	${CMAKE_CURRENT_SOURCE_DIR}/common/filter/IgnoreShortcutsFilter.cpp
 	${CMAKE_CURRENT_SOURCE_DIR}/common/filter/KeyEventListener.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/common/platform/PlatformChecker.cpp
 	${CMAKE_CURRENT_SOURCE_DIR}/widgets/ToolPicker.cpp
 	${CMAKE_CURRENT_SOURCE_DIR}/widgets/CustomFontComboBox.cpp
 	${CMAKE_CURRENT_SOURCE_DIR}/widgets/CustomSpinBox.cpp
diff --git a/src/annotations/items/AnnotationPixelate.cpp b/src/annotations/items/AnnotationPixelate.cpp
index 59d3d39..ffe9ec0 100644
--- a/src/annotations/items/AnnotationPixelate.cpp
+++ b/src/annotations/items/AnnotationPixelate.cpp
@@ -39,18 +39,15 @@ Tools AnnotationPixelate::toolType() const
 
 QImage AnnotationPixelate::obfuscateBackground(const QImage &sceneBehindItem) const
 {
-	auto width = sceneBehindItem.width();
-	auto factor = obfuscateProperties()->factor();
-	auto intensity = abs(factor - 21) * 0.01;
-	auto scaledWidth = width * intensity;
-
-	if(scaledWidth < 1) {
-		return sceneBehindItem;
-	}
-
-	auto result   = sceneBehindItem.convertToFormat( QImage::Format_ARGB32_Premultiplied );
-	result = result.scaledToWidth(scaledWidth, Qt::FastTransformation );
-	result = result.scaledToWidth(width, Qt::FastTransformation );
+    auto result = sceneBehindItem.convertToFormat( QImage::Format_ARGB32_Premultiplied );
+    auto factor = obfuscateProperties()->factor();
+
+    int width  = sceneBehindItem.width() * (0.5 / qMax(1, factor));
+    int height = sceneBehindItem.height() * (0.5 / qMax(1, factor));
+    QSize size  = QSize(qMax(width, 1), qMax(height, 1));
+
+    result = result.scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+    result = result.scaled(sceneBehindItem.width(), sceneBehindItem.height());
 
 	return result;
 }
diff --git a/src/annotations/items/text/CapsLockStatusChecker.cpp b/src/annotations/items/text/CapsLockStatusChecker.cpp
index e73eb4c..8bf9843 100644
--- a/src/annotations/items/text/CapsLockStatusChecker.cpp
+++ b/src/annotations/items/text/CapsLockStatusChecker.cpp
@@ -19,13 +19,13 @@
 
 #include "CapsLockStatusChecker.h"
 
-/*
- * Currently we need to keep the x11 include in the definition
- * file as x11 and qt::cursor don't work together and we fail
- * to compile
- */
+#if defined(_WIN32)
+#include <Windows.h>
+#endif
 
 #if defined(__linux__)
+#include "src/common/platform/PlatformChecker.h"
+
 #include <X11/Xlib.h>
 #include <X11/XKBlib.h>
 #endif
@@ -37,15 +37,19 @@ bool CapsLockStatusChecker::isCapsLockEnabled()
 #if defined(_WIN32)
 	return GetKeyState(VK_CAPITAL) == 1;
 #elif defined(__linux__)
-	auto display = XOpenDisplay(nullptr);
-	auto capsState = false;
-	if (display) {
-		unsigned n;
-		XkbGetIndicatorState(display, XkbUseCoreKbd, &n);
-		capsState = (n & 0x01) == 1;
+	if (PlatformChecker::instance()->isWayland()) {
+		return false;
+	} else {
+		auto display = XOpenDisplay(nullptr);
+		auto capsState = false;
+		if (display) {
+			unsigned n;
+			XkbGetIndicatorState(display, XkbUseCoreKbd, &n);
+			capsState = (n & 0x01) == 1;
+		}
+		XCloseDisplay(display);
+		return capsState;
 	}
-	XCloseDisplay(display);
-	return capsState;
 #else
 	return false;
 #endif
diff --git a/src/annotations/items/text/CapsLockStatusChecker.h b/src/annotations/items/text/CapsLockStatusChecker.h
index 41e821d..9ef68ed 100644
--- a/src/annotations/items/text/CapsLockStatusChecker.h
+++ b/src/annotations/items/text/CapsLockStatusChecker.h
@@ -20,10 +20,6 @@
 #ifndef KIMAGEANNOTATOR_CAPSLOCKSTATUSCHECKER_H
 #define KIMAGEANNOTATOR_CAPSLOCKSTATUSCHECKER_H
 
-#if defined(_WIN32)
-#include <Windows.h>
-#endif
-
 namespace kImageAnnotator {
 
 class CapsLockStatusChecker
diff --git a/src/annotations/items/text/KeyInputHelper.cpp b/src/annotations/items/text/KeyInputHelper.cpp
index 877382a..5a92fdb 100644
--- a/src/annotations/items/text/KeyInputHelper.cpp
+++ b/src/annotations/items/text/KeyInputHelper.cpp
@@ -21,7 +21,7 @@
 
 namespace kImageAnnotator {
 
-void KeyInputHelper::handleKeyPress(const QKeyEvent *event)
+void KeyInputHelper::handleKeyPress(const QKeyEvent *event) const
 {
 	switch (event->key()) {
 		case Qt::Key_Backspace:
diff --git a/src/annotations/items/text/KeyInputHelper.h b/src/annotations/items/text/KeyInputHelper.h
index ccb6b39..d619cee 100644
--- a/src/annotations/items/text/KeyInputHelper.h
+++ b/src/annotations/items/text/KeyInputHelper.h
@@ -33,7 +33,7 @@ Q_OBJECT
 public:
 	explicit KeyInputHelper() = default;
 	~KeyInputHelper() override = default;
-	void handleKeyPress(const QKeyEvent *event);
+	void handleKeyPress(const QKeyEvent *event) const;
 	bool isShiftPressed(const QKeyEvent *event) const;
 	bool isControlPressed(const QKeyEvent *event) const;
 	QString getTextWithCorrectCase(const QKeyEvent *event) const;
diff --git a/src/annotations/items/text/CapsLockStatusChecker.h b/src/common/platform/PlatformChecker.cpp
similarity index 65%
copy from src/annotations/items/text/CapsLockStatusChecker.h
copy to src/common/platform/PlatformChecker.cpp
index 41e821d..983af38 100644
--- a/src/annotations/items/text/CapsLockStatusChecker.h
+++ b/src/common/platform/PlatformChecker.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 Damir Porobic <damir.porobic at gmx.com>
+ * Copyright (C) 2021 Damir Porobic <damir.porobic at gmx.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -17,25 +17,25 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#ifndef KIMAGEANNOTATOR_CAPSLOCKSTATUSCHECKER_H
-#define KIMAGEANNOTATOR_CAPSLOCKSTATUSCHECKER_H
-
-#if defined(_WIN32)
-#include <Windows.h>
-#endif
+#include "PlatformChecker.h"
 
 namespace kImageAnnotator {
 
-class CapsLockStatusChecker
+PlatformChecker *PlatformChecker::instance()
 {
-public:
-	static bool isCapsLockEnabled();
+	static PlatformChecker instance;
+	return &instance;
+}
 
-protected:
-	explicit CapsLockStatusChecker() = default;
-	~CapsLockStatusChecker() = default;
-};
+bool PlatformChecker::isWayland() const
+{
+	return mIsWayland;
+}
 
-} // namespace kImageAnnotator
+PlatformChecker::PlatformChecker()
+{
+	auto output = qgetenv("XDG_CURRENT_DESKTOP");
+	mIsWayland = output.contains("wayland");
+}
 
-#endif //KIMAGEANNOTATOR_CAPSLOCKSTATUSCHECKER_H
+} // namespace kImageAnnotator
diff --git a/src/annotations/items/text/CapsLockStatusChecker.h b/src/common/platform/PlatformChecker.h
similarity index 66%
copy from src/annotations/items/text/CapsLockStatusChecker.h
copy to src/common/platform/PlatformChecker.h
index 41e821d..33e86c7 100644
--- a/src/annotations/items/text/CapsLockStatusChecker.h
+++ b/src/common/platform/PlatformChecker.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 Damir Porobic <damir.porobic at gmx.com>
+ * Copyright (C) 2021 Damir Porobic <damir.porobic at gmx.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -17,25 +17,28 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#ifndef KIMAGEANNOTATOR_CAPSLOCKSTATUSCHECKER_H
-#define KIMAGEANNOTATOR_CAPSLOCKSTATUSCHECKER_H
+#ifndef KIMAGEANNOTATOR_PLATFORMCHECKER_H
+#define KIMAGEANNOTATOR_PLATFORMCHECKER_H
 
-#if defined(_WIN32)
-#include <Windows.h>
-#endif
+#include <QString>
 
 namespace kImageAnnotator {
 
-class CapsLockStatusChecker
+class PlatformChecker
 {
 public:
-	static bool isCapsLockEnabled();
+	virtual ~PlatformChecker() = default;
 
-protected:
-	explicit CapsLockStatusChecker() = default;
-	~CapsLockStatusChecker() = default;
+	static PlatformChecker *instance();
+
+	bool isWayland() const;
+
+private:
+	bool mIsWayland;
+
+	PlatformChecker();
 };
 
 } // namespace kImageAnnotator
 
-#endif //KIMAGEANNOTATOR_CAPSLOCKSTATUSCHECKER_H
+#endif //KIMAGEANNOTATOR_PLATFORMCHECKER_H
diff --git a/src/gui/annotator/docks/AbstractAnnotationDockWidgetContent.h b/src/gui/annotator/docks/AbstractAnnotationDockWidgetContent.h
index c93105f..8d45709 100644
--- a/src/gui/annotator/docks/AbstractAnnotationDockWidgetContent.h
+++ b/src/gui/annotator/docks/AbstractAnnotationDockWidgetContent.h
@@ -23,6 +23,7 @@
 #include <QWidget>
 #include <QBoxLayout>
 #include <QList>
+#include <QScrollArea>
 
 #include "src/widgets/misc/AbstractExpandingWidget.h"
 
diff --git a/src/gui/annotator/settings/AnnotationToolSelection.cpp b/src/gui/annotator/settings/AnnotationToolSelection.cpp
index 84991cc..dd7c047 100644
--- a/src/gui/annotator/settings/AnnotationToolSelection.cpp
+++ b/src/gui/annotator/settings/AnnotationToolSelection.cpp
@@ -23,9 +23,13 @@ namespace kImageAnnotator {
 
 AnnotationToolSelection::AnnotationToolSelection() :
 	mMainLayout(new QVBoxLayout),
-	mToolPicker(new ToolPicker(this))
+	mToolPicker(new ToolPicker(this)),
+	mScrollAreaToolPicker(new QScrollArea(this))
 {
-	mMainLayout->addWidget(mToolPicker);
+	mScrollAreaToolPicker->setWidgetResizable(true);
+	mScrollAreaToolPicker->setFrameShape(QFrame::NoFrame);
+	mScrollAreaToolPicker->setWidget(mToolPicker);
+	mMainLayout->addWidget(mScrollAreaToolPicker);
 	mMainLayout->setContentsMargins(0, 0, 0, 0);
 
 	setLayout(mMainLayout);
@@ -60,4 +64,4 @@ QString AnnotationToolSelection::name() const
 	return tr("Tool Selection");
 }
 
-} // namespace kImageAnnotator
\ No newline at end of file
+} // namespace kImageAnnotator
diff --git a/src/gui/annotator/settings/AnnotationToolSelection.h b/src/gui/annotator/settings/AnnotationToolSelection.h
index e7b4951..ffa7d3a 100644
--- a/src/gui/annotator/settings/AnnotationToolSelection.h
+++ b/src/gui/annotator/settings/AnnotationToolSelection.h
@@ -42,6 +42,7 @@ signals:
 private:
 	QVBoxLayout *mMainLayout;
 	ToolPicker *mToolPicker;
+	QScrollArea *mScrollAreaToolPicker;
 };
 
 } // namespace kImageAnnotator
diff --git a/translations/kImageAnnotator_el.ts b/translations/kImageAnnotator_el.ts
index 03d8b36..e9225a6 100644
--- a/translations/kImageAnnotator_el.ts
+++ b/translations/kImageAnnotator_el.ts
@@ -74,7 +74,7 @@
     </message>
     <message>
         <source>Number Seed</source>
-        <translation type="unfinished"></translation>
+        <translation>Αρχικός αριθμός</translation>
     </message>
     <message>
         <source>Obfuscation Factor</source>
@@ -82,11 +82,11 @@
     </message>
     <message>
         <source>Item Shadow</source>
-        <translation type="unfinished"></translation>
+        <translation>Σκιά αντικειμένου</translation>
     </message>
     <message>
         <source>Item Settings</source>
-        <translation type="unfinished"></translation>
+        <translation>Ρυθμίσεις αντικειμένου</translation>
     </message>
 </context>
 <context>
@@ -207,11 +207,11 @@
     </message>
     <message>
         <source>Drop Shadow</source>
-        <translation type="unfinished"></translation>
+        <translation>Σκίαση</translation>
     </message>
     <message>
         <source>Grayscale</source>
-        <translation type="unfinished">Διαβαθμίσεις του γκρι</translation>
+        <translation>Διαβαθμίσεις του γκρι</translation>
     </message>
     <message>
         <source>Border</source>
@@ -231,15 +231,16 @@
     <message>
         <source>When enabled enforces the canvas
 to include the background image.</source>
-        <translation type="unfinished"></translation>
+        <translation>Όταν είναι ενεργοποιημένο, εξαναγκάζει τον καμβά
+να συμπεριλάβει την εικόνα παρασκηνίου.</translation>
     </message>
     <message>
         <source>X:</source>
-        <translation type="unfinished">x</translation>
+        <translation>X:</translation>
     </message>
     <message>
         <source>Y:</source>
-        <translation type="unfinished">Y:</translation>
+        <translation>Y:</translation>
     </message>
     <message>
         <source>W:</source>
@@ -263,7 +264,7 @@ to include the background image.</source>
     </message>
     <message>
         <source>Canvas Background Color</source>
-        <translation type="unfinished"></translation>
+        <translation>Χρώμα παρασκηνίου του καμβά</translation>
     </message>
 </context>
 <context>
@@ -282,16 +283,17 @@ to include the background image.</source>
     </message>
     <message>
         <source>90° Counter Clockwise</source>
-        <translation type="unfinished"></translation>
+        <translation>90° Αριστερόστροφα</translation>
     </message>
     <message>
         <source>Arbitrary</source>
-        <translation type="unfinished"></translation>
+        <translation>Αυθαίρετα</translation>
     </message>
     <message>
         <source>Positive values rotate clockwise, negative values counter clockwise.
 Rotating by non 90° multipliers might introduce loss of quality.</source>
-        <translation type="unfinished"></translation>
+        <translation>Οι θετικές τιμές περιστρέφουν σύμφωνα με τους δείκτες του ρολογιού, και οι αρνητικές τιμές αντίστροφα.
+Η περιστροφή με πολλαπλασιαστές διαφορετικούς των 90° μπορεί να προκαλέσει απώλεια στην ποιότητα.</translation>
     </message>
     <message>
         <source>Horizontal</source>
@@ -357,7 +359,7 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
     <name>kImageAnnotator::StickerPicker</name>
     <message>
         <source>Sticker</source>
-        <translation type="unfinished"></translation>
+        <translation>Αυτοκόλλητο</translation>
     </message>
 </context>
 <context>
@@ -416,27 +418,27 @@ Rotating by non 90° multipliers might introduce loss of quality.</source>
     </message>
     <message>
         <source>Number Pointer</source>
-        <translation type="unfinished"></translation>
+        <translation>Δρομέας αριθμού</translation>
     </message>
     <message>
         <source>Sticker</source>
-        <translation type="unfinished"></translation>
+        <translation>Αυτοκόλλητο</translation>
     </message>
     <message>
         <source>Pixelate</source>
-        <translation type="unfinished"></translation>
+        <translation>Παραμόρφωση εικονοστοιχείων</translation>
     </message>
     <message>
         <source>Text Pointer</source>
-        <translation type="unfinished"></translation>
+        <translation>Δρομέας κειμένου</translation>
     </message>
     <message>
         <source>Text Arrow</source>
-        <translation type="unfinished"></translation>
+        <translation>Βέλος κειμένου</translation>
     </message>
     <message>
         <source>Number Arrow</source>
-        <translation type="unfinished"></translation>
+        <translation>Βέλος αριθμού</translation>
     </message>
     <message>
         <source>Duplicate</source>



More information about the Neon-commits mailing list