kde/{kdecoration,kf6-kwayland,kglobalacceld,kwin}: rebase to Plasma 6.7.2 (RedBear additions preserved)
redbear-ci / check (push) Has been cancelled

This commit is contained in:
2026-08-01 01:11:44 +03:00
parent 1c8858d14d
commit ee46489ccb
2175 changed files with 129759 additions and 84951 deletions
Binary file not shown.
@@ -6,3 +6,6 @@ include:
file:
- /gitlab-templates/linux-qt6.yml
- /gitlab-templates/freebsd-qt6.yml
- /gitlab-templates/xml-lint.yml
- /gitlab-templates/yaml-lint.yml
- /gitlab-templates/linux-qt6-next.yml
@@ -2,9 +2,10 @@
# SPDX-License-Identifier: CC0-1.0
Dependencies:
- 'on': ['@all']
'require':
- 'on': ['@all']
'require':
'frameworks/extra-cmake-modules': '@latest-kf6'
'frameworks/ki18n': '@latest-kf6'
Options:
require-passing-tests-on: [ 'Linux', 'FreeBSD']
require-passing-tests-on: ['Linux', 'FreeBSD']
enable-lsan: True
@@ -0,0 +1 @@
6.7.2
@@ -1,11 +1,11 @@
cmake_minimum_required(VERSION 3.16)
project(decoration-api)
set(PROJECT_VERSION "6.3.4")
set(PROJECT_VERSION "6.7.2")
set(PROJECT_VERSION_MAJOR 6)
set(QT_MIN_VERSION "6.7.0")
set(KF6_MIN_VERSION "6.10.0")
set(QT_MIN_VERSION "6.10.0")
set(KF6_MIN_VERSION "6.26.0")
set(KDE_COMPILERSETTINGS_LEVEL "5.82")
set(CMAKE_CXX_STANDARD 20)
@@ -37,7 +37,7 @@ ecm_setup_version(${PROJECT_VERSION} VARIABLE_PREFIX KDECORATION3
find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
Core
Gui
Test
)
# require at least gcc 4.8
@@ -52,8 +52,8 @@ set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprec
set(KDECORATION3_INCLUDEDIR "${KDE_INSTALL_INCLUDEDIR}/KDecoration3")
find_package(KF6I18n ${KF6_MIN_VERSION} CONFIG REQUIRED)
ecm_set_disabled_deprecation_versions(QT 5.15.2
KF 5.240.0
ecm_set_disabled_deprecation_versions(QT 6.2.0
KF 6.12.0
)
add_definitions(-DQT_NO_KEYWORDS)
@@ -90,4 +90,4 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kdecoration3_version.h
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
#ki18n_install(po)
ki18n_install(po)
@@ -172,7 +172,7 @@ void DecorationButtonTest::testEnabled()
// now let's send it a hover entered event
QSignalSpy hoveredChangedSpy(&button, &KDecoration3::DecorationButton::hoveredChanged);
QVERIFY(hoveredChangedSpy.isValid());
QHoverEvent event(QEvent::HoverEnter, QPointF(1, 1), QPointF(-1, -1));
QHoverEvent event(QEvent::HoverEnter, QPointF(1, 1), QPointF(1, 1), QPointF(-1, -1));
event.setAccepted(false);
button.event(&event);
QCOMPARE(event.isAccepted(), false);
@@ -228,7 +228,7 @@ void DecorationButtonTest::testPressIgnore()
QFETCH(QPoint, clickPos);
QFETCH(Qt::MouseButton, mouseButton);
QMouseEvent pressEvent(QEvent::MouseButtonPress, clickPos, mouseButton, mouseButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, clickPos, clickPos, mouseButton, mouseButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QTEST(pressEvent.isAccepted(), "expectedAccepted");
@@ -271,7 +271,7 @@ void DecorationButtonTest::testReleaseIgnore()
QSignalSpy clickedSpy(&button, &KDecoration3::DecorationButton::clicked);
QVERIFY(clickedSpy.isValid());
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(0, 0), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(0, 0), QPointF(0, 0), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QCOMPARE(pressEvent.isAccepted(), true);
@@ -287,7 +287,7 @@ void DecorationButtonTest::testReleaseIgnore()
QFETCH(QPoint, clickPos);
QFETCH(Qt::MouseButton, mouseButton);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, clickPos, mouseButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, clickPos, clickPos, mouseButton, Qt::NoButton, Qt::NoModifier);
releaseEvent.setAccepted(false);
button.event(&releaseEvent);
QTEST(releaseEvent.isAccepted(), "expectedAccepted");
@@ -329,7 +329,7 @@ void DecorationButtonTest::testHoverEnterIgnore()
button.setVisible(visible);
QFETCH(QPoint, enterPos);
QHoverEvent enterEvent(QEvent::HoverEnter, enterPos, QPoint());
QHoverEvent enterEvent(QEvent::HoverEnter, enterPos, enterPos, QPoint());
enterEvent.setAccepted(false);
button.event(&enterEvent);
QCOMPARE(enterEvent.isAccepted(), false);
@@ -340,7 +340,7 @@ void DecorationButtonTest::testHoverEnterIgnore()
// send a HoverLeft event should not be processed
button.setEnabled(true);
button.setVisible(true);
QHoverEvent leftEvent(QEvent::HoverLeave, QPoint(20, 20), enterPos);
QHoverEvent leftEvent(QEvent::HoverLeave, QPoint(20, 20), QPointF(20, 20), enterPos);
leftEvent.setAccepted(false);
button.event(&leftEvent);
QCOMPARE(leftEvent.isAccepted(), false);
@@ -376,7 +376,7 @@ void DecorationButtonTest::testHoverLeaveIgnore()
QSignalSpy pointerLeavedSpy(&button, &KDecoration3::DecorationButton::pointerLeft);
QVERIFY(pointerLeavedSpy.isValid());
QHoverEvent enterEvent(QEvent::HoverEnter, QPoint(0, 0), QPoint());
QHoverEvent enterEvent(QEvent::HoverEnter, QPoint(0, 0), QPoint(0, 0), QPoint());
enterEvent.setAccepted(false);
button.event(&enterEvent);
QCOMPARE(enterEvent.isAccepted(), true);
@@ -391,7 +391,7 @@ void DecorationButtonTest::testHoverLeaveIgnore()
button.setVisible(visible);
QFETCH(QPoint, leavePos);
QHoverEvent leftEvent(QEvent::HoverLeave, leavePos, QPoint(0, 0));
QHoverEvent leftEvent(QEvent::HoverLeave, leavePos, leavePos, QPoint(0, 0));
leftEvent.setAccepted(false);
button.event(&leftEvent);
QCOMPARE(leftEvent.isAccepted(), false);
@@ -419,7 +419,7 @@ void DecorationButtonTest::testHover()
QSignalSpy pointerLeavedSpy(&button, &KDecoration3::DecorationButton::pointerLeft);
QVERIFY(pointerLeavedSpy.isValid());
QHoverEvent enterEvent(QEvent::HoverEnter, QPoint(0, 0), QPoint());
QHoverEvent enterEvent(QEvent::HoverEnter, QPoint(0, 0), QPointF(0, 0), QPoint());
enterEvent.setAccepted(false);
button.event(&enterEvent);
QCOMPARE(enterEvent.isAccepted(), true);
@@ -429,12 +429,12 @@ void DecorationButtonTest::testHover()
QCOMPARE(hoveredChangedSpy.last().first().toBool(), true);
// send in a hovermove event - it's passed through, but not used
QHoverEvent moveEvent(QEvent::HoverMove, QPoint(5, 0), QPoint(0, 0));
QHoverEvent moveEvent(QEvent::HoverMove, QPoint(5, 0), QPoint(5, 0), QPoint(0, 0));
moveEvent.setAccepted(false);
button.event(&moveEvent);
QCOMPARE(moveEvent.isAccepted(), false);
QHoverEvent leftEvent(QEvent::HoverLeave, QPointF(10.1, 0.0), QPointF(0, 0));
QHoverEvent leftEvent(QEvent::HoverLeave, QPointF(10.1, 0.0), QPointF(10.1, 0.0), QPointF(0, 0));
leftEvent.setAccepted(false);
button.event(&leftEvent);
QCOMPARE(leftEvent.isAccepted(), true);
@@ -473,7 +473,7 @@ void DecorationButtonTest::testMouseMove()
QSignalSpy pointerLeavedSpy(&button, &KDecoration3::DecorationButton::pointerLeft);
QVERIFY(pointerLeavedSpy.isValid());
QHoverEvent enterEvent(QEvent::HoverEnter, QPoint(0, 0), QPoint());
QHoverEvent enterEvent(QEvent::HoverEnter, QPoint(0, 0), QPoint(0, 0), QPoint());
enterEvent.setAccepted(false);
button.event(&enterEvent);
QCOMPARE(enterEvent.isAccepted(), true);
@@ -487,7 +487,7 @@ void DecorationButtonTest::testMouseMove()
button.setVisible(visible);
QFETCH(QPointF, movePos);
QMouseEvent mouseMoveEvent(QEvent::MouseMove, movePos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent mouseMoveEvent(QEvent::MouseMove, movePos, movePos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
mouseMoveEvent.setAccepted(false);
button.event(&mouseMoveEvent);
QTEST(mouseMoveEvent.isAccepted(), "expectedAccepted");
@@ -497,7 +497,7 @@ void DecorationButtonTest::testMouseMove()
QCOMPARE(hoveredChangedSpy.last().first().toBool(), button.isHovered());
// explicit further move event outside of button
QMouseEvent mouseMoveEvent2(QEvent::MouseMove, QPoint(50, 50), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent mouseMoveEvent2(QEvent::MouseMove, QPoint(50, 50), QPoint(50, 50), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
mouseMoveEvent2.setAccepted(false);
button.event(&mouseMoveEvent2);
QTEST(mouseMoveEvent2.isAccepted(), "expectedHovered");
@@ -538,7 +538,7 @@ void DecorationButtonTest::testClose()
QSignalSpy pressedChangedSpy(&button, &KDecoration3::DecorationButton::pressedChanged);
QVERIFY(pressedChangedSpy.isValid());
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QCOMPARE(pressEvent.isAccepted(), true);
@@ -550,7 +550,7 @@ void DecorationButtonTest::testClose()
QCOMPARE(pressedChangedSpy.count(), 1);
QCOMPARE(pressedChangedSpy.first().first().toBool(), true);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
releaseEvent.setAccepted(false);
button.event(&releaseEvent);
QCOMPARE(releaseEvent.isAccepted(), true);
@@ -599,7 +599,7 @@ void DecorationButtonTest::testMinimize()
QSignalSpy pressedChangedSpy(&button, &KDecoration3::DecorationButton::pressedChanged);
QVERIFY(pressedChangedSpy.isValid());
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QCOMPARE(pressEvent.isAccepted(), true);
@@ -611,7 +611,7 @@ void DecorationButtonTest::testMinimize()
QCOMPARE(pressedChangedSpy.count(), 1);
QCOMPARE(pressedChangedSpy.first().first().toBool(), true);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
releaseEvent.setAccepted(false);
button.event(&releaseEvent);
QCOMPARE(releaseEvent.isAccepted(), true);
@@ -660,7 +660,7 @@ void DecorationButtonTest::testQuickHelp()
QSignalSpy pressedChangedSpy(&button, &KDecoration3::DecorationButton::pressedChanged);
QVERIFY(pressedChangedSpy.isValid());
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QCOMPARE(pressEvent.isAccepted(), true);
@@ -672,7 +672,7 @@ void DecorationButtonTest::testQuickHelp()
QCOMPARE(pressedChangedSpy.count(), 1);
QCOMPARE(pressedChangedSpy.first().first().toBool(), true);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
releaseEvent.setAccepted(false);
button.event(&releaseEvent);
QCOMPARE(releaseEvent.isAccepted(), true);
@@ -712,7 +712,7 @@ void DecorationButtonTest::testKeepAbove()
QSignalSpy pressedChangedSpy(&button, &KDecoration3::DecorationButton::pressedChanged);
QVERIFY(pressedChangedSpy.isValid());
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QCOMPARE(pressEvent.isAccepted(), true);
@@ -724,7 +724,7 @@ void DecorationButtonTest::testKeepAbove()
QCOMPARE(pressedChangedSpy.count(), 1);
QCOMPARE(pressedChangedSpy.first().first().toBool(), true);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
releaseEvent.setAccepted(false);
button.event(&releaseEvent);
QCOMPARE(releaseEvent.isAccepted(), true);
@@ -775,7 +775,7 @@ void DecorationButtonTest::testKeepBelow()
QSignalSpy pressedChangedSpy(&button, &KDecoration3::DecorationButton::pressedChanged);
QVERIFY(pressedChangedSpy.isValid());
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QCOMPARE(pressEvent.isAccepted(), true);
@@ -787,7 +787,7 @@ void DecorationButtonTest::testKeepBelow()
QCOMPARE(pressedChangedSpy.count(), 1);
QCOMPARE(pressedChangedSpy.first().first().toBool(), true);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
releaseEvent.setAccepted(false);
button.event(&releaseEvent);
QCOMPARE(releaseEvent.isAccepted(), true);
@@ -848,7 +848,7 @@ void DecorationButtonTest::testShade()
QSignalSpy pressedChangedSpy(&button, &KDecoration3::DecorationButton::pressedChanged);
QVERIFY(pressedChangedSpy.isValid());
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QCOMPARE(pressEvent.isAccepted(), true);
@@ -860,7 +860,7 @@ void DecorationButtonTest::testShade()
QCOMPARE(pressedChangedSpy.count(), 1);
QCOMPARE(pressedChangedSpy.first().first().toBool(), true);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
releaseEvent.setAccepted(false);
button.event(&releaseEvent);
QCOMPARE(releaseEvent.isAccepted(), true);
@@ -925,7 +925,7 @@ void DecorationButtonTest::testMaximize()
QSignalSpy pressedChangedSpy(&button, &KDecoration3::DecorationButton::pressedChanged);
QVERIFY(pressedChangedSpy.isValid());
QMouseEvent leftPressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent leftPressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
leftPressEvent.setAccepted(false);
button.event(&leftPressEvent);
QCOMPARE(leftPressEvent.isAccepted(), true);
@@ -937,7 +937,7 @@ void DecorationButtonTest::testMaximize()
QCOMPARE(pressedChangedSpy.count(), 1);
QCOMPARE(pressedChangedSpy.first().first().toBool(), true);
QMouseEvent leftReleaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent leftReleaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
leftReleaseEvent.setAccepted(false);
button.event(&leftReleaseEvent);
QCOMPARE(leftReleaseEvent.isAccepted(), true);
@@ -963,19 +963,19 @@ void DecorationButtonTest::testMaximize()
QCOMPARE(button.isChecked(), false);
// test the other buttons
QMouseEvent rightPressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::RightButton, Qt::RightButton, Qt::NoModifier);
QMouseEvent rightPressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::RightButton, Qt::RightButton, Qt::NoModifier);
rightPressEvent.setAccepted(false);
button.event(&rightPressEvent);
QCOMPARE(rightPressEvent.isAccepted(), true);
QCOMPARE(button.isPressed(), true);
QMouseEvent middlePressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::MiddleButton, Qt::MiddleButton, Qt::NoModifier);
QMouseEvent middlePressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::MiddleButton, Qt::MiddleButton, Qt::NoModifier);
middlePressEvent.setAccepted(false);
button.event(&middlePressEvent);
QCOMPARE(middlePressEvent.isAccepted(), true);
QCOMPARE(button.isPressed(), true);
QMouseEvent middleReleaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::MiddleButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent middleReleaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::MiddleButton, Qt::NoButton, Qt::NoModifier);
middleReleaseEvent.setAccepted(false);
button.event(&middleReleaseEvent);
QCOMPARE(middleReleaseEvent.isAccepted(), true);
@@ -986,7 +986,7 @@ void DecorationButtonTest::testMaximize()
QCOMPARE(client->isMaximizedHorizontally(), true);
QCOMPARE(client->isMaximizedVertically(), false);
QMouseEvent rightReleaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::RightButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent rightReleaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::RightButton, Qt::NoButton, Qt::NoModifier);
rightReleaseEvent.setAccepted(false);
button.event(&rightReleaseEvent);
QCOMPARE(rightReleaseEvent.isAccepted(), true);
@@ -1041,7 +1041,7 @@ void DecorationButtonTest::testOnAllDesktops()
QSignalSpy pressedChangedSpy(&button, &KDecoration3::DecorationButton::pressedChanged);
QVERIFY(pressedChangedSpy.isValid());
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QCOMPARE(pressEvent.isAccepted(), true);
@@ -1053,7 +1053,7 @@ void DecorationButtonTest::testOnAllDesktops()
QCOMPARE(pressedChangedSpy.count(), 1);
QCOMPARE(pressedChangedSpy.first().first().toBool(), true);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
releaseEvent.setAccepted(false);
button.event(&releaseEvent);
QCOMPARE(releaseEvent.isAccepted(), true);
@@ -1098,7 +1098,7 @@ void DecorationButtonTest::testMenu()
QSignalSpy menuRequestedSpy(client, &MockWindow::menuRequested);
QVERIFY(menuRequestedSpy.isValid());
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QCOMPARE(pressEvent.isAccepted(), true);
@@ -1110,7 +1110,7 @@ void DecorationButtonTest::testMenu()
QCOMPARE(pressedChangedSpy.count(), 1);
QCOMPARE(pressedChangedSpy.first().first().toBool(), true);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
releaseEvent.setAccepted(false);
button.event(&releaseEvent);
QCOMPARE(releaseEvent.isAccepted(), true);
@@ -1155,11 +1155,11 @@ void DecorationButtonTest::testMenuDoubleClick()
QSignalSpy menuRequestedSpy(client, &MockWindow::menuRequested);
QVERIFY(menuRequestedSpy.isValid());
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QCOMPARE(pressEvent.isAccepted(), true);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
releaseEvent.setAccepted(false);
button.event(&releaseEvent);
QCOMPARE(releaseEvent.isAccepted(), true);
@@ -1186,11 +1186,11 @@ void DecorationButtonTest::testMenuDoubleClick()
QCOMPARE(menuRequestedSpy.count(), 0);
// a double click of right button shouldn't trigger the double click event
QMouseEvent rightPressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::RightButton, Qt::RightButton, Qt::NoModifier);
QMouseEvent rightPressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::RightButton, Qt::RightButton, Qt::NoModifier);
rightPressEvent.setAccepted(false);
button.event(&rightPressEvent);
QCOMPARE(rightPressEvent.isAccepted(), true);
QMouseEvent rightReleaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::RightButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent rightReleaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::RightButton, Qt::NoButton, Qt::NoModifier);
rightReleaseEvent.setAccepted(false);
button.event(&rightReleaseEvent);
QCOMPARE(rightReleaseEvent.isAccepted(), true);
@@ -1240,7 +1240,7 @@ void DecorationButtonTest::testMenuPressAndHold()
QVERIFY(clickedSpy.isValid());
// send a press event
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QCOMPARE(pressEvent.isAccepted(), true);
@@ -1252,7 +1252,7 @@ void DecorationButtonTest::testMenuPressAndHold()
QCOMPARE(clickedSpy.count(), 1);
// send release event
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
releaseEvent.setAccepted(false);
button.event(&releaseEvent);
QCOMPARE(releaseEvent.isAccepted(), true);
@@ -1310,7 +1310,7 @@ void DecorationButtonTest::testApplicationMenu()
QSignalSpy applicationMenuRequestedSpy(client, &MockWindow::applicationMenuRequested);
QVERIFY(applicationMenuRequestedSpy.isValid());
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
pressEvent.setAccepted(false);
button.event(&pressEvent);
QCOMPARE(pressEvent.isAccepted(), true);
@@ -1322,7 +1322,7 @@ void DecorationButtonTest::testApplicationMenu()
QCOMPARE(pressedChangedSpy.count(), 1);
QCOMPARE(pressedChangedSpy.first().first().toBool(), true);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(5, 5), QPointF(5, 5), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
releaseEvent.setAccepted(false);
button.event(&releaseEvent);
QCOMPARE(releaseEvent.isAccepted(), true);
@@ -132,14 +132,14 @@ void DecorationTest::testSection()
QSignalSpy spy(&deco, &KDecoration3::Decoration::sectionUnderMouseChanged);
QVERIFY(spy.isValid());
QFETCH(QPoint, pos);
QHoverEvent event(QEvent::HoverMove, QPointF(pos), QPointF(pos));
QHoverEvent event(QEvent::HoverMove, QPointF(pos), QPointF(pos), QPointF(pos));
QCoreApplication::sendEvent(&deco, &event);
QFETCH(Qt::WindowFrameSection, expected);
QCOMPARE(deco.sectionUnderMouse(), expected);
QCOMPARE(spy.count(), 1);
QCOMPARE(spy.first().first().value<Qt::WindowFrameSection>(), expected);
QHoverEvent event2(QEvent::HoverMove, QPointF(50, 50), QPointF(50, 50));
QHoverEvent event2(QEvent::HoverMove, QPointF(50, 50), QPointF(50, 50), QPointF(50, 50));
QCoreApplication::sendEvent(&deco, &event2);
QCOMPARE(deco.sectionUnderMouse(), Qt::NoSection);
QCOMPARE(spy.count(), 2);
@@ -7,7 +7,7 @@
#include "../src/decorationsettings.h"
MockSettings::MockSettings(KDecoration3::DecorationSettings *parent)
: DecorationSettingsPrivate(parent)
: DecorationSettingsPrivateV2(parent)
{
}
@@ -41,6 +41,11 @@ bool MockSettings::isOnAllDesktopsAvailable() const
return m_onAllDesktopsAvailable;
}
bool MockSettings::isAlwaysShowExcludeFromCapture() const
{
return m_alwaysShowExcludeFromCapture;
}
void MockSettings::setOnAllDesktopsAvailabe(bool set)
{
if (m_onAllDesktopsAvailable == set) {
@@ -58,3 +63,12 @@ void MockSettings::setCloseOnDoubleClickOnMenu(bool set)
m_closeDoubleClickOnMenu = set;
Q_EMIT decorationSettings()->closeOnDoubleClickOnMenuChanged(m_closeDoubleClickOnMenu);
}
void MockSettings::setAlwaysShowExcludeFromCapture(bool set)
{
if (m_alwaysShowExcludeFromCapture == set) {
return;
}
m_alwaysShowExcludeFromCapture = set;
Q_EMIT decorationSettings()->alwaysShowExcludeFromCaptureChanged(m_alwaysShowExcludeFromCapture);
}
@@ -7,7 +7,7 @@
#include "../src/private/decorationsettingsprivate.h"
class MockSettings : public KDecoration3::DecorationSettingsPrivate
class MockSettings : public KDecoration3::DecorationSettingsPrivateV2
{
public:
explicit MockSettings(KDecoration3::DecorationSettings *parent);
@@ -18,11 +18,14 @@ public:
bool isAlphaChannelSupported() const override;
bool isCloseOnDoubleClickOnMenu() const override;
bool isOnAllDesktopsAvailable() const override;
bool isAlwaysShowExcludeFromCapture() const override;
void setOnAllDesktopsAvailabe(bool set);
void setCloseOnDoubleClickOnMenu(bool set);
void setAlwaysShowExcludeFromCapture(bool set);
private:
bool m_onAllDesktopsAvailable = false;
bool m_closeDoubleClickOnMenu = false;
bool m_alwaysShowExcludeFromCapture = false;
};
@@ -10,7 +10,7 @@
MockWindow::MockWindow(KDecoration3::DecoratedWindow *client, KDecoration3::Decoration *decoration)
: QObject()
, DecoratedWindowPrivateV2(client, decoration)
, DecoratedWindowPrivateV4(client, decoration)
{
}
@@ -54,6 +54,11 @@ bool MockWindow::isKeepBelow() const
return m_keepBelow;
}
bool MockWindow::isExcludedFromCapture() const
{
return m_excludeFromCapture;
}
bool MockWindow::isMaximizeable() const
{
return m_maximizable;
@@ -196,6 +201,12 @@ void MockWindow::requestToggleKeepBelow()
Q_EMIT window()->keepBelowChanged(m_keepBelow);
}
void MockWindow::requestToggleExcludeFromCapture()
{
m_excludeFromCapture = !m_excludeFromCapture;
Q_EMIT window()->excludeFromCaptureChanged(m_excludeFromCapture);
}
void MockWindow::requestToggleOnAllDesktops()
{
m_onAllDesktops = !m_onAllDesktops;
@@ -299,4 +310,10 @@ QString MockWindow::applicationMenuObjectPath() const
return QString();
}
void MockWindow::popup(const KDecoration3::Positioner &positioner, QMenu *menu)
{
Q_UNUSED(positioner)
Q_UNUSED(menu)
}
#include "moc_mockwindow.cpp"
@@ -9,7 +9,7 @@
#include <QObject>
class MockWindow : public QObject, public KDecoration3::DecoratedWindowPrivateV2
class MockWindow : public QObject, public KDecoration3::DecoratedWindowPrivateV4
{
Q_OBJECT
public:
@@ -23,6 +23,7 @@ public:
bool isCloseable() const override;
bool isKeepAbove() const override;
bool isKeepBelow() const override;
bool isExcludedFromCapture() const override;
bool isMaximizeable() const override;
bool isMaximized() const override;
bool isMaximizedHorizontally() const override;
@@ -46,6 +47,7 @@ public:
void requestShowApplicationMenu(const QRect &rect, int actionId) override;
void requestToggleKeepAbove() override;
void requestToggleKeepBelow() override;
void requestToggleExcludeFromCapture() override;
void requestToggleOnAllDesktops() override;
void requestToggleShade() override;
void requestShowToolTip(const QString &text) override;
@@ -57,8 +59,8 @@ public:
qreal nextScale() const override;
QString applicationMenuServiceName() const override;
QString applicationMenuObjectPath() const override;
void showApplicationMenu(int actionId) override;
void popup(const KDecoration3::Positioner &positioner, QMenu *menu) override;
void setCloseable(bool set);
void setMinimizable(bool set);
@@ -82,6 +84,7 @@ private:
bool m_contextHelp = false;
bool m_keepAbove = false;
bool m_keepBelow = false;
bool m_excludeFromCapture = false;
bool m_shadeable = false;
bool m_shaded = false;
bool m_maximizable = false;
@@ -1,13 +1,13 @@
# Copyright (C) YEAR This file is copyright:
# Copyright (C) 2025 This file is copyright:
# This file is distributed under the same license as the kdecoration package.
# SPDX-FileCopyrightText: 2023, 2025, 2026 Zayed Al-Saidi <zayed.alsaidi@gmail.com>
#
# Zayed Al-Saidi <zayed.alsaidi@gmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2023-03-16 12:41+0400\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-14 07:49+0400\n"
"Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n"
"Language-Team: ar\n"
"Language: ar\n"
@@ -15,79 +15,96 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Lokalize 23.08.5\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "إجراءات أكثر لهذه النافذة"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "قائمة النافذة"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "قائمة التّطبيق"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "على سطح مكتب واحد"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "على كلّ أسطح المكتب"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "صغّر"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "استعد"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "كبّر"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "أغلق"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "مساعدة السياقية"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "ألغ التظليل"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "ظلل"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "لا تبقها أسفل النوافذ الأخرى"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "أبقها أسفل النوافذ الأخرى"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "لا تبقها أعلى النوافذ الأخرى"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "أبقها أعلى النوافذ الأخرى"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "النافذة مخفية عن تسجيل الشاشة. اضغط عليها لإظهارها."
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "أخفِ من تسجيل الشاشة"
#~ msgid "More actions for this window"
#~ msgstr "إجراءات أكثر لهذه النافذة"
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2023-05-03 23:37+0200\n"
"Last-Translator: Enol P. <enolp@softastur.org>\n"
"Language-Team: \n"
@@ -17,77 +17,90 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 23.04.0\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr ""
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr ""
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr ""
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr ""
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr ""
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr ""
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr ""
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr ""
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr ""
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr ""
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr ""
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr ""
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr ""
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr ""
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2022-07-03 13:56+0400\n"
"Last-Translator: Kheyyam <xxmn77@gmail.com>\n"
"Language-Team: Azerbaijani <kde-i18n-doc@kde.org>\n"
@@ -17,81 +17,97 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 22.04.2\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Bu pəncərə üçün daha çox əməllər"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Tətbiq menyusu"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "İş masasında"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Bütün İş Masalarında"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Kiçiltmək"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Bərpa etmək"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Tam açmaq"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Bağlamaq"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Uyğun kömək"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Kölgəsiz"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Kölgə"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Digər pəncərələrin altında tutmamaq"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Digər pəncərələrin altında tutmaq"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Digər pəncərələrin üzərində tutmamaq"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Digər pəncərələrin üzərində tutmaq"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "More actions for this window"
#~ msgstr "Bu pəncərə üçün daha çox əməllər"
#~ msgid "Menu"
#~ msgstr "Menyu"
@@ -1,93 +1,106 @@
# Copyright (C) YEAR This file is copyright:
# Copyright (C) 2025 This file is copyright:
# This file is distributed under the same license as the kdecoration package.
#
# Mincho Kondarev <mkondarev@yahoo.de>, 2022.
# SPDX-FileCopyrightText: 2022, 2025, 2026 Mincho Kondarev <mkondarev@yahoo.de>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2022-05-20 19:35+0200\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-19 20:09+0100\n"
"Last-Translator: Mincho Kondarev <mkondarev@yahoo.de>\n"
"Language-Team: Bulgarian <kde-i18n-doc@kde.org>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 22.04.0\n"
"X-Generator: Lokalize 26.03.70\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Допълнителни действия за този прозорец"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Меню на прозореца"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Меню на приложение"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "На един работен плот"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "На всички работни плотове"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Минимизиране"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Възстановяване"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Максимизиране"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Затваряне"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Контекстна помощ"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Разгъване"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Сгъване"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Без задържане под другите прозорци"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Задържане под другите прозорците"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Без задържане над другите прозорци"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Задържане над другите прозорци"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "Прозорецът е скрит от Screencast. Натиснете, за да го направите видим."
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Скриване от предаване на екрана"
@@ -1,98 +1,113 @@
# Translation of kdecoration.po to Catalan
# Copyright (C) 2018-2021 This_file_is_part_of_KDE
# Copyright (C) 2018-2026 This_file_is_part_of_KDE
# This file is distributed under the license LGPL version 2.1 or
# version 3 or later versions approved by the membership of KDE e.V.
#
# Josep M. Ferrer <txemaq@gmail.com>, 2018.
# Empar Montoro Martín <montoro_mde@gva.es>, 2019.
# Antoni Bella Pérez <antonibella5@yahoo.com>, 2021.
# SPDX-FileCopyrightText: 2018, 2025, 2026 Josep M. Ferrer <txemaq@gmail.com>
# SPDX-FileCopyrightText: 2019 Empar Montoro Martín <montoro_mde@gva.es>
# SPDX-FileCopyrightText: 2021 Antoni Bella Pérez <antonibella5@yahoo.com>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-05 16:55+0200\n"
"Last-Translator: Antoni Bella Pérez <antonibella5@yahoo.com>\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-13 12:45+0100\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 20.12.3\n"
"X-Generator: Lokalize 25.04.0\n"
"X-Accelerator-Marker: &\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Més accions per a aquesta finestra"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Menú de finestra"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Menú d'aplicacions"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "A un escriptori"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "A tots els escriptoris"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimitza"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Restaura"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximitza"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Tanca"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Ajuda contextual"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Desplega"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Plega"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "No mantinguis per sota de les altres finestres"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Mantén per sota de les altres finestres"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "No mantinguis al damunt de les altres finestres"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Mantén al damunt de les altres finestres"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"La finestra està oculta per als vídeos de captura de pantalla. Premeu per a "
"fer-la visible"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Oculta dels vídeos de captura de pantalla"
@@ -1,98 +1,113 @@
# Translation of kdecoration.po to Catalan (Valencian)
# Copyright (C) 2018-2021 This_file_is_part_of_KDE
# Copyright (C) 2018-2026 This_file_is_part_of_KDE
# This file is distributed under the license LGPL version 2.1 or
# version 3 or later versions approved by the membership of KDE e.V.
#
# Josep M. Ferrer <txemaq@gmail.com>, 2018.
# Empar Montoro Martín <montoro_mde@gva.es>, 2019.
# Antoni Bella Pérez <antonibella5@yahoo.com>, 2021.
# SPDX-FileCopyrightText: 2018, 2025, 2026 Josep M. Ferrer <txemaq@gmail.com>
# SPDX-FileCopyrightText: 2019 Empar Montoro Martín <montoro_mde@gva.es>
# SPDX-FileCopyrightText: 2021 Antoni Bella Pérez <antonibella5@yahoo.com>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-05 16:55+0200\n"
"Last-Translator: Antoni Bella Pérez <antonibella5@yahoo.com>\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-13 12:45+0100\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
"Language: ca@valencia\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 20.12.3\n"
"X-Generator: Lokalize 25.04.0\n"
"X-Accelerator-Marker: &\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Més accions per a esta finestra"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Menú de la finestra"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Menú d'aplicacions"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "A un escriptori"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "A tots els escriptoris"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimitza"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Restaura"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximitza"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Tanca"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Ajuda contextual"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Desplega"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Plega"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "No mantinges per davall de les altres finestres"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Mantín per davall de les altres finestres"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "No mantinges al damunt de les altres finestres"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Mantín al damunt de les altres finestres"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"La finestra està oculta per als vídeos de captura de pantalla. Premeu per a "
"fer-la visible"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Oculta dels vídeos de captura de pantalla"
@@ -1,93 +1,107 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
# Vit Pelcak <vit@pelcak.org>, 2018, 2020, 2021.
# SPDX-FileCopyrightText: 2018, 2020, 2021, 2025, 2026 Vit Pelcak <vit@pelcak.org>
# SPDX-FileCopyrightText: 2026 Libor Filípek <filipek.libor@protonmail.com>
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-13 13:38+0200\n"
"Last-Translator: Vit Pelcak <vpelcak@suse.cz>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-04-06 21:34+0200\n"
"Last-Translator: Libor Filípek <filipek.libor@protonmail.com>\n"
"Language-Team: \n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Lokalize 21.04.0\n"
"X-Generator: Lokalize 25.12.3\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Více činností pro toto okno"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Nabídka Okno"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Nabídka aplikací"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Na pracovní ploše"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Na všech plochách"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimalizovat"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Obnovit"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximalizovat"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Zavřít"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Kontextová nápověda"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Rozbalit"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Sbalit"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Neponechat pod ostatními okny"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Ponechat pod ostatními okny"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Neponechat nad jinými okny"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Podržet nad jinými okny"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "Okno je ve sdílení obrazovky skryté. Stisknutím tlačítka jej zobrazíte"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Skrýt ze sdílení obrazovky"
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2019-05-07 13:23+0100\n"
"Last-Translator: Martin Schlander <mschlander@opensuse.org>\n"
"Language-Team: Danish <kde-i18n-doc@kde.org>\n"
@@ -17,83 +17,96 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 2.0\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Programmenu"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "På et skrivebord"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "På alle skriveborde"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimér"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Genskab"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maksimér"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Luk"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Sammenhængsafhængig hjælp"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Skyg ikke"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Skyg"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, fuzzy, kde-format
#| msgid "Don't keep below"
msgid "Don't keep below other windows"
msgstr "Hold ikke under"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr ""
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, fuzzy, kde-format
#| msgid "Don't keep above"
msgid "Don't keep above other windows"
msgstr "Hold ikke over"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr ""
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "Menu"
#~ msgstr "Menu"
@@ -1,97 +1,117 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
#
# Frederik Schwarzer <schwarzer@kde.org>, 2018.
# Burkhard Lück <lueck@hube-lueck.de>, 2018, 2021.
# Copyright (C) 2025 This_file_is_part_of_KDE
# This file is distributed under the same license as the kdecoration package.
# SPDX-FileCopyrightText: 2018 Frederik Schwarzer <schwarzer@kde.org>
# SPDX-FileCopyrightText: 2018, 2021 Burkhard Lück <lueck@hube-lueck.de>
# SPDX-FileCopyrightText: 2025 Alexander Becker <alex-at-kde-l10n-de@freenet.de>
# SPDX-FileCopyrightText: 2026 Philipp Kiemle <l10n.daphipz@fastmail.de>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-05 05:59+0200\n"
"Last-Translator: Burkhard Lück <lueck@hube-lueck.de>\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-05-11 21:31+0200\n"
"Last-Translator: Philipp Kiemle <l10n.daphipz@fastmail.de>\n"
"Language-Team: German <kde-i18n-de@kde.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 25.12.3\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Weitere Aktionen für dieses Fenster"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Fenstermenü"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Anwendungsmenü"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Auf einer Arbeitsfläche"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Auf allen Arbeitsflächen"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimieren"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Wiederherstellen"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximieren"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Schließen"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Kontexthilfe"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Einrollen rückgängig"
msgstr "Ausrollen"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Einrollen"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Nicht hinter anderen Fenstern halten"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Fenster im Hintergrund halten"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Nicht vor anderen Fenstern halten"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Fenster im Vordergrund halten"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"Das Fenster ist vor der Bildschirmaufzeichnung verborgen. Klicken, um es "
"sichtbar zu machen"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Vor Bildschirmaufzeichnung verbergen"
#~ msgid "More actions for this window"
#~ msgstr "Weitere Aktionen für dieses Fenster"
#~ msgid "Menu"
#~ msgstr "Menü"
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2021-06-14 16:27+0300\n"
"Last-Translator: Stelios <sstavra@gmail.com>\n"
"Language-Team: Greek <kde-i18n-el@kde.org>\n"
@@ -17,81 +17,97 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 20.04.2\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Περισσότερες ενέργειες για αυτό το παράθυρο"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Μενού εφαρμογής"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Σε μία επιφάνεια εργασίας"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Σε όλες τις επιφάνειες εργασίας"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Ελαχιστοποίηση"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Επαναφορά"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Μεγιστοποίηση"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Κλείσιμο"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Βοήθεια στο κείμενο"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Αναίρεση σκίασης"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Σκίαση"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Να μη μείνει κάτω από άλλα παράθυρα"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Να μείνει κάτω από άλλα παράθυρα"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Να μη μείνει πάνω από άλλα παράθυρα"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Να μείνει πάνω από άλλα παράθυρα"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "More actions for this window"
#~ msgstr "Περισσότερες ενέργειες για αυτό το παράθυρο"
#~ msgid "Menu"
#~ msgstr "Μενού"
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2021-06-12 14:20+0100\n"
"Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n"
"Language-Team: British English <kde-l10n-en_gb@kde.org>\n"
@@ -17,81 +17,97 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 21.04.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "More actions for this window"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Application menu"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "On one desktop"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "On all desktops"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimise"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Restore"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximise"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Close"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Context help"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Unshade"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Shade"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Do not keep below other windows"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Keep below other windows"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Do not keep above other windows"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Keep above other windows"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "More actions for this window"
#~ msgstr "More actions for this window"
#~ msgid "Menu"
#~ msgstr "Menu"
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2023-04-28 23:02+0100\n"
"Last-Translator: Oliver Kellogg <olivermkellogg@gmail.com>\n"
"Language-Team: Esperanto <kde-i18n-eo@kde.org>\n"
@@ -16,77 +16,93 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Pliaj agoj por ĉi tiu fenestro"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Aplikaĵa menuo"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Sur unu labortablo"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Sur ĉiuj labortabloj"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimumigi"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Restaŭri"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maksimumigi"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Fermi"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Kunteksta helpo"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Malombrigi"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Ombrigi"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Ne teni sub aliaj fenestroj"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Teni sub aliaj fenestroj"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Ne teni super aliaj fenestroj"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Teni super aliaj fenestroj"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "More actions for this window"
#~ msgstr "Pliaj agoj por ĉi tiu fenestro"
@@ -1,15 +1,15 @@
# Spanish translations for kdecoration.po package.
# Copyright (C) 2018 This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
#
# Copyright (C) 2018-2026 This file is copyright:
# This file is distributed under the same license as the kdecoration package.
# Automatically generated, 2018.
# Eloy Cuadra <ecuadra@eloihr.net>, 2018, 2021.
#
# SPDX-FileCopyrightText: 2018, 2021, 2025, 2026 Eloy Cuadra <ecuadra@eloihr.net>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-05 12:13+0200\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-14 12:19+0100\n"
"Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n"
"Language-Team: Spanish <kde-l10n-es@kde.org>\n"
"Language: es\n"
@@ -17,88 +17,94 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 21.04.0\n"
"X-Generator: Lokalize 25.12.0\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Más acciones para esta ventana"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Menú de la ventana"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Menú de la aplicación"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "En un escritorio"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "En todos los escritorios"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimizar"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Restaurar"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximizar"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Cerrar"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Ayuda de contexto"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Desenrollar"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Enrollar"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "No mantener por debajo de otras ventanas"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Mantener por debajo de otras ventanas"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "No mantener por encima de otras ventanas"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Mantener por encima de otras ventanas"
#~ msgid "Menu"
#~ msgstr "Menú"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"La ventana se oculta en videocapturas de pantalla. Pulse para hacerla "
"visible."
#~ msgid "Keep below"
#~ msgstr "Mantener por debajo"
#~ msgid "Keep above"
#~ msgstr "Mantener por encima"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Ocultar en videocaptura de pantalla"
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2019-11-08 21:30+0200\n"
"Last-Translator: Marek Laane <qiilaq69@gmail.com>\n"
"Language-Team: Estonian <kde-et@lists.linux.ee>\n"
@@ -17,83 +17,96 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 19.08.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Rakenduste menüü"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Ühel töölaual"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Kõigil töölaudadel"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimeeri"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Taasta"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maksimeeri"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Sulge"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Kontekstiabi"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Keri lahti"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Keri kokku"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, fuzzy, kde-format
#| msgid "Don't keep below"
msgid "Don't keep below other windows"
msgstr "Ära hoia teiste all"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr ""
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, fuzzy, kde-format
#| msgid "Don't keep above"
msgid "Don't keep above other windows"
msgstr "Ära hoia teiste peal"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr ""
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "Menu"
#~ msgstr "Menüü"
@@ -1,17 +1,17 @@
# Translation for kdecoration.po to Euskara/Basque (eu).
# Copyright (C) 2018, Free Software Foundation, Inc.
# Copyright (C) 2019-2021, This file is copyright:
# Copyright (C) 2019-2026 This file is copyright:
# This file is distributed under the same license as kdecoration package.
# KDE euskaratzeko proiektuko arduraduna <xalba@ni.eus>.
# SPDX-FileCopyrightText: 2025, 2026 KDE euskaratzeko proiektuaren arduraduna <xalba@ni.eus>
#
# Translators:
# Iñigo Salvador Azurmendi <xalba@ni.eus>, 2018, 2021.
# Iñigo Salvador Azurmendi <xalba@ni.eus>, 2018, 2021, 2025, 2026.
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-07-26 19:57+0200\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-24 15:40+0100\n"
"Last-Translator: Iñigo Salvador Azurmendi <xalba@ni.eus>\n"
"Language-Team: Basque <kde-i18n-eu@kde.org>\n"
"Language: eu\n"
@@ -19,83 +19,99 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 21.04.3\n"
"X-Generator: Lokalize 25.12.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Leiho honetarako ekintza gehiago"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Leihoaren menua"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Aplikazio-menua"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Mahaigain bakarrean"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Mahaigain guztietan"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimizatu"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Lehengoratu"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximizatu"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Itxi"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Testuinguru-laguntza"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Zabaldu"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Bildu"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Ez eutsi beste leihoen azpian"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Eutsi beste leihoen azpian"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Ez eutsi beste leihoen gainean"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Eutsi beste leiho batzuen gainean"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "Leihoa pantaila-grabaziotik ezkutatuta dago. Sakatu ikusgai egiteko"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Ezkutatu pantaila-grabaziotik"
#~ msgid "More actions for this window"
#~ msgstr "Leiho honetarako ekintza gehiago"
#~ msgid "Menu"
#~ msgstr "Menua"
@@ -1,13 +1,13 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
# Tommi Nieminen <translator@legisign.org>, 2018, 2021.
# SPDX-FileCopyrightText: 2018, 2021, 2025 Tommi Nieminen <translator@legisign.org>
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-07 11:01+0300\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2025-07-07 20:57+0300\n"
"Last-Translator: Tommi Nieminen <translator@legisign.org>\n"
"Language-Team: Finnish <kde-i18n-doc@kde.org>\n"
"Language: fi\n"
@@ -15,82 +15,99 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 23.08.5\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Lisää toimintoja tälle ikkunalle"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Ikkunavalikko"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Sovellusvalikko"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Yhdellä työpöydällä"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Kaikilla työpöydillä"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Pienennä"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Palauta"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Suurenna"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Sulje"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Kontekstiohje"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Avaa rullaus"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Rullaa"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Älä pidä muiden ikkunoiden alla"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Pidä muiden ikkunoiden alla"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Älä pidä muiden ikkunoiden yllä"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Pidä muiden ikkunoiden yllä"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "More actions for this window"
#~ msgstr "Lisää toimintoja tälle ikkunalle"
#~ msgid "Menu"
#~ msgstr "Valikko"
@@ -1,98 +1,116 @@
# SPDX-FileCopyrightText: 2021, 2025, 2026 Xavier Besnard <xavier.besnard@kde.org>
# Yoann Laissus <yoann.laissus@gmail.com>, 2018.
# Xavier Besnard <xavier.besnard@kde.org>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-05 13:56+0200\n"
"Last-Translator: Xavier Besnard <xavier.besnard@neuf.fr>\n"
"Language-Team: French <kde-francophone@kde.org>\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-14 08:14+0100\n"
"Last-Translator: Xavier Besnard <xavier.besnard@kde.org>\n"
"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 21.04.0\n"
"X-Environment: kde\n"
"X-Accelerator-Marker: &\n"
"X-Environment: kde\n"
"X-Generator: Lokalize 25.12.1\n"
"X-Text-Markup: kde4\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Plus d'actions pour cette fenêtre"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Menu « Fenêtre »"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Menu d'application"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Sur un seul bureau"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Sur tous les bureaux"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimiser"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Restaurer"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximiser"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Fermer"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Aide contextuelle"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Enlever l'ombrage"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Ombre"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Ne pas conserver en dessous des autres fenêtres"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Conserver en dessous des autres fenêtres"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Ne pas conserver en dessus des autres fenêtres"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Conserver en dessus des autres fenêtres"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"La fenêtre est masquée pour l'enregistrement vidéo. Veuillez appuyer pour la "
"rendre visible."
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Masquer de l'enregistrement vidéo"
#~ msgid "More actions for this window"
#~ msgstr "Plus d'actions pour cette fenêtre"
#~ msgid "Menu"
#~ msgstr "Menu"
@@ -1,97 +1,113 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
# Adrián Chaves (Gallaecio) <adrian@chaves.io>, 2018, 2019, 2023.
# SPDX-FileCopyrightText: 2025 Adrián Chaves (Gallaecio)
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2023-04-28 17:26+0200\n"
"Last-Translator: Adrián Chaves (Gallaecio) <adrian@chaves.io>\n"
"Language-Team: Galician <proxecto@trasno.gal>\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2025-06-19 09:38+0200\n"
"Last-Translator: Adrián Chaves (Gallaecio) <adrian@chaves.gal>\n"
"Language-Team: Proxecto Trasno (proxecto@trasno.gal)\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 23.04.0\n"
"X-Generator: Lokalize 25.04.2\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Máis accións para esta xanela"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Menú de xanela"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Menú das aplicacións"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Nun escritorio"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "En todos os escritorios"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimizar"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Restaurar"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximizar"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Pechar"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Axuda contextual"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Desenrolar"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Enrolar"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Non manter debaixo doutras xanelas"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Manter debaixo doutras xanelas"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Non manter enriba doutras xanelas"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Manter enriba doutras xanelas"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "More actions for this window"
#~ msgstr "Máis accións para esta xanela"
#~ msgid "Menu"
#~ msgstr "Menú"
@@ -1,13 +1,13 @@
# Copyright (C) 2024 This file is copyright:
# This file is distributed under the same license as the kdecoration package.
#
# SPDX-FileCopyrightText: 2024 Yaron Shahrabani <sh.yaron@gmail.com>
# SPDX-FileCopyrightText: 2024, 2025, 2026 Yaron Shahrabani <sh.yaron@gmail.com>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2024-03-19 08:16+0200\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-13 14:59+0200\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"Language-Team: צוות התרגום של KDE ישראל\n"
"Language: he\n"
@@ -16,79 +16,95 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
"n % 10 == 0) ? 2 : 3));\n"
"X-Generator: Lokalize 23.08.5\n"
"X-Generator: Lokalize 25.12.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "פעולות נוספות לחלון הזה"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "תפריט חלון"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "תפריט היישום"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "בשולחן עבודה אחד"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "בכל שולחנות העבודה"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "מזעור"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "שחזור"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "הגדלה"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "סגירה"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "עזרה לפי הקשר"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "ביטול הצללה"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "הצללה"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "לא להסתיר מאחורי חלונות אחרים"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "להסתיר מאחורי חלונות אחרים"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "לא לקדם מעל חלונות אחרים"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "לקדם מעל חלונות אחרים"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "החלון מוסתר מהסרטת מסך. לחיצה תחשוף אותו להסרטה"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "הסתרה מהסרטת מסך"
#~ msgid "More actions for this window"
#~ msgstr "פעולות נוספות לחלון הזה"
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2021-06-29 17:56+0530\n"
"Last-Translator: Raghavendra Kamath <raghu@raghukamath.com>\n"
"Language-Team: kde-hindi\n"
@@ -18,80 +18,96 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"X-Generator: Lokalize 21.04.2\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "इस विंडो के लिए और क्रियाएँ"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "अनुप्रयोग मेन्यू"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "एक डेस्कटॉप पर"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "सभी डेस्कटॉप पर"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "न्यूनतम"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "पुरानी स्तिथी में लाऐं"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "अधिकतम"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "बंद करें"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "प्रासंगिक सहायता"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "छाया हटाएँ"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "छाया"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "अन्य विंडो के नीचे न रखें"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "अन्य विंडो के नीचे रखें"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "अन्य विंडो के ऊपर न रखें"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "अन्य विंडो के ऊपर रखें"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "More actions for this window"
#~ msgstr "इस विंडो के लिए और क्रियाएँ"
#~ msgid "Menu"
#~ msgstr "मेन्यू"
@@ -1,14 +1,14 @@
# Copyright (C) YEAR This file is copyright:
# Copyright (C) 2025 This file is copyright:
# This file is distributed under the same license as the kdecoration package.
#
# Kristóf Kiszel <ulysses@kubuntu.org>, 2019.
# Kristof Kiszel <ulysses@fsf.hu>, 2021.
# SPDX-FileCopyrightText: 2021, 2025-2026 Kristof Kiszel <ulysses@fsf.hu>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-11-24 13:23+0100\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-05-30 21:27+0200\n"
"Last-Translator: Kristof Kiszel <ulysses@fsf.hu>\n"
"Language-Team: Hungarian <kde-l10n-hu@kde.org>\n"
"Language: hu\n"
@@ -16,83 +16,101 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 21.08.3\n"
"X-Generator: Lokalize 26.04.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "További műveletek"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Ablakmenü"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Alkalmazásmenü"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Egy asztalon"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Az összes asztalra"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimalizálás"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Visszaállítás"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximalizálás"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Bezárás"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Helyi súgó"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Világosítás"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Árnyékolás"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Ne maradjon más ablakok alatt"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Maradjon más ablakok alatt"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Ne maradjon más ablakok fölött"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Maradjon más ablakok fölött"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"Az ablak nem jelenik meg a képernyőátjátszásban. Nyomja meg a láthatóvá "
"tételhez"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Elrejtés a képernyőátjátszásból"
#~ msgid "More actions for this window"
#~ msgstr "További műveletek"
#~ msgid "Menu"
#~ msgstr "Menü"
@@ -1,97 +1,113 @@
# Copyright (C) YEAR This file is copyright:
# Copyright (C) 2025 This file is copyright:
# This file is distributed under the same license as the kdecoration package.
#
# Giovanni Sora <g.sora@tiscali.it>, 2019, 2020, 2021.
# SPDX-FileCopyrightText: 2019, 2020, 2021, 2025, 2026 Giovanni Sora <g.sora@tiscali.it>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-11 23:13+0100\n"
"Last-Translator: Giovanni Sora <g.sora@tiscali.it>\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-19 12:34+0100\n"
"Last-Translator: giovanni <g.sora@tiscali.it>\n"
"Language-Team: Interlingua <kde-i18n-doc@kde.org>\n"
"Language: ia\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 2.0\n"
"X-Generator: Lokalize 23.08.5\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Altere actiones per iste fenestra"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Menu de fenestra"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Menu de application"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Sur un scriptorio"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Super omne scriptorios"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimisa"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Restabili"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximiza"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Claude"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Adjuta de contexto"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "De-Umbra"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Umbra"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Non mantene infra altere fenestras"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Mantene infra altere fenestras"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Non mantene supra altere fenestras"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Mantene supra altere fenestras"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "Le fenestra es celate ab Screencast.Pressa per facer lo visibile"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Cela ab Screencast"
#~ msgid "More actions for this window"
#~ msgstr "Altere actiones per iste fenestra"
#~ msgid "Menu"
#~ msgstr "Menu"
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2022-09-27 17:54+0700\n"
"Last-Translator: Wantoyèk <wantoyek@gmail.com>\n"
"Language-Team: Indonesian <kde-i18n-doc@kde.org>\n"
@@ -18,81 +18,97 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 21.12.3\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Aksi selebihnya untuk jendela ini"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Menu aplikasi"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Pada satu desktop"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Pada semua desktop"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimalkan"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Kembalikan"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maksimalkan"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Tutup"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Bantuan konteks"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Tak bertirai"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Tiraikan"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Jangan tetap di bawah jendela lainnya"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Tetap di bawah jendela lainnya"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Jangan tetap di atas jendela lainnya"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Tetap di atas jendela lainnya"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "More actions for this window"
#~ msgstr "Aksi selebihnya untuk jendela ini"
#~ msgid "Menu"
#~ msgstr "Menu"
@@ -1,94 +1,112 @@
# Copyright (C) 2024 This file is copyright:
# This file is distributed under the same license as the kdecoration package.
#
# Sveinn í Felli <sv1@fellsnet.is>, 2023.
# SPDX-FileCopyrightText: 2023, 2025, 2026 Sveinn í Felli <sv1@fellsnet.is>
# SPDX-FileCopyrightText: 2024 Guðmundur Erlingsson <gudmundure@gmail.com>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2024-03-25 13:52+0000\n"
"Last-Translator: Guðmundur Erlingsson <gudmundure@gmail.com>\n"
"Language-Team: Icelandic <kde-i18n-doc@kde.org>\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-15 16:30+0000\n"
"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
"Language-Team: Icelandic\n"
"Language: is\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 23.08.3\n"
"X-Generator: Lokalize 23.08.5\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Fleiri aðgerðir fyrir þennan glugga"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Gluggavalmynd"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Forritavalmynd"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Á einu skjáborði"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Á öllum skjáborðum"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Fela"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Endurheimta"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Fullstækka"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Loka"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Samhengishjálp"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Rúlla niður"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Rúlla upp"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Ekki hafa undir öðrum gluggum"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Hafa undir öðrum gluggum"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Ekki hafa yfir öðrum gluggum"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Hafa yfir öðrum gluggum"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"Glugginn er falinn frá skjávörpun (screencast). Ýttu til að gera hann "
"sýnilegan."
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Fela frá skjávörpun"
#~ msgid "More actions for this window"
#~ msgstr "Fleiri aðgerðir fyrir þennan glugga"
@@ -1,97 +1,115 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the kdecoration package.
# Paolo Zamponi <feus73@gmail.com>, 2018, 2021.
# SPDX-FileCopyrightText: 2018, 2021, 2025, 2026 Paolo Zamponi <feus73@gmail.com>
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-12 08:49+0200\n"
"Last-Translator: Paolo Zamponi <zapaolo@email.it>\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-16 14:56+0100\n"
"Last-Translator: Paolo Zamponi <feus73@gmail.com>\n"
"Language-Team: Italian <kde-i18n-it@kde.org>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 21.04.0\n"
"X-Generator: Lokalize 25.12.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Altre azioni per questa finestra"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Menu Finestra"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Menu dell'applicazione"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Su un desktop"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Su tutti i desktop"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimizza"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Ripristina"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Massimizza"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Chiudi"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Aiuto contestuale"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Srotola"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Arrotola"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Non tenere sotto le altre finestre"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Tieni sotto le altre finestre"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Non tenere sopra le altre finestre"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Tieni sopra le altre finestre"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"La finestra viene nascosta durante la registrazione. Premi per renderla "
"visibile"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Nascondi durante la registrazione"
#~ msgid "More actions for this window"
#~ msgstr "Altre azioni per questa finestra"
#~ msgid "Menu"
#~ msgstr "Menu"
@@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2023-05-18 00:36+0900\n"
"Last-Translator: Ryuichi Yamada <ryuichi_ya220@outlook.jp>\n"
"Language-Team: Japanese <kde-jp@kde.org>\n"
@@ -17,77 +17,93 @@ msgstr ""
"X-Text-Markup: kde4\n"
"X-Generator: Lokalize 23.04.0\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "このウィンドウに対するその他のアクション"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "アプリケーションメニュー"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "一つのデスクトップに表示"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "すべてのデスクトップに表示"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "最小化"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "復元"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "最大化"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "閉じる"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "コンテキストヘルプ"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "シェード解除"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "シェード"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "他のウィンドウの下に保持しない"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "他のウィンドウより下に表示"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "他のウィンドウの上に保持しない"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "他のウィンドウより上に表示"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "More actions for this window"
#~ msgstr "このウィンドウに対するその他のアクション"
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2022-05-21 14:43+0200\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-14 05:28+0100\n"
"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
"Language-Team: Georgian <kde-i18n-doc@kde.org>\n"
"Language: ka\n"
@@ -16,79 +16,95 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Generator: Poedit 3.8\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "მეტი ქმედება ამ ფანჯრისთვის"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "ფანჯრის მენიუ"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "პროგრამის მენიუ"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "1 სამუშაო მაგიდაზე"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "ყველა სამუშაო მაგიდაზე"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "ჩაკეცვა"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "აღდგენა"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "გადიდება"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "დახურვა"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "კონტექსტური დახმარება"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "განჩრდილვა"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "დაჩრდილვა"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "დანარჩენი ფანჯრების ქვემოთ ქონის გამორთვა"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "დანარჩენი ფანჯრების ქვემოთ ქონა"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "დანარჩენი ფანჯრების ზემოთ ქონის გამორთვა"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "დანარჩენი ფანჯრების ზემოთ ქონა"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "ფანჯარა დამალულია ეკრანის გადაცემიდან. დააჭირეთ, რომ ის ხილული გახდეს"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "დამალვა ეკრანის გადაცემიდან"
#~ msgid "More actions for this window"
#~ msgstr "მეტი ქმედება ამ ფანჯრისთვის"
@@ -1,13 +1,13 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
# Shinjo Park <kde@peremen.name>, 2018, 2020, 2021.
# SPDX-FileCopyrightText: 2018, 2020, 2021, 2025, 2026 Shinjo Park <kde@peremen.name>
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-16 21:48+0200\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-02-04 00:24+0100\n"
"Last-Translator: Shinjo Park <kde@peremen.name>\n"
"Language-Team: Korean <kde-kr@kde.org>\n"
"Language: ko\n"
@@ -15,83 +15,99 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Lokalize 20.12.3\n"
"X-Generator: Lokalize 25.08.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "이 창의 더 많은 동작"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "창 메뉴"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "앱 메뉴"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "한 바탕 화면에만"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "모든 바탕 화면에 두기"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "최소화"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "복원"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "최대화"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "닫기"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "문맥 도움말"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "풀어 내리기"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "말아 올리기"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "다른 창 아래에 두지 않기"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "다른 창 아래에 두기"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "다른 창 위에 두지 않기"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "다른 창 위에 두기"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "이 창은 스크린캐스트에서 숨겨져 있습니다. 누르면 표시합니다"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "스크린캐스트에서 숨기기"
#~ msgid "More actions for this window"
#~ msgstr "이 창의 더 많은 동작"
#~ msgid "Menu"
#~ msgstr "메뉴"
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-06-15 22:43+0300\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-19 23:39+0200\n"
"Last-Translator: Moo\n"
"Language-Team: lt\n"
"Language: lt\n"
@@ -17,83 +17,100 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n"
"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n"
"X-Generator: Poedit 3.0\n"
"X-Generator: Poedit 3.8\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Daugiau veiksmų šiam langui"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Lango meniu"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Programos meniu"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Viename darbalaukyje"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Visuose darbalaukiuose"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Suskleisti"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Grąžinti iš suskleidimo"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Išskleisti"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Užverti"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Kontekstinė pagalba"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Rodyti ne tik lango antraštės juostą"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Rodyti tik lango antraštės juostą"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Nelaikyti po kitais langais"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Laikyti po kitais langais"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Nelaikyti virš kitų langų"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Laikyti virš kitų langų"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"Langas yra paslėptas nuo filmavimo. Paspauskite norėdami padaryti jį matomą"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Slėpti, kai filmuojamas ekranas"
#~ msgid "More actions for this window"
#~ msgstr "Daugiau veiksmų šiam langui"
#~ msgid "Menu"
#~ msgstr "Meniu"
@@ -1,13 +1,13 @@
# Copyright (C) 2024 This file is copyright:
# This file is distributed under the same license as the kdecoration package.
#
# SPDX-FileCopyrightText: 2024 Toms Trasūns <toms.trasuns@posteo.net>
# SPDX-FileCopyrightText: 2024, 2025, 2026 Toms Trasūns <toms.trasuns@posteo.net>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2024-01-27 12:55+0200\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-03-09 18:47+0200\n"
"Last-Translator: Toms Trasūns <toms.trasuns@posteo.net>\n"
"Language-Team: Latvian <kde-i18n-doc@kde.org>\n"
"Language: lv\n"
@@ -16,79 +16,95 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
"2);\n"
"X-Generator: Lokalize 23.08.4\n"
"X-Generator: Lokalize 25.12.2\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Vairāk darbību šim logam"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Loga izvēlne"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Programmas izvēlne"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Uz vienas darbvirsmas"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Uz visām darbvirsmām"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimizēt"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Atjaunot"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maksimizēt"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Aizvērt"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Konteksta palīdzība"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Atritināt"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Saritināt"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Neturēt zem citiem logiem"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Turēt zem citiem logiem"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Neturēt virs citiem logiem"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Turēt virs citiem logiem"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "Logs ir paslēpts no loga uzņemšanas. Spiediet, lai padarītu to redzamu"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Paslēpt no uzņemšanas"
#~ msgid "More actions for this window"
#~ msgstr "Vairāk darbību šim logam"
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2018-08-16 09:14+0200\n"
"Last-Translator: Automatically generated\n"
"Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് <smc."
@@ -18,77 +18,90 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr ""
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr ""
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr ""
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr ""
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr ""
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr ""
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr ""
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr ""
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr ""
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr ""
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr ""
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr ""
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr ""
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr ""
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
@@ -4,91 +4,104 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2025-02-22 07:56+0100\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-19 13:53+0100\n"
"Last-Translator: Martin Hansen <mh306602@gmail.com>\n"
"Language-Team: Norwegian Bokmål <l10n-no@lister.huftis.org>\n"
"Language-Team: Norwegian Bokmål <l10n-no@nuug.no>\n"
"Language: nb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 24.12.2\n"
"X-Generator: Lokalize 25.12.1\n"
"X-Environment: kde\n"
"X-Accelerator-Marker: &\n"
"X-Text-Markup: kde4\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Flere handlinger for vinduet"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Vindumeny"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Programmeny"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "På ett skrivebord"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "På alle skrivebordene"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimer"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Gjenopprett"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maksimer"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Lukk"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Emnehjelp"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Rull ned"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Rull opp"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Ikke hold under andre vinduer"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Hold under andre vinduer"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Ikke hold over andre vinduer"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Hold over andre vinduer"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "Vinduet skjules fra skjermdeling. Trykk for å gjøre det synlig"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Skjul fra skjermdeling"
@@ -1,97 +1,114 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
#
# Freek de Kruijf <freekdekruijf@kde.nl>, 2018, 2021.
# SPDX-FileCopyrightText: 2018, 2021, 2025, 2026 Freek de Kruijf <freekdekruijf@kde.nl>
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-05 09:39+0200\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-14 16:32+0100\n"
"Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n"
"Language-Team: Dutch <kde-i18n-nl@kde.org>\n"
"Language-Team: \n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 21.04.0\n"
"X-Generator: Lokalize 25.12.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Meer acties voor dit venster"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Venstermenu"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Menu van toepassing"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Op één bureaublad"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Op alle bureaubladen"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimaliseren"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Herstellen"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximaliseren"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Sluiten"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Contexthelp"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Schaduw weghalen"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Oprollen"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Niet onder andere vensters houden"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Onder andere vensters houden"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Niet boven andere vensters houden"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Boven andere vensters houden"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"Het venster is verborgen voor de schermvideo. Druk om het zichtbaar te maken"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Verbergen voor schermvideo"
#~ msgid "More actions for this window"
#~ msgstr "Meer acties voor dit venster"
#~ msgid "Menu"
#~ msgstr "Menu"
@@ -1,96 +1,108 @@
# Translation of kdecoration to Norwegian Nynorsk
#
# Karl Ove Hufthammer <karl@huftis.org>, 2018, 2022.
# Øystein Steffensen-Alværvik <oysteins.omsetting@protonmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2022-06-19 13:54+0200\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-02-26 18:51+0100\n"
"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
"Language-Team: Norwegian Nynorsk <l10n-no@lister.huftis.org>\n"
"Language-Team: Norwegian Nynorsk <l10n-no@nuug.no>\n"
"Language: nn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 22.04.2\n"
"X-Generator: Lokalize 26.03.70\n"
"X-Environment: kde\n"
"X-Accelerator-Marker: &\n"
"X-Text-Markup: kde4\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Fleire handlingar for vindauget"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Vindaugsmeny"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Programmeny"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "På eitt skrivebord"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "På alle skriveborda"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimer"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Gjenopprett"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maksimer"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Lukk"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Emnehjelp"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Rull ned"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Rull opp"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Ikkje hald under andre vindauge"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Hald under andre vindauge"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Ikkje hald over andre vindauge"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Hald over andre vindauge"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "Vindauget er gøymt frå skjermdeling. Trykk for å gjera det synleg."
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Gøym frå skjermdeling"
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2023-05-19 20:09-0700\n"
"Last-Translator: A S Alam <aalam@satluj.org>\n"
"Language-Team: Punjabi <kde-i18n-doc@kde.org>\n"
@@ -17,77 +17,93 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 23.04.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "ਇਸ ਵਿੰਡੋ ਲਈ ਹੋਰ ਕਾਰਵਾਈਆਂ"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਮੇਨੂ"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "ਇੱਕ ਡੈਸਕਟਾਪ ਉੱਤੇ"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "ਸਾਰੇ ਡੈਸਕਟਾਪਾਂ ਉੱਤੇ"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "ਘੱਟੋ-ਘੱਟ"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "ਬਹਾਲ ਕਰੋ"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "ਵੱਧੋ-ਵੱਧ"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "ਬੰਦ ਕਰੋ"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "ਪ੍ਰਸੰਗ ਮਦਦ"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "ਬਿਨਾਂ-ਸ਼ੇਡ"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "ਸ਼ੇਡ"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "ਹੋਰ ਵਿੰਡੋਆਂ ਦੇ ਹੇਠਾਂ ਨਾ ਰੱਖੋ"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "ਹੋਰ ਵਿੰਡੋਆਂ ਦੇ ਹੇਠਾਂ ਰੱਖੋ"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "ਹੋਰ ਵਿੰਡੋਆਂ ਦੇ ਉੱਤੇ ਨਾ ਰੱਖੋ"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "ਹੋਰ ਵਿੰਡੋਆਂ ਦੇ ਉੱਤੇ ਰੱਖੋ"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "More actions for this window"
#~ msgstr "ਇਸ ਵਿੰਡੋ ਲਈ ਹੋਰ ਕਾਰਵਾਈਆਂ"
@@ -1,97 +1,116 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
# SPDX-FileCopyrightText: 2018, 2021, 2025, 2026 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
#
# Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>, 2018, 2021.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-12-30 13:22+0100\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-18 15:13+0100\n"
"Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>\n"
"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
"Language-Team: pl\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 25.08.2\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Więcej działań dla tego okna"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Menu okna"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Menu programów"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Na pulpicie"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Na wszystkich pulpitach"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Zminimalizuj"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Przywróć"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Zmaksymalizuj"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Zamknij"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Pomoc podręczna"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Rozwiń"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Zwiń"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Nie utrzymuj pod innymi oknami"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Utrzymuj pod innymi oknami"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Nie utrzymuj nad innymi oknami"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Utrzymuj nad innymi oknami"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"To okno jest wykluczone z udostępniania ekranu. Naciśnij, aby je także "
"udostępnić"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Ukryj z udostępnienia ekranu"
#~ msgid "More actions for this window"
#~ msgstr "Więcej działań dla tego okna"
#~ msgid "Menu"
#~ msgstr "Menu"
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2021-05-06 16:43+0100\n"
"Last-Translator: José Nuno Coelho Pires <zepires@gmail.com>\n"
"Language-Team: Portuguese <kde-i18n-pt@kde.org>\n"
@@ -12,77 +12,93 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Mais acções para esta janela"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Menu da aplicação"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Num ecrã"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Em todos os ecrãs"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimizar"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Repor"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximizar"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Fechar"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Ajuda de contexto"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Desenrolar"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Enrolar"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Não manter abaixo das outras janelas"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Manter abaixo das outras janelas"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Não manter acima das outras janelas"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Manter acima das outras janelas"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "More actions for this window"
#~ msgstr "Mais acções para esta janela"
@@ -2,96 +2,115 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Luiz Fernando Ranghetti <elchevive@opensuse.org>, 2018, 2021.
# SPDX-FileCopyrightText: 2025 Guilherme Marçal Silva <guimarcalsilva@gmail.com>
# SPDX-FileCopyrightText: 2026 Marcus Gama <marcus.gama@gmail.com>
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-06 14:05-0300\n"
"Last-Translator: Luiz Fernando Ranghetti <elchevive@opensuse.org>\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-02-20 09:11-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Brazilian Portuguese <kde-i18n-pt_BR@kde.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 20.04.2\n"
"X-Generator: Lokalize 25.12.2\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Mais ações para esta janela"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Menu da janela"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Menu do aplicativo"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Em uma área de trabalho"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Em todas as áreas de trabalho"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimizar"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Restaurar"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximizar"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Fechar"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Ajuda de contexto"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Sem sombras"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Sombrear"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Não manter abaixo de outras janelas"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Manter abaixo de outras janelas"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Não manter acima de outras janelas"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Manter acima de outras janelas"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"A janela está oculta da gravação de tela. Pressione para torná-la visível."
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Ocultar da gravação de tela"
#~ msgid "More actions for this window"
#~ msgstr "Mais ações para esta janela"
#~ msgid "Menu"
#~ msgstr "Menu"
@@ -1,98 +1,116 @@
# Copyright (C) YEAR This file is copyright:
# Copyright (C) 2025 This file is copyright:
# This file is distributed under the same license as the kdecoration package.
# Sergiu Bivol <sergiu@cip.md>, 2020, 2021.
# SPDX-FileCopyrightText: 2020, 2021, 2025, 2026 Sergiu Bivol <sergiu@cip.md>
#
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-06-02 20:19+0100\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-02-08 13:37+0000\n"
"Last-Translator: Sergiu Bivol <sergiu@cip.md>\n"
"Language-Team: Romanian\n"
"Language-Team: Romanian <kde-i18n-ro@kde.org>\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
"20)) ? 1 : 2;\n"
"X-Generator: Lokalize 19.12.3\n"
"X-Generator: Lokalize 25.08.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Acțiuni suplimentare pentru această fereastră"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Meniul ferestrei"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Meniul aplicației"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Pe un birou"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Pe toate birourile"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimizează"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Restabilește"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximizează"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Închide"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Ajutor contextual"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Desfășoară"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Strânge"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Nu ține sub alte ferestre"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Ține sub alte ferestre"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Nu ține deasupra altor ferestre"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Ține deasupra altor ferestre"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"Fereastra e ascunsă din înregistrarea ecranului. Apăsați pentru a o face "
"vizibilă"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Ascunde din difuzarea ecranului"
#~ msgid "More actions for this window"
#~ msgstr "Acțiuni suplimentare pentru această fereastră"
#~ msgid "Menu"
#~ msgstr "Meniu"
@@ -2,13 +2,13 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Alexander Potashev <aspotashev@gmail.com>, 2018.
# Alexander Yavorsky <kekcuha@gmail.com>, 2021.
# SPDX-FileCopyrightText: 2021, 2025, 2026 Alexander Yavorsky <kekcuha@gmail.com>
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-06-08 16:54+0300\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-16 17:44+0300\n"
"Last-Translator: Alexander Yavorsky <kekcuha@gmail.com>\n"
"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
"Language: ru\n"
@@ -17,83 +17,101 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 21.04.1\n"
"X-Generator: Lokalize 25.12.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Дополнительные действия для этого окна"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Меню окна"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Меню приложения"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "На одном рабочем столе"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "На всех рабочих столах"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Свернуть"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Восстановить"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Распахнуть"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Закрыть"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Контекстная справка"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Развернуть из заголовка"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Свернуть в заголовок"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Не удерживать ниже других окон"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Удерживать ниже других окон"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Не удерживать поверх других окон"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Удерживать поверх других окон"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"Это окно скрыто в трансляции экрана. Нажмите, чтобы сделать его видимым в "
"трансляции."
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Скрыть в трансляции экрана"
#~ msgid "More actions for this window"
#~ msgstr "Дополнительные действия для этого окна"
#~ msgid "Menu"
#~ msgstr "Меню"
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2023-09-27 19:49+0530\n"
"Last-Translator: \n"
"Language-Team: Sanskrit <kde-i18n-doc@kde.org>\n"
@@ -18,77 +18,93 @@ msgstr ""
"X-Generator: Poedit 3.3.2\n"
"Plural-Forms: nplurals=2; plural=(n>2);\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "अस्य गवाक्ष कृते अधिकानि क्रियाणि"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr ""
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "अनुप्रयोग सूचि"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "एकस्मिन् कार्यमुखे"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "सर्वेषु कार्यमुखेषु"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "न्यूनतमं करोतु"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "निर्यत्"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "अधिकतमं कुर्वन्तु"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "निमील्यताम्"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "सन्दर्भ सहाय्यम्"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "अनच्छाया"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "छाया"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "अन्येषां गवाक्षानां अधः न स्थापयन्तु"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "अन्येषां गवाक्षानां अधः स्थापयन्तु"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "अन्येषां गवाक्षानां उपरि न स्थापयन्तु"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "अन्येषां गवाक्षानां उपरि स्थापयन्तु"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr ""
#~ msgid "More actions for this window"
#~ msgstr "अस्य गवाक्ष कृते अधिकानि क्रियाणि"
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2021-07-20 17:50+0200\n"
"Last-Translator: Matej Mrenica <matejm98mthw@gmail.com>\n"
"Language-Team: Slovak <kde-i18n-doc@kde.org>\n"
@@ -13,84 +13,100 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 21.07.80\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Lokalize 21.07.80\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Viac akcií pre toto okno"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Ponuka okna"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Aplikačná ponuka"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Na jednej ploche"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Na všetkých plochách"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimalizovať"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Obnoviť"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximalizovať"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Zavrieť"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Kontextový pomocník"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Odtieňovať"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Tieňovať"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Nedržať pod ostatnými oknami"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Držať pod ostatnými oknami"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Nedržať nad ostatnými oknami"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Držať nad ostatnými oknami"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "Okno je skryté pred vysielaním obrazovky. Stlačením ho zviditeľníte"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Skryť pred vysielaním obrazovky"
#~ msgid "More actions for this window"
#~ msgstr "Viac akcií pre toto okno"
#~ msgid "Menu"
#~ msgstr "Ponuka"
@@ -6,93 +6,110 @@ msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-08 08:39+0200\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-14 07:29+0100\n"
"Last-Translator: Matjaž Jeran <matjaz.jeran@amis.net>\n"
"Language-Team: Slovenian <lugos-slo@lugos.si>\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 20.12.2\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n"
"X-Generator: Poedit 3.8\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Več dejavnosti za to okno"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Meni okna"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Meni aplikacije"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Na enem namizju"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Na vseh namizjih"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Strni"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Obnovi"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Razpni"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Zapri"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Kontekstna pomoč"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Odpravi senčenje"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Osenči"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Ne zadržuj pod drugimi okni"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Zadržuj pod drugimi okni"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Ne zadržuj nad drugimi okni"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Zadržuj nad drugimi okni"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"Okno je skrito za video posnetek zaslona. Pritisnite, da ga napravite vidnega"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Skrij za video posnetek zaslona"
#~ msgid "More actions for this window"
#~ msgstr "Več dejavnosti za to okno"
#~ msgid "Menu"
#~ msgstr "Meni"
@@ -1,13 +1,13 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
#
# Stefan Asserhäll <stefan.asserhall@gmail.com>, 2018, 2021.
# SPDX-FileCopyrightText: 2018, 2021, 2025, 2026 Stefan Asserhäll <stefan.asserhall@gmail.com>
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-05 08:09+0200\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-20 20:48+0100\n"
"Last-Translator: Stefan Asserhäll <stefan.asserhall@gmail.com>\n"
"Language-Team: Swedish <kde-i18n-doc@kde.org>\n"
"Language: sv\n"
@@ -15,83 +15,99 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 20.08.1\n"
"X-Generator: Lokalize 25.12.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Fler åtgärder för fönstret"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Fönstermeny"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Programmeny"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "På ett skrivbord"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "På alla skrivbord"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Minimera"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Återställ"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Maximera"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Stäng"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Sammanhangsberoende hjälp"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Rulla ner"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Rulla upp"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Behåll inte under andra fönster"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Behåll under andra fönster"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Behåll inte över andra fönster"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Behåll över andra fönster"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "Fönstret är dolt från skärmsändning. Tryck för att göra det synligt."
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Dölj från skärmsändning"
#~ msgid "More actions for this window"
#~ msgstr "Fler åtgärder för fönstret"
#~ msgid "Menu"
#~ msgstr "Meny"
@@ -1,93 +1,109 @@
# Copyright (C) 2024 This file is copyright:
# This file is distributed under the same license as the kdecoration package.
#
# SPDX-FileCopyrightText: 2024 Kishore G <kishore96@gmail.com>
# SPDX-FileCopyrightText: 2024, 2026 Kishore G <kishore96@gmail.com>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2024-06-30 12:37+0530\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-31 18:15+0530\n"
"Last-Translator: Kishore G <kishore96@gmail.com>\n"
"Language-Team: Tamil <kde-i18n-doc@kde.org>\n"
"Language-Team: Tamil <kde-l10n-ta@kde.org>\n"
"Language: ta\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 24.05.1\n"
"X-Generator: Lokalize 25.12.1\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "இச்சாளரத்திற்கான கூடுதல் செயல்கள்"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "சாளரப் பட்டி"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "செயலி பட்டி"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "ஒரு பணிமேடையில்"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "அனைத்து பணிமேடைகளிலும்"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "ஒதுக்கு"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "மீட்டெடு"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "அதிகபட்ச பெரிதாக்கு"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "மூடு"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "சூழலை பொறுத்த உதவி"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "நிழல்நீக்கு"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "நிழலிடு"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "மற்ற சாளரங்களுக்கு கீழே வைக்க வேண்டாம்"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "மற்ற சாளரங்களுக்கு கீழே வை"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "மற்ற சாளரங்களுக்கு மேலே வைக்க வேண்டாம்"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "மற்ற சாளரங்களுக்கு மேலே வை"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "இச்சாளரம் திரைப்பகிர்விலிருந்து மறைக்கப்பட்டுள்ளது. தெரியம்படி செய்ய அழுத்தவும்"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "திரைப்பகிர்விலிருந்து மறை"
#~ msgid "More actions for this window"
#~ msgstr "இச்சாளரத்திற்கான கூடுதல் செயல்கள்"
@@ -1,93 +1,109 @@
# Copyright (C) 2024 This file is copyright:
# This file is distributed under the same license as the kdecoration package.
#
# SPDX-FileCopyrightText: 2022, 2023, 2024 Emir SARI <emir_sari@icloud.com>
# SPDX-FileCopyrightText: 2022, 2023, 2024, 2025, 2026 Emir SARI <emir_sari@icloud.com>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2024-06-20 13:53+0300\n"
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-13 17:44+0300\n"
"Last-Translator: Emir SARI <emir_sari@îcloud.com>\n"
"Language-Team: Turkish <kde-l10n-tr@kde.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 24.07.70\n"
"X-Generator: Lokalize 25.12.0\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Bu pencere için daha fazla eylem"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Pencere menüsü"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Uygulama menüsü"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "Bir masaüstünde"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "Tüm masaüstlerinde"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Simge Durumuna Küçült"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Eski Haline Döndür"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Ekranı Kapla"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Kapat"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Bağlam Yardımı"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Panjuru Aç"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Panjuru Kapat"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Diğer pencerelerin altında tutma"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Diğer pencerelerin altında tut"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Diğer pencerelerin üzerinde tutma"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Diğer pencerelerin üzerinde tut"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "Pencere, ekran yayınından gizlenmiş. Görünür yapmak için tıklayın."
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Ekran Yayınından Gizle"
#~ msgid "More actions for this window"
#~ msgstr "Bu pencere için daha fazla eylem"
@@ -3,98 +3,115 @@
# This file is distributed under the license LGPL version 2.1 or
# version 3 or later versions approved by the membership of KDE e.V.
#
# Yuri Chornoivan <yurchor@ukr.net>, 2018, 2021.
# Yuri Chornoivan <yurchor@ukr.net>, 2018, 2021, 2025, 2026.
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2021-05-05 08:29+0300\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-14 01:59+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 20.12.0\n"
"X-Generator: Lokalize 23.04.3\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "Додаткові дії для цього вікна"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "Меню вікна"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "Меню програм"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "На одній стільниці"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "На всіх стільницях"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "Мінімізувати"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "Відновити"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "Максимізувати"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "Закрити"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "Контекстна довідка"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "Розгорнути"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "Згорнути"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "Не утримувати під іншими вікнами"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "Утримувати під іншими вікнами"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "Не утримувати над іншими вікнами"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "Утримувати над іншими вікнами"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr ""
"Вікно приховано на записі з екрана. Натисніть тут, щоб зробити його видимим"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "Приховати на записі з екрана"
#~ msgid "More actions for this window"
#~ msgstr "Додаткові дії для цього вікна"
#~ msgid "Menu"
#~ msgstr "Меню"
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdeorg\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2024-04-22 15:58\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
@@ -17,77 +17,90 @@ msgstr ""
"X-Crowdin-File: /kf6-stable/messages/kdecoration/kdecoration.pot\n"
"X-Crowdin-File-ID: 52644\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "此窗口的更多操作"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "窗口菜单"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "应用程序菜单"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "在一个桌面"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "在全部桌面"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "最小化"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "还原"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "最大化"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "关闭"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "相关帮助"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "展开"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "折叠"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "不要保持在其他窗口之下"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "保持在其他窗口之下"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "不要保持在其他窗口之上"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "保持在其他窗口之上"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "此窗口已在录屏中隐藏,点击以显示它。"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "在录屏中隐藏"
@@ -1,98 +1,114 @@
# Copyright (C) YEAR This file is copyright:
# Copyright (C) 2025 This file is copyright:
# This file is distributed under the same license as the kdecoration package.
#
# pan93412 <pan93412@gmail.com>, 2019.
# Kisaragi Hiu <mail@kisaragi-hiu.com>, 2023.
# SPDX-FileCopyrightText: 2023, 2025, 2026 Kisaragi Hiu <mail@kisaragi-hiu.com>
msgid ""
msgstr ""
"Project-Id-Version: kdecoration\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-10 00:40+0000\n"
"PO-Revision-Date: 2023-02-02 23:03+0900\n"
"POT-Creation-Date: 2026-01-13 08:42+0000\n"
"PO-Revision-Date: 2026-01-15 01:05+0900\n"
"Last-Translator: Kisaragi Hiu <mail@kisaragi-hiu.com>\n"
"Language-Team: Traditional Chinese <zh-l10n@linux.org.tw>\n"
"Language-Team: Traditional Chinese <zh-l10n@lists.slat.org>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Lokalize 23.03.70\n"
"X-Generator: Lokalize 26.03.70\n"
#: decorationbutton.cpp:303
#: decorationbutton.cpp:325
#, kde-format
msgid "More actions for this window"
msgstr "這個視窗的更多動作"
msgctxt ""
"@info:tooltip The Name of the menu that appears when you click a window's "
"app icon"
msgid "Window menu"
msgstr "視窗選單"
#: decorationbutton.cpp:305
#: decorationbutton.cpp:327
#, kde-format
msgid "Application menu"
msgstr "應用程式選單"
#: decorationbutton.cpp:308
#: decorationbutton.cpp:330
#, kde-format
msgid "On one desktop"
msgstr "僅在一個桌面上顯示"
#: decorationbutton.cpp:310
#: decorationbutton.cpp:332
#, kde-format
msgid "On all desktops"
msgstr "在所有桌面上顯示"
#: decorationbutton.cpp:312
#: decorationbutton.cpp:334
#, kde-format
msgid "Minimize"
msgstr "最小化"
#: decorationbutton.cpp:315
#: decorationbutton.cpp:337
#, kde-format
msgid "Restore"
msgstr "回復大小"
#: decorationbutton.cpp:317
#: decorationbutton.cpp:339
#, kde-format
msgid "Maximize"
msgstr "最大化"
#: decorationbutton.cpp:319
#: decorationbutton.cpp:341
#, kde-format
msgid "Close"
msgstr "關閉"
#: decorationbutton.cpp:321
#: decorationbutton.cpp:343
#, kde-format
msgid "Context help"
msgstr "內容說明"
#: decorationbutton.cpp:324
#: decorationbutton.cpp:346
#, kde-format
msgid "Unshade"
msgstr "取消收起"
#: decorationbutton.cpp:326
#: decorationbutton.cpp:348
#, kde-format
msgid "Shade"
msgstr "收起"
#: decorationbutton.cpp:329
#: decorationbutton.cpp:351
#, kde-format
msgid "Don't keep below other windows"
msgstr "不要維持在其他視窗之下"
#: decorationbutton.cpp:331
#: decorationbutton.cpp:353
#, kde-format
msgid "Keep below other windows"
msgstr "維持在其他視窗之下"
#: decorationbutton.cpp:334
#: decorationbutton.cpp:356
#, kde-format
msgid "Don't keep above other windows"
msgstr "不要維持在其他視窗之上"
#: decorationbutton.cpp:336
#: decorationbutton.cpp:358
#, kde-format
msgid "Keep above other windows"
msgstr "維持在其他視窗之上"
#: decorationbutton.cpp:361
#, kde-format
msgid "The window is hidden from Screencast. Press to make it visible"
msgstr "視窗已從螢幕錄製中隱藏。點擊來讓它重新出現在螢幕錄製中"
#: decorationbutton.cpp:363
#, kde-format
msgid "Hide from Screencast"
msgstr "從螢幕錄製當中隱藏"
#~ msgid "More actions for this window"
#~ msgstr "這個視窗的更多動作"
#~ msgid "Menu"
#~ msgstr "選單"
@@ -70,6 +70,14 @@ bool DecoratedWindow::isKeepBelow() const
return d->isKeepBelow();
}
bool DecoratedWindow::isExcludedFromCapture() const
{
if (auto impl = dynamic_cast<DecoratedWindowPrivateV4 *>(d.get())) {
return impl->isExcludedFromCapture();
}
return false;
}
bool DecoratedWindow::isCloseable() const
{
return d->isCloseable();
@@ -180,31 +188,6 @@ qreal DecoratedWindow::nextScale() const
return d->nextScale();
}
qreal DecoratedWindow::pixelSize() const
{
return ::KDecoration3::pixelSize(scale());
}
qreal DecoratedWindow::snapToPixelGrid(qreal value) const
{
return ::KDecoration3::snapToPixelGrid(value, d->scale());
}
QPointF DecoratedWindow::snapToPixelGrid(const QPointF &value) const
{
return ::KDecoration3::snapToPixelGrid(value, d->scale());
}
QSizeF DecoratedWindow::snapToPixelGrid(const QSizeF &value) const
{
return ::KDecoration3::snapToPixelGrid(value, d->scale());
}
QRectF DecoratedWindow::snapToPixelGrid(const QRectF &value) const
{
return ::KDecoration3::snapToPixelGrid(value, d->scale());
}
QString DecoratedWindow::applicationMenuServiceName() const
{
if (auto impl = dynamic_cast<DecoratedWindowPrivateV2 *>(d.get())) {
@@ -89,6 +89,10 @@ class KDECORATIONS3_EXPORT DecoratedWindow : public QObject
* DecoratedWindows which are set to be kept below.
**/
Q_PROPERTY(bool keepBelow READ isKeepBelow NOTIFY keepBelowChanged)
/**
* Whether the DecoratedWindow is hidden from Screencasts.
**/
Q_PROPERTY(bool excludeFromCapture READ isExcludedFromCapture NOTIFY excludeFromCaptureChanged)
/**
* Whether the DecoratedWindow can be closed. If this property is @c false a DecorationButton
@@ -201,6 +205,7 @@ public:
bool isMaximizedVertically() const;
bool isKeepAbove() const;
bool isKeepBelow() const;
bool isExcludedFromCapture() const;
bool isCloseable() const;
bool isMaximizeable() const;
@@ -279,35 +284,6 @@ public:
* Returns the next scale this decorated window is going to target.
*/
qreal nextScale() const;
/**
* @returns the logical size of a device pixel with the current scale
* @since 6.3
*/
qreal pixelSize() const;
/**
* snaps the logical geometry value to a fractional logical geometry value
* that aligns to the pixel grid with the current scale factor
* @since 6.3
*/
qreal snapToPixelGrid(qreal value) const;
/**
* snaps the logical geometry value to a fractional logical geometry value
* that aligns to the pixel grid with the current scale factor
* @since 6.3
*/
QPointF snapToPixelGrid(const QPointF &value) const;
/**
* snaps the logical geometry value to a fractional logical geometry value
* that aligns to the pixel grid with the current scale factor
* @since 6.3
*/
QSizeF snapToPixelGrid(const QSizeF &value) const;
/**
* snaps the logical geometry value to a fractional logical geometry value
* that aligns to the pixel grid with the current scale factor
* @since 6.3
*/
QRectF snapToPixelGrid(const QRectF &value) const;
Q_SIGNALS:
void activeChanged(bool);
@@ -320,6 +296,7 @@ Q_SIGNALS:
void maximizedVerticallyChanged(bool);
void keepAboveChanged(bool);
void keepBelowChanged(bool);
void excludeFromCaptureChanged(bool);
void closeableChanged(bool);
void maximizeableChanged(bool);
@@ -31,10 +31,80 @@ DecorationBridge *findBridge(const QVariantList &args)
}
}
BorderRadius::BorderRadius()
{
}
BorderRadius::BorderRadius(qreal radius)
: BorderRadius(radius, radius, radius, radius)
{
}
BorderRadius::BorderRadius(qreal topLeft, qreal topRight, qreal bottomRight, qreal bottomLeft)
: m_topLeft(topLeft)
, m_topRight(topRight)
, m_bottomRight(bottomRight)
, m_bottomLeft(bottomLeft)
{
}
qreal BorderRadius::topLeft() const
{
return m_topLeft;
}
qreal BorderRadius::topRight() const
{
return m_topRight;
}
qreal BorderRadius::bottomRight() const
{
return m_bottomRight;
}
qreal BorderRadius::bottomLeft() const
{
return m_bottomLeft;
}
BorderOutline::BorderOutline()
{
}
BorderOutline::BorderOutline(qreal thickness, const QColor &color, const BorderRadius &radius)
: m_thickness(thickness)
, m_color(color)
, m_radius(radius)
{
}
bool BorderOutline::isNull() const
{
return qFuzzyIsNull(m_thickness);
}
qreal BorderOutline::thickness() const
{
return m_thickness;
}
QColor BorderOutline::color() const
{
return m_color;
}
BorderRadius BorderOutline::radius() const
{
return m_radius;
}
class DecorationStateData : public QSharedData
{
public:
QMarginsF borders;
BorderRadius borderRadius;
BorderOutline borderOutline;
};
DecorationState::DecorationState()
@@ -66,6 +136,50 @@ void DecorationState::setBorders(const QMarginsF &borders)
d->borders = borders;
}
BorderRadius DecorationState::borderRadius() const
{
return d->borderRadius;
}
void DecorationState::setBorderRadius(const BorderRadius &radius)
{
d->borderRadius = radius;
}
BorderOutline DecorationState::borderOutline() const
{
return d->borderOutline;
}
void DecorationState::setBorderOutline(const BorderOutline &outline)
{
d->borderOutline = outline;
}
Positioner::Positioner()
: d(new PositionerData)
{
}
Positioner::Positioner(const Positioner &other)
: d(other.d)
{
}
Positioner::~Positioner()
{
}
QRectF Positioner::anchorRect() const
{
return d->anchorRect;
}
void Positioner::setAnchorRect(const QRectF &rect)
{
d->anchorRect = rect;
}
Decoration::Private::Private(Decoration *deco, const QVariantList &args)
: sectionUnderMouse(Qt::NoSection)
, bridge(findBridge(args))
@@ -279,6 +393,24 @@ void Decoration::setResizeOnlyBorders(const QMarginsF &borders)
}
}
void Decoration::setBorderRadius(const BorderRadius &radius)
{
if (d->next->borderRadius() != radius) {
setState([radius](DecorationState *state) {
state->setBorderRadius(radius);
});
}
}
void Decoration::setBorderOutline(const BorderOutline &outline)
{
if (d->next->borderOutline() != outline) {
setState([outline](DecorationState *state) {
state->setBorderOutline(outline);
});
}
}
void Decoration::setTitleBar(const QRectF &rect)
{
if (d->titleBar != rect) {
@@ -378,6 +510,16 @@ qreal Decoration::resizeOnlyBorderBottom() const
return d->resizeOnlyBorders.bottom();
}
BorderRadius Decoration::borderRadius() const
{
return d->current->borderRadius();
}
BorderOutline Decoration::borderOutline() const
{
return d->current->borderOutline();
}
QSizeF Decoration::size() const
{
const QMarginsF b = d->current->borders();
@@ -444,10 +586,10 @@ void Decoration::hoverMoveEvent(QHoverEvent *event)
const bool hovered = button->isHovered();
const bool contains = button->contains(event->position());
if (!hovered && contains) {
QHoverEvent e(QEvent::HoverEnter, event->position(), event->oldPosF(), event->modifiers());
QHoverEvent e(QEvent::HoverEnter, event->position(), event->globalPosition(), event->oldPosF(), event->modifiers());
QCoreApplication::instance()->sendEvent(button, &e);
} else if (hovered && !contains) {
QHoverEvent e(QEvent::HoverLeave, event->position(), event->oldPosF(), event->modifiers());
QHoverEvent e(QEvent::HoverLeave, event->position(), event->globalPosition(), event->oldPosF(), event->modifiers());
QCoreApplication::instance()->sendEvent(button, &e);
} else if (hovered && contains) {
QCoreApplication::instance()->sendEvent(button, event);
@@ -563,10 +705,30 @@ void Decoration::apply(std::shared_ptr<DecorationState> state)
if (previous->borders() != state->borders()) {
Q_EMIT bordersChanged();
}
if (previous->borderRadius() != state->borderRadius()) {
Q_EMIT borderRadiusChanged();
}
if (previous->borderOutline() != state->borderOutline()) {
Q_EMIT borderOutlineChanged();
}
Q_EMIT currentStateChanged(state);
}
void Decoration::popup(const Positioner &positioner, QMenu *menu)
{
if (auto window = dynamic_cast<DecoratedWindowPrivateV3 *>(d->client->d.get())) {
window->popup(positioner, menu);
}
}
void Decoration::requestToggleExcludeFromCapture()
{
if (auto window = dynamic_cast<DecoratedWindowPrivateV4 *>(d->client->d.get())) {
window->requestToggleExcludeFromCapture();
}
}
} // namespace
#include "moc_decoration.cpp"
@@ -14,6 +14,7 @@
#include <QSharedDataPointer>
class QHoverEvent;
class QMenu;
class QMouseEvent;
class QPainter;
class QWheelEvent;
@@ -29,6 +30,55 @@ class DecoratedWindow;
class DecorationButton;
class DecorationSettings;
class DecorationStateData;
class PositionerData;
/**
* \brief Decoration corner radius.
*/
class KDECORATIONS3_EXPORT BorderRadius
{
public:
BorderRadius();
explicit BorderRadius(qreal radius);
explicit BorderRadius(qreal topLeft, qreal topRight, qreal bottomRight, qreal bottomLeft);
auto operator<=>(const BorderRadius &other) const = default;
qreal topLeft() const;
qreal topRight() const;
qreal bottomRight() const;
qreal bottomLeft() const;
private:
qreal m_topLeft = 0;
qreal m_topRight = 0;
qreal m_bottomRight = 0;
qreal m_bottomLeft = 0;
};
/**
* \brief Decoration border outline.
*/
class KDECORATIONS3_EXPORT BorderOutline
{
public:
BorderOutline();
explicit BorderOutline(qreal thickness, const QColor &color = Qt::transparent, const BorderRadius &radius = BorderRadius());
bool operator==(const BorderOutline &other) const = default;
bool operator!=(const BorderOutline &other) const = default;
bool isNull() const;
qreal thickness() const;
QColor color() const;
BorderRadius radius() const;
private:
qreal m_thickness = 0;
QColor m_color = Qt::transparent;
BorderRadius m_radius;
};
/**
* \brief Decoration state.
@@ -49,10 +99,43 @@ public:
QMarginsF borders() const;
void setBorders(const QMarginsF &margins);
BorderRadius borderRadius() const;
void setBorderRadius(const BorderRadius &radius);
BorderOutline borderOutline() const;
void setBorderOutline(const BorderOutline &outline);
private:
QSharedDataPointer<DecorationStateData> d;
};
/**
* \brief Popup positioner.
*
* The Positioner type provides a way to position a popup relative to the decoration.
*/
class KDECORATIONS3_EXPORT Positioner
{
public:
Positioner();
Positioner(const Positioner &other);
~Positioner();
/**
* Returns the anchor rectangle. The anchor rectangle is specified relative to the top left
* corner of the decoration.
*/
QRectF anchorRect() const;
/**
* Sets the anchor rectangle to \a rect.
*/
void setAnchorRect(const QRectF &rect);
private:
QSharedDataPointer<PositionerData> d;
};
/**
* @brief Base class for the Decoration.
*
@@ -132,6 +215,17 @@ public:
QRectF titleBar() const;
bool isOpaque() const;
/**
* The decoration border radius specifies how much the corners of the decorated window
* should be rounded. The border radius is specified in the logical pixels.
*/
BorderRadius borderRadius() const;
/**
* The outline around the window.
*/
BorderOutline borderOutline() const;
/**
* DecorationShadow for this Decoration. It is recommended that multiple Decorations share
* the same DecorationShadow. E.g one DecorationShadow for all inactive Decorations and one
@@ -224,6 +318,13 @@ public:
*/
void setState(std::function<void(DecorationState *state)> callback);
/**
* Shows the given \a menu at the position specified by the \a positioner.
*
* If the menu is already shown, it will be re-positioned according to the \a positioner.
*/
void popup(const Positioner &positioner, QMenu *menu);
public Q_SLOTS:
void requestClose();
void requestToggleMaximization(Qt::MouseButtons buttons);
@@ -233,6 +334,7 @@ public Q_SLOTS:
void requestToggleShade();
void requestToggleKeepAbove();
void requestToggleKeepBelow();
void requestToggleExcludeFromCapture();
#if KDECORATIONS3_ENABLE_DEPRECATED_SINCE(5, 21)
/**
@@ -279,6 +381,8 @@ Q_SIGNALS:
void damaged(const QRegion &region);
void currentStateChanged(std::shared_ptr<DecorationState> state);
void nextStateChanged(std::shared_ptr<DecorationState> state);
void borderRadiusChanged();
void borderOutlineChanged();
protected:
/**
@@ -303,6 +407,8 @@ protected:
void setTitleBar(const QRectF &rect);
void setOpaque(bool opaque);
void setShadow(const std::shared_ptr<DecorationShadow> &shadow);
void setBorderRadius(const BorderRadius &radius);
void setBorderOutline(const BorderOutline &outline);
virtual void hoverEnterEvent(QHoverEvent *event);
virtual void hoverLeaveEvent(QHoverEvent *event);
@@ -55,4 +55,10 @@ private:
Decoration *q;
};
class PositionerData : public QSharedData
{
public:
QRectF anchorRect;
};
} // namespace
@@ -138,6 +138,28 @@ void DecorationButton::Private::init()
QObject::connect(q, &DecorationButton::clicked, decoration.data(), &Decoration::requestToggleKeepBelow, Qt::QueuedConnection);
QObject::connect(c, &DecoratedWindow::keepBelowChanged, q, &DecorationButton::setChecked);
break;
case DecorationButtonType::ExcludeFromCapture:
QObject::connect(q, &DecorationButton::clicked, decoration.data(), &Decoration::requestToggleExcludeFromCapture, Qt::QueuedConnection);
setCheckable(true);
setChecked(c->isExcludedFromCapture());
QObject::connect(
settings.get(),
&DecorationSettings::alwaysShowExcludeFromCaptureChanged,
q,
[this](bool alwaysShow) {
setVisible(alwaysShow || q->isChecked());
},
Qt::QueuedConnection);
QObject::connect(c, &DecoratedWindow::excludeFromCaptureChanged, q, [this](bool excluded) {
setChecked(excluded);
setVisible(decoration->settings()->isAlwaysShowExcludeFromCapture() || excluded);
});
setVisible(settings->isAlwaysShowExcludeFromCapture() || c->isExcludedFromCapture());
break;
case DecorationButtonType::Shade:
setEnabled(c->isShadeable());
setCheckable(true);
@@ -300,7 +322,7 @@ QString DecorationButton::Private::typeToString(DecorationButtonType type)
{
switch (type) {
case DecorationButtonType::Menu:
return i18n("More actions for this window");
return i18nc("@info:tooltip The Name of the menu that appears when you click a window's app icon", "Window menu");
case DecorationButtonType::ApplicationMenu:
return i18n("Application menu");
case DecorationButtonType::OnAllDesktops:
@@ -334,6 +356,11 @@ QString DecorationButton::Private::typeToString(DecorationButtonType type)
return i18n("Don't keep above other windows");
else
return i18n("Keep above other windows");
case DecorationButtonType::ExcludeFromCapture:
if (this->q->isChecked())
return i18n("The window is hidden from Screencast. Press to make it visible");
else
return i18n("Hide from Screencast");
default:
return QString();
}
@@ -72,6 +72,14 @@ enum class DecorationButtonType {
* The Spacer button provides some space between buttons.
*/
Spacer,
/**
* The ExcludeFromCapture button toggles the DecoratedWindow's visibility
* for screen capture and displays the current exclusion state.
*
* By default this button is only visible when the window is excluded from capture,
* but it can be made always visible via settings.
**/
ExcludeFromCapture,
};
/**
@@ -91,6 +91,14 @@ int DecorationSettings::largeSpacing() const
{
return d->largeSpacing();
}
bool DecorationSettings::isAlwaysShowExcludeFromCapture() const
{
if (auto impl = dynamic_cast<DecorationSettingsPrivateV2 *>(d.get())) {
return impl->isAlwaysShowExcludeFromCapture();
}
return false;
}
}
#include "moc_decorationsettings.cpp"
@@ -48,6 +48,11 @@ class KDECORATIONS3_EXPORT DecorationSettings : public QObject
* DecorationButtonType::Menu.
**/
Q_PROPERTY(bool closeOnDoubleClickOnMenu READ isCloseOnDoubleClickOnMenu NOTIFY closeOnDoubleClickOnMenuChanged)
/**
* Whether the Decoration should always show "Hide from Screencast" icon, even if
* the window is currently not excluded from capture.
**/
Q_PROPERTY(bool alwaysShowExcludeFromCapture READ isAlwaysShowExcludeFromCapture NOTIFY alwaysShowExcludeFromCaptureChanged)
/**
* The suggested ordering of the decoration buttons on the left.
**/
@@ -90,6 +95,7 @@ public:
bool isOnAllDesktopsAvailable() const;
bool isAlphaChannelSupported() const;
bool isCloseOnDoubleClickOnMenu() const;
bool isAlwaysShowExcludeFromCapture() const;
QList<DecorationButtonType> decorationButtonsLeft() const;
QList<DecorationButtonType> decorationButtonsRight() const;
BorderSize borderSize() const;
@@ -109,6 +115,7 @@ Q_SIGNALS:
void onAllDesktopsAvailableChanged(bool);
void alphaChannelSupportedChanged(bool);
void closeOnDoubleClickOnMenuChanged(bool);
void alwaysShowExcludeFromCaptureChanged(bool);
void decorationButtonsLeftChanged(const QList<KDecoration3::DecorationButtonType> &);
void decorationButtonsRightChanged(const QList<KDecoration3::DecorationButtonType> &);
void borderSizeChanged(KDecoration3::BorderSize size);
@@ -57,4 +57,14 @@ DecoratedWindowPrivateV2::DecoratedWindowPrivateV2(DecoratedWindow *client, Deco
: DecoratedWindowPrivate(client, decoration)
{
}
DecoratedWindowPrivateV3::DecoratedWindowPrivateV3(DecoratedWindow *client, Decoration *decoration)
: DecoratedWindowPrivateV2(client, decoration)
{
}
DecoratedWindowPrivateV4::DecoratedWindowPrivateV4(DecoratedWindow *client, Decoration *decoration)
: DecoratedWindowPrivateV3(client, decoration)
{
}
}
@@ -11,6 +11,8 @@
#include <QIcon>
#include <QString>
class QMenu;
//
// W A R N I N G
// -------------
@@ -26,6 +28,7 @@ namespace KDecoration3
{
class Decoration;
class DecoratedWindow;
class Positioner;
class KDECORATIONS_PRIVATE_EXPORT DecoratedWindowPrivate
{
@@ -102,4 +105,23 @@ protected:
explicit DecoratedWindowPrivateV2(DecoratedWindow *client, Decoration *decoration);
};
class KDECORATIONS_PRIVATE_EXPORT DecoratedWindowPrivateV3 : public DecoratedWindowPrivateV2
{
public:
virtual void popup(const Positioner &positioner, QMenu *menu) = 0;
protected:
explicit DecoratedWindowPrivateV3(DecoratedWindow *client, Decoration *decoration);
};
class KDECORATIONS_PRIVATE_EXPORT DecoratedWindowPrivateV4 : public DecoratedWindowPrivateV3
{
public:
virtual bool isExcludedFromCapture() const = 0;
virtual void requestToggleExcludeFromCapture() = 0;
protected:
explicit DecoratedWindowPrivateV4(DecoratedWindow *client, Decoration *decoration);
};
} // namespace
@@ -82,4 +82,8 @@ void DecorationSettingsPrivate::setSmallSpacing(int spacing)
d->smallSpacing = spacing;
}
DecorationSettingsPrivateV2::DecorationSettingsPrivateV2(DecorationSettings *parent)
: DecorationSettingsPrivate(parent)
{
}
}
@@ -57,4 +57,13 @@ private:
class Private;
const std::unique_ptr<Private> d;
};
class KDECORATIONS_PRIVATE_EXPORT DecorationSettingsPrivateV2 : public DecorationSettingsPrivate
{
public:
virtual bool isAlwaysShowExcludeFromCapture() const = 0;
protected:
explicit DecorationSettingsPrivateV2(DecorationSettings *parent);
};
}
Binary file not shown.
@@ -6,3 +6,6 @@ include:
file:
- /gitlab-templates/linux-qt6.yml
- /gitlab-templates/freebsd-qt6.yml
- /gitlab-templates/xml-lint.yml
- /gitlab-templates/yaml-lint.yml
- /gitlab-templates/linux-qt6-next.yml
@@ -1,11 +1,11 @@
Dependencies:
- 'on': ['Linux', 'FreeBSD']
'require':
- 'on': ['Linux', 'FreeBSD']
'require':
'frameworks/extra-cmake-modules': '@same'
'libraries/plasma-wayland-protocols': '@stable'
'third-party/wayland': '@latest'
'third-party/wayland-protocols': '@latest'
Options:
test-before-installing: True
require-passing-tests-on: [ 'Linux', 'FreeBSD' ]
test-before-installing: True
require-passing-tests-on: ['Linux', 'FreeBSD']
@@ -0,0 +1 @@
6.7.2
@@ -1,10 +1,10 @@
cmake_minimum_required(VERSION 3.16)
set(PROJECT_VERSION "6.3.4")
set(PROJECT_VERSION "6.7.2")
project(kwayland VERSION ${PROJECT_VERSION})
set(QT_MIN_VERSION "6.7.0")
set(KF6_MIN_VERSION "6.10.0")
set(QT_MIN_VERSION "6.10.0")
set(KF6_MIN_VERSION "6.26.0")
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -45,28 +45,32 @@ find_package(Qt6Gui ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Private)
find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED Concurrent)
find_package(Qt6WaylandClient ${QT_MIN_VERSION} CONFIG REQUIRED NO_MODULE COMPONENTS Private)
find_package(Wayland 1.15 COMPONENTS Client)
find_package(Qt6WaylandClientPrivate REQUIRED)
if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
find_package(Qt6WaylandClientPrivate ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
endif()
find_package(Wayland 1.24 COMPONENTS Client)
set_package_properties(Wayland PROPERTIES
TYPE REQUIRED
)
find_package(WaylandScanner)
#find_package(WaylandProtocols 1.15)
#set_package_properties(WaylandProtocols PROPERTIES TYPE REQUIRED)
find_package(WaylandProtocols 1.15)
set_package_properties(WaylandProtocols PROPERTIES TYPE REQUIRED)
find_package(EGL)
set_package_properties(EGL PROPERTIES TYPE REQUIRED)
#find_package(PlasmaWaylandProtocols 1.16.0 CONFIG)
#set_package_properties(PlasmaWaylandProtocols PROPERTIES TYPE REQUIRED)
find_package(PlasmaWaylandProtocols 1.21.0 CONFIG)
set_package_properties(PlasmaWaylandProtocols PROPERTIES TYPE REQUIRED)
# adjusting CMAKE_C_FLAGS to get wayland protocols to compile
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu90")
ecm_set_disabled_deprecation_versions(
QT 6.8.1
QT 6.11.0
)
check_cxx_source_compiles("
@@ -84,7 +88,7 @@ int main() {
}" HAVE_MEMFD)
# Subdirectories
#ecm_install_po_files_as_qm(po)
ecm_install_po_files_as_qm(po)
add_subdirectory(src)
@@ -117,6 +121,7 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KWaylandConfig.cmake"
install(EXPORT KWaylandTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KWaylandTargets.cmake NAMESPACE Plasma::)
install(FILES ${kwayland_version_header}
DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KWayland COMPONENT Devel)
@@ -61,7 +61,6 @@ ecm_qt_declare_logging_category(CLIENT_LIB_SRCS
IDENTIFIER KWAYLAND_CLIENT
CATEGORY_NAME kde.plasma.wayland.client
OLD_CATEGORY_NAMES kwayland-client kf.wayland.client
DEFAULT_SEVERITY Critical
DESCRIPTION "KWayland Client Library"
EXPORT KWAYLAND
)
@@ -202,6 +202,16 @@ ConnectionThread::ConnectionThread(QObject *parent)
}
},
Qt::DirectConnection);
d->eventDispatcherConnection = connect(
QCoreApplication::eventDispatcher(),
&QAbstractEventDispatcher::awake,
this,
[this] {
if (d->display) {
wl_display_flush(d->display);
}
},
Qt::DirectConnection);
}
ConnectionThread::ConnectionThread(wl_display *display, QObject *parent)
@@ -23,9 +23,9 @@ public:
void setup(wl_data_device *d);
WaylandPointer<wl_data_device, wl_data_device_release> device;
QScopedPointer<DataOffer> selectionOffer;
std::unique_ptr<DataOffer> selectionOffer;
struct Drag {
QPointer<DataOffer> offer;
std::unique_ptr<DataOffer> offer;
QPointer<Surface> surface;
};
Drag drag;
@@ -45,7 +45,7 @@ private:
static const struct wl_data_device_listener s_listener;
DataDevice *q;
DataOffer *lastOffer = nullptr;
std::unique_ptr<DataOffer> lastOffer;
};
const wl_data_device_listener DataDevice::Private::s_listener =
@@ -61,7 +61,7 @@ void DataDevice::Private::dataOfferCallback(void *data, wl_data_device *dataDevi
void DataDevice::Private::dataOffer(wl_data_offer *id)
{
Q_ASSERT(!lastOffer);
lastOffer = new DataOffer(q, id);
lastOffer.reset(new DataOffer(nullptr, id));
Q_ASSERT(lastOffer->isValid());
}
@@ -82,8 +82,7 @@ void DataDevice::Private::dragEnter(quint32 serial, const QPointer<Surface> &sur
{
drag.surface = surface;
Q_ASSERT(*lastOffer == dataOffer);
drag.offer = lastOffer;
lastOffer = nullptr;
drag.offer = std::move(lastOffer);
Q_EMIT q->dragEntered(serial, relativeToSurface);
}
@@ -96,9 +95,6 @@ void DataDevice::Private::leaveCallback(void *data, wl_data_device *dataDevice)
void DataDevice::Private::dragLeft()
{
if (drag.offer) {
delete drag.offer;
}
drag = Drag();
Q_EMIT q->dragLeft();
}
@@ -132,9 +128,8 @@ void DataDevice::Private::selection(wl_data_offer *id)
return;
}
Q_ASSERT(*lastOffer == id);
selectionOffer.reset(lastOffer);
lastOffer = nullptr;
Q_EMIT q->selectionOffered(selectionOffer.data());
selectionOffer = std::move(lastOffer);
Q_EMIT q->selectionOffered(selectionOffer.get());
}
DataDevice::Private::Private(DataDevice *q)
@@ -158,9 +153,6 @@ DataDevice::DataDevice(QObject *parent)
DataDevice::~DataDevice()
{
if (d->drag.offer) {
delete d->drag.offer;
}
release();
}
@@ -217,7 +209,12 @@ void DataDevice::clearSelection(quint32 serial)
DataOffer *DataDevice::offeredSelection() const
{
return d->selectionOffer.data();
return d->selectionOffer.get();
}
std::unique_ptr<DataOffer> DataDevice::takeOfferedSelection()
{
return std::move(d->selectionOffer);
}
QPointer<Surface> DataDevice::dragSurface() const
@@ -227,7 +224,12 @@ QPointer<Surface> DataDevice::dragSurface() const
DataOffer *DataDevice::dragOffer() const
{
return d->drag.offer;
return d->drag.offer.get();
}
std::unique_ptr<DataOffer> DataDevice::takeDragOffer()
{
return std::move(d->drag.offer);
}
DataDevice::operator wl_data_device *()
@@ -75,6 +75,7 @@ public:
void clearSelection(quint32 serial);
DataOffer *offeredSelection() const;
std::unique_ptr<DataOffer> takeOfferedSelection();
/**
* @returns the currently focused surface during drag'n'drop on this DataDevice.
@@ -86,6 +87,7 @@ public:
* @since 5.22
**/
DataOffer *dragOffer() const;
std::unique_ptr<DataOffer> takeDragOffer();
operator wl_data_device *();
operator wl_data_device *() const;
@@ -10,15 +10,7 @@
#include <QPointF>
#include <QSizeF>
#if __has_include(<linux/input-event-codes.h>)
#include <linux/input-event-codes.h>
#elif __has_include(<linux/input.h>)
#include <linux/input.h>
#else
#define BTN_LEFT 0x110
#define BTN_RIGHT 0x111
#define BTN_MIDDLE 0x112
#endif
#include <wayland-fake-input-client-protocol.h>
@@ -8,7 +8,10 @@
#include "wayland_pointer_p.h"
#include <QDebug>
#include <QGuiApplication>
#include <QMap>
#include <QHash>
#include <QScreen>
#include <wayland-plasma-virtual-desktop-client-protocol.h>
@@ -28,6 +31,7 @@ public:
quint32 rows = 1;
QList<PlasmaVirtualDesktop *> desktops;
QHash<QString, QString> currentDesktops;
inline QList<PlasmaVirtualDesktop *>::const_iterator constFindDesktop(const QString &id);
inline QList<PlasmaVirtualDesktop *>::iterator findDesktop(const QString &id);
@@ -56,6 +60,7 @@ public:
QString id;
QString name;
bool active = false;
quint32 position = 0;
private:
PlasmaVirtualDesktop *q;
@@ -68,6 +73,8 @@ private:
static void deactivatedCallback(void *data, org_kde_plasma_virtual_desktop *org_kde_plasma_virtual_desktop);
static void doneCallback(void *data, org_kde_plasma_virtual_desktop *org_kde_plasma_virtual_desktop);
static void removedCallback(void *data, org_kde_plasma_virtual_desktop *org_kde_plasma_virtual_desktop);
static void positionCallback(void *data, org_kde_plasma_virtual_desktop *org_kde_plasma_virtual_desktop, uint32_t index);
static void outputEnteredCallback(void *data, org_kde_plasma_virtual_desktop *org_kde_plasma_virtual_desktop, const char *output_name);
static const org_kde_plasma_virtual_desktop_listener s_listener;
};
@@ -104,6 +111,9 @@ void PlasmaVirtualDesktopManagement::Private::createdCallback(void *data,
p->desktops.insert(position, vd);
// TODO: emit a lot of desktopMoved?
connect(vd, &PlasmaVirtualDesktop::outputEntered, p->q, [p, vd](const QString &outputName) {
p->currentDesktops[outputName] = vd->id();
});
Q_EMIT p->q->desktopCreated(stringId, position);
}
@@ -163,6 +173,9 @@ void PlasmaVirtualDesktopManagement::Private::setup(org_kde_plasma_virtual_deskt
Q_ASSERT(!plasmavirtualdesktopmanagement);
plasmavirtualdesktopmanagement.setup(arg);
org_kde_plasma_virtual_desktop_management_add_listener(plasmavirtualdesktopmanagement, &s_listener, this);
connect(qGuiApp, &QGuiApplication::screenRemoved, q, [this](QScreen *screen) {
currentDesktops.remove(screen->name());
});
}
PlasmaVirtualDesktopManagement::~PlasmaVirtualDesktopManagement()
@@ -264,8 +277,18 @@ quint32 PlasmaVirtualDesktopManagement::rows() const
return d->rows;
}
PlasmaVirtualDesktop *PlasmaVirtualDesktopManagement::currentDesktopByOutputName(const QString &outputName) const
{
auto it = d->constFindDesktop(d->currentDesktops.value(outputName));
if (it != d->desktops.constEnd()) {
return *it;
}
return nullptr;
}
const org_kde_plasma_virtual_desktop_listener PlasmaVirtualDesktop::Private::s_listener =
{idCallback, nameCallback, activatedCallback, deactivatedCallback, doneCallback, removedCallback};
{idCallback, nameCallback, activatedCallback, deactivatedCallback, doneCallback, removedCallback, positionCallback, outputEnteredCallback};
void PlasmaVirtualDesktop::Private::idCallback(void *data, org_kde_plasma_virtual_desktop *org_kde_plasma_virtual_desktop, const char *id)
{
@@ -311,6 +334,21 @@ void PlasmaVirtualDesktop::Private::removedCallback(void *data, org_kde_plasma_v
Q_EMIT p->q->removed();
}
void PlasmaVirtualDesktop::Private::positionCallback(void *data, org_kde_plasma_virtual_desktop *org_kde_plasma_virtual_desktop, uint32_t index)
{
auto p = reinterpret_cast<PlasmaVirtualDesktop::Private *>(data);
Q_ASSERT(p->plasmavirtualdesktop == org_kde_plasma_virtual_desktop);
p->position = index;
Q_EMIT p->q->positionChanged(index);
}
void PlasmaVirtualDesktop::Private::outputEnteredCallback(void *data, org_kde_plasma_virtual_desktop *org_kde_plasma_virtual_desktop, const char *output_name)
{
auto p = reinterpret_cast<PlasmaVirtualDesktop::Private *>(data);
Q_ASSERT(p->plasmavirtualdesktop == org_kde_plasma_virtual_desktop);
Q_EMIT p->q->outputEntered(QString::fromUtf8(output_name));
}
PlasmaVirtualDesktop::Private::Private(PlasmaVirtualDesktop *q)
: q(q)
{
@@ -371,6 +409,12 @@ void PlasmaVirtualDesktop::requestActivate()
org_kde_plasma_virtual_desktop_request_activate(d->plasmavirtualdesktop);
}
void PlasmaVirtualDesktop::requestEnterOutput(const QString &outputName)
{
Q_ASSERT(isValid());
org_kde_plasma_virtual_desktop_request_enter_output(d->plasmavirtualdesktop, outputName.toUtf8().constData());
}
QString PlasmaVirtualDesktop::id() const
{
return d->id;
@@ -386,6 +430,11 @@ bool PlasmaVirtualDesktop::isActive() const
return d->active;
}
quint32 PlasmaVirtualDesktop::position() const
{
return d->position;
}
}
}
@@ -134,6 +134,12 @@ public:
*/
quint32 rows() const;
/**
* @returns The currently active desktop on an output identified by @p outputName.
* @since 6.7
*/
PlasmaVirtualDesktop *currentDesktopByOutputName(const QString &outputName) const;
operator org_kde_plasma_virtual_desktop_management *();
operator org_kde_plasma_virtual_desktop_management *() const;
@@ -219,6 +225,14 @@ public:
*/
void requestActivate();
/**
* Requests this desktop to be activated on output given by @p outputName.
* The server may or may not decide to consent to the request.
* The server may activate the desktop on other outputs as well.
* @since 6.7
*/
void requestEnterOutput(const QString &outputName);
/**
* @returns The unique id of this desktop. The format of the id is decided by the compositor
*/
@@ -237,6 +251,14 @@ public:
*/
bool isActive() const;
/**
* The position of the virtual desktop in the desktop list. The virtual
* desktop position is in the [0, N - 1] range, where N is the number of
* virtual desktops.
* @since 6.7
*/
quint32 position() const;
operator org_kde_plasma_virtual_desktop *();
operator org_kde_plasma_virtual_desktop *() const;
@@ -252,6 +274,17 @@ Q_SIGNALS:
*/
void deactivated();
/**
* @since 6.7
*/
void positionChanged(quint32 position);
/**
* Emitted when this desktop becomes active on the output corresponding to @p outputName.
* @since 6.7
*/
void outputEntered(const QString &outputName);
/**
* This event is sent after all other properties has been
* sent after binding to the desktop manager object and after any
@@ -148,7 +148,7 @@ static const QMap<Registry::Interface, SuppertedInterfaceData> s_interfaces = {
&Registry::plasmaShellRemoved
}},
{Registry::Interface::PlasmaVirtualDesktopManagement, {
2,
4,
QByteArrayLiteral("org_kde_plasma_virtual_desktop_management"),
&org_kde_plasma_virtual_desktop_management_interface,
&Registry::plasmaVirtualDesktopManagementAnnounced,
@@ -338,6 +338,7 @@ public:
WaylandPointer<wl_registry, wl_registry_destroy> registry;
static const struct wl_callback_listener s_callbackListener;
WaylandPointer<wl_callback, wl_callback_destroy> callback;
WaylandPointer<wl_fixes, wl_fixes_destroy> fixes;
EventQueue *queue = nullptr;
private:
@@ -382,8 +383,12 @@ Registry::~Registry()
void Registry::release()
{
if (d->fixes && d->registry) {
wl_fixes_destroy_registry(d->fixes, d->registry);
}
d->registry.release();
d->callback.release();
d->fixes.release();
}
void Registry::destroy()
@@ -391,6 +396,7 @@ void Registry::destroy()
Q_EMIT registryDestroyed();
d->registry.destroy();
d->callback.destroy();
d->fixes.destroy();
}
void Registry::create(wl_display *display)
@@ -429,6 +435,9 @@ void Registry::setEventQueue(EventQueue *queue)
if (d->callback) {
d->queue->addProxy(d->callback);
}
if (d->fixes) {
d->queue->addProxy(d->fixes);
}
}
EventQueue *Registry::eventQueue()
@@ -486,6 +495,13 @@ static Registry::Interface nameToInterface(const char *interface)
void Registry::Private::handleAnnounce(uint32_t name, const char *interface, uint32_t version)
{
Interface i = nameToInterface(interface);
if (qstrcmp(interface, wl_fixes_interface.name) == 0) {
fixes.setup(reinterpret_cast<wl_fixes *>(wl_registry_bind(registry, name, &wl_fixes_interface, 1)));
if (queue) {
queue->addProxy(fixes);
}
}
if (i == Interface::Unknown) {
qCDebug(KWAYLAND_CLIENT) << "Unknown interface announced: " << interface << "/" << name << "/" << version;
} else {
Binary file not shown.
@@ -0,0 +1,29 @@
# Ignore the following files
*~
*.[oa]
*.diff
*.kate-swp
*.kdev4
.kdev_include_paths
*.kdevelop.pcs
*.moc
*.moc.cpp
*.orig
*.user
.*.swp
.swp.*
Doxyfile
Makefile
avail
random_seed
/build*/
CMakeLists.txt.user*
*.unc-backup*
.cmake/
/.clang-format
/compile_commands.json
.clangd
.idea
.vscode
/cmake-build*
.cache
@@ -6,3 +6,6 @@ include:
file:
- /gitlab-templates/linux-qt6.yml
- /gitlab-templates/freebsd-qt6.yml
- /gitlab-templates/xml-lint.yml
- /gitlab-templates/yaml-lint.yml
- /gitlab-templates/linux-qt6-next.yml
@@ -1,16 +1,17 @@
Dependencies:
- 'on': ['@all']
'require':
- 'on': ['@all']
'require':
'frameworks/extra-cmake-modules': '@latest-kf6'
'frameworks/kconfig' : '@latest-kf6'
'frameworks/kcoreaddons' : '@latest-kf6'
'frameworks/kcrash' : '@latest-kf6'
'frameworks/kdbusaddons' : '@latest-kf6'
'frameworks/kwindowsystem' : '@latest-kf6'
'frameworks/kglobalaccel' : '@latest-kf6'
'frameworks/kio' : '@latest-kf6'
'frameworks/kservice' : '@latest-kf6'
'frameworks/kjobwidgets' : '@latest-kf6'
'frameworks/kconfig': '@latest-kf6'
'frameworks/kcoreaddons': '@latest-kf6'
'frameworks/kcrash': '@latest-kf6'
'frameworks/kdbusaddons': '@latest-kf6'
'frameworks/kwindowsystem': '@latest-kf6'
'frameworks/kglobalaccel': '@latest-kf6'
'frameworks/kio': '@latest-kf6'
'frameworks/kservice': '@latest-kf6'
'frameworks/kjobwidgets': '@latest-kf6'
Options:
require-passing-tests-on: [ 'Linux', 'FreeBSD' ]
require-passing-tests-on: ['Linux', 'FreeBSD']
enable-lsan: True
@@ -0,0 +1 @@
6.7.2
@@ -2,11 +2,10 @@ cmake_minimum_required(VERSION 3.16)
project(kglobalacceld)
set(PROJECT_VERSION "6.0.0")
set(PROJECT_VERSION_MAJOR 6)
set(PROJECT_VERSION "6.7.2")
set(QT_MIN_VERSION "6.6.0")
set(KF6_MIN_VERSION "6.0.0")
set(QT_MIN_VERSION "6.10.0")
set(KF6_MIN_VERSION "6.26.0")
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -33,23 +32,17 @@ include(ECMDeprecationSettings)
include(KDEClangFormat)
include(ECMAddTests)
# When kglobalacceld was still in frameworks/kglobalaccel and KF5-time deprecated API was dropped there,
# some deprecated stuff in kglobalacceld was kept: "needs more consideration since it might break older consumers"
# Early build setups for Qt6/KF6-based software externally set EXCLUDE_DEPRECATED_BEFORE_AND_AT to 5.99,
# and accidentally for any repos, not just KF modules, so also with other version schemes.
# Also should defaults be set by the software itself.
# While the deprecated stuff is still around and waiting for being sorted out, set ourselves the
# expected czrrent default value for EXCLUDE_DEPRECATED_BEFORE_AND_AT, to achieve consistent builds (and set of available API).
# Note the deprecated API also still uses the KF version scheme, which works for now while no additional API is deprecated.
# TODO: sort out where KF5-time deprecated API still is needed and undeprecate it, remove the rest, then return to using 0 here
if (TRUE)
set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 5.99.0 CACHE STRING "Control the range of deprecated API excluded from the build [default=5.99.0].")
else() # normal
# KGlobalAccelD contains functions that are marked as deprecated.
# These are part of the public DBus API and are used by older applications
# Therefore we must not exclude those by default
set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].")
endif()
find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED DBus Gui Widgets)
if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")
find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
endif()
find_package(KF6Config ${KF6_MIN_VERSION} REQUIRED)
find_package(KF6CoreAddons ${KF6_MIN_VERSION} REQUIRED)
find_package(KF6Crash ${KF6_MIN_VERSION} REQUIRED)
@@ -85,8 +78,8 @@ ecm_setup_version(PROJECT VARIABLE_PREFIX KGLOBALACCELD
SOVERSION 0)
ecm_set_disabled_deprecation_versions(
QT 6.6.0
KF 5.240.0
QT 6.11.0
KF 6.23.0
)
add_subdirectory(src)
@@ -116,6 +109,12 @@ install(EXPORT KGlobalAccelDTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FIL
install(FILES ${kglobalaccel_version_header}
DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KGlobalAccel COMPONENT Devel)
ecm_qt_install_logging_categories(
EXPORT KGLOBALACCELD
FILE kglobalacceld.categories
DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
)
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
@@ -0,0 +1,77 @@
# kglobalacceld
kglobalacceld is the daemon component responsible for global shortcut
registration and activation in KDE software.
### Shortcut allowlist
In some scenarios (for example lock screen, login screen, or kiosk-like setups)
you may want to allow only a specific set of global shortcuts to be activated,
while preventing all other global shortcuts from triggering.
kglobalacceld supports an **allowlist** mode for this.
#### How it works
- When allowlist mode is **disabled**, all registered global shortcuts behave
normally.
- When allowlist mode is **enabled**, **only** shortcuts explicitly listed in
the allowlist are permitted to trigger.
The check is done using the pair:
- the shortcuts **component name** (the component owning the shortcut; for
example `kwin`, `kaccess`, etc.)
- the shortcuts **shortcut name** (the action/shortcut identifier within that
component)
If a shortcut is not present in the allowlist, it will be ignored and will not
emit/trigger its action.
#### Configuration file and keys
The allowlist is configured in `~/.config/kglobalaccelrc`.
- Group `[General]`
- `useAllowList=true|false`
- Group `[AllowedShortcuts]`
- Keys are **component names**.
- Values are a comma-separated **list of shortcut names** for that component.
#### Example
Allow only two shortcuts owned by the `kwin` component, and the default shortcut
that launches System Settings:
```ini
[General]
useAllowList=true
[AllowedShortcuts]
kwin=ShowDesktop,Walk Through Windows
systemsettings.desktop=_launch
```
Disable allowlist mode entirely:
```ini
[General]
useAllowList=false
```
It may be helpful to reference the component and shortcut names from existing
shortcuts you have configured in your system by examining
`~/.config/kglobalshortcutsrc`.
## Development
_TODO: document logging, debugging, code layout, and contribution notes._
## Testing
_TODO: document how to run tests._
## License
See the files in [LICENSES/](LICENSES/) for details.
@@ -1,3 +1,9 @@
find_package(Qt6Test REQUIRED)
ecm_add_test(migrateconfigtest.cpp LINK_LIBRARIES Qt::Test KF6::ConfigCore KF6::Service KGlobalAccelD)
add_library(dummyplugin OBJECT dummy.cpp)
target_compile_definitions(dummyplugin PRIVATE QT_STATICPLUGIN)
target_link_libraries(dummyplugin K::KGlobalAccelD)
ecm_add_test(migrateconfigtest.cpp LINK_LIBRARIES Qt::Test KF6::ConfigCore KF6::Service KGlobalAccelD)
ecm_add_test(shortcutstest.cpp LINK_LIBRARIES Qt::Test KF6::ConfigCore KF6::Service KGlobalAccelD dummyplugin)
ecm_add_test(allowlisttest.cpp LINK_LIBRARIES Qt::Test KF6::ConfigCore KF6::Service KGlobalAccelD dummyplugin)
@@ -0,0 +1,196 @@
/*
SPDX-FileCopyrightText: 2026 Kristen McWilliam <kristen@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
/** @file
* Autotests for allow-list functionality.
*
* Verifies that when the allow-list is enabled, only shortcuts
* specified in the allow-list are activated.
*/
#include "dummy.h"
#include "kglobalacceld.h"
#include <QDBusConnection>
#include <QPluginLoader>
#include <QSignalSpy>
#include <QStandardPaths>
#include <QTest>
Q_IMPORT_PLUGIN(KGlobalAccelImpl)
/**
* Timeout for waiting for signals in tests (in milliseconds).
*/
constexpr int SIGNAL_TIMEOUT_MS = 150;
class AllowListTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void initTestCase();
void testAllowList_data();
void testAllowList();
void testAllowListMultipleActions();
};
void AllowListTest::initTestCase()
{
QStandardPaths::setTestModeEnabled(true);
QCoreApplication::setApplicationName(QStringLiteral("allowlisttest"));
QCoreApplication::setOrganizationName(QStringLiteral("kde"));
qputenv("KGLOBALACCELD_PLATFORM", "dummy");
}
void AllowListTest::testAllowList_data()
{
QTest::addColumn<bool>("useAllowList");
QTest::addColumn<bool>("listAction");
QTest::addColumn<bool>("expectTriggered");
QTest::newRow("allowlist disabled") << false << false << true;
QTest::newRow("allowlist enabled, not listed") << true << false << false;
QTest::newRow("allowlist enabled, listed") << true << true << true;
}
void AllowListTest::testAllowList()
{
QFETCH(bool, useAllowList);
QFETCH(bool, listAction);
QFETCH(bool, expectTriggered);
const QString componentName = qApp->applicationName();
const QString actionName = QStringLiteral("AllowListTestAction");
// Prepare clean config dir and allow-list config before daemon init so it is loaded on startup.
const QString configDir = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
QDir().mkpath(configDir);
QFile::remove(configDir + QLatin1String("/kglobalaccelrc"));
QFile::remove(configDir + QLatin1String("/kglobalshortcutsrc"));
QFile config(configDir + QLatin1String("/kglobalaccelrc"));
QVERIFY(config.open(QIODevice::WriteOnly | QIODevice::Truncate));
QTextStream stream(&config);
stream << "[General]\n";
stream << "useAllowList=" << (useAllowList ? "true" : "false") << "\n";
if (useAllowList) {
stream << "[AllowedShortcuts]\n";
if (listAction) {
stream << componentName << '=' << actionName << "\n";
}
}
config.close();
// Ensure the DBus name is free before each init attempt.
QDBusConnection::sessionBus().unregisterService(QStringLiteral("org.kde.kglobalaccel"));
auto daemon = std::make_unique<KGlobalAccelD>();
QVERIFY(daemon->init());
KGlobalAccelImpl *interface = KGlobalAccelImpl::instance();
QVERIFY(interface);
auto action = std::make_unique<QAction>();
action->setObjectName(actionName);
const QKeySequence shortcut(Qt::CTRL | Qt::Key_L);
QVERIFY(KGlobalAccel::setGlobalShortcut(action.get(), shortcut));
QSignalSpy spy(action.get(), &QAction::triggered);
interface->checkKeyEvent(shortcut[0].toCombined(), ShortcutKeyState::Pressed);
interface->checkKeyEvent(shortcut[0].toCombined(), ShortcutKeyState::Released);
if (expectTriggered) {
QVERIFY(spy.wait());
QCOMPARE(spy.count(), 1);
} else {
QVERIFY(!spy.wait(SIGNAL_TIMEOUT_MS));
QCOMPARE(spy.count(), 0);
}
KGlobalAccel::self()->removeAllShortcuts(action.get());
daemon.reset();
QDBusConnection::sessionBus().unregisterService(QStringLiteral("org.kde.kglobalaccel"));
}
void AllowListTest::testAllowListMultipleActions()
{
const QString componentName = qApp->applicationName();
const QStringList allowedActions = {QStringLiteral("AllowListTestActionOne"), QStringLiteral("AllowListTestActionTwo")};
const QString disallowedAction = QStringLiteral("AllowListTestActionThree");
const QString configDir = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
QDir().mkpath(configDir);
QFile::remove(configDir + QLatin1String("/kglobalaccelrc"));
QFile::remove(configDir + QLatin1String("/kglobalshortcutsrc"));
QFile config(configDir + QLatin1String("/kglobalaccelrc"));
QVERIFY(config.open(QIODevice::WriteOnly | QIODevice::Truncate));
QTextStream stream(&config);
stream << "[General]\n";
stream << "useAllowList=true\n";
stream << "[AllowedShortcuts]\n";
stream << componentName << '=' << allowedActions.join(QLatin1Char(',')) << "\n";
config.close();
QDBusConnection::sessionBus().unregisterService(QStringLiteral("org.kde.kglobalaccel"));
auto daemon = std::make_unique<KGlobalAccelD>();
QVERIFY(daemon->init());
KGlobalAccelImpl *interface = KGlobalAccelImpl::instance();
QVERIFY(interface);
auto actionOne = std::make_unique<QAction>();
actionOne->setObjectName(allowedActions.at(0));
auto actionTwo = std::make_unique<QAction>();
actionTwo->setObjectName(allowedActions.at(1));
auto actionThree = std::make_unique<QAction>();
actionThree->setObjectName(disallowedAction);
// Use layout-independent keys to avoid CI flakiness on varying keymaps.
const QKeySequence shortcutOne(Qt::CTRL | Qt::Key_A);
const QKeySequence shortcutTwo(Qt::CTRL | Qt::Key_B);
const QKeySequence shortcutThree(Qt::CTRL | Qt::Key_C);
QVERIFY(KGlobalAccel::setGlobalShortcut(actionOne.get(), shortcutOne));
QVERIFY(KGlobalAccel::setGlobalShortcut(actionTwo.get(), shortcutTwo));
QVERIFY(KGlobalAccel::setGlobalShortcut(actionThree.get(), shortcutThree));
QSignalSpy spyOne(actionOne.get(), &QAction::triggered);
QSignalSpy spyTwo(actionTwo.get(), &QAction::triggered);
QSignalSpy spyThree(actionThree.get(), &QAction::triggered);
const auto triggerShortcut = [interface](const QKeySequence &sequence) {
interface->checkKeyEvent(sequence[0].toCombined(), ShortcutKeyState::Pressed);
interface->checkKeyEvent(sequence[0].toCombined(), ShortcutKeyState::Released);
};
// Allow event loop to register shortcuts before injecting key events.
QCoreApplication::processEvents();
triggerShortcut(shortcutOne);
triggerShortcut(shortcutTwo);
triggerShortcut(shortcutThree);
QTRY_COMPARE_WITH_TIMEOUT(spyOne.count(), 1, 2000);
QTRY_COMPARE_WITH_TIMEOUT(spyTwo.count(), 1, 2000);
QVERIFY(!spyThree.wait(SIGNAL_TIMEOUT_MS));
QCOMPARE(spyThree.count(), 0);
KGlobalAccel::self()->removeAllShortcuts(actionOne.get());
KGlobalAccel::self()->removeAllShortcuts(actionTwo.get());
KGlobalAccel::self()->removeAllShortcuts(actionThree.get());
daemon.reset();
QDBusConnection::sessionBus().unregisterService(QStringLiteral("org.kde.kglobalaccel"));
}
QTEST_MAIN(AllowListTest)
#include "allowlisttest.moc"
@@ -0,0 +1,52 @@
/*
SPDX-FileCopyrightText: 2001, 2002 Ellis Whitehead <ellis@kde.org>
SPDX-FileCopyrightText: 2013 Martin Gräßlin <mgraesslin@kde.org>
SPDX-FileCopyrightText: 2024 Yifan Zhu <fanzhuyifan@gmail.com>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include "dummy.h"
//----------------------------------------------------
static KGlobalAccelImpl *s_interface = nullptr;
KGlobalAccelImpl *KGlobalAccelImpl::instance()
{
return s_interface;
}
KGlobalAccelImpl::KGlobalAccelImpl(QObject *parent)
: KGlobalAccelInterface(parent)
{
s_interface = this;
}
KGlobalAccelImpl::~KGlobalAccelImpl()
{
}
bool KGlobalAccelImpl::grabKey(int keyQt, bool grab)
{
Q_UNUSED(keyQt);
Q_UNUSED(grab);
return true;
}
bool KGlobalAccelImpl::checkKeyEvent(int keyQt, ShortcutKeyState state)
{
return keyEvent(keyQt, state);
}
bool KGlobalAccelImpl::checkPointerPressed(Qt::MouseButtons button)
{
return pointerPressed(button);
}
bool KGlobalAccelImpl::checkAxisTriggered(int axis)
{
return axisTriggered(axis);
}
#include "moc_dummy.cpp"
@@ -0,0 +1,53 @@
/*
SPDX-FileCopyrightText: 2001, 2002 Ellis Whitehead <ellis@kde.org>
SPDX-FileCopyrightText: 2024 Yifan Zhu <fanzhuyifan@gmail.com>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#ifndef DUMMY_H
#define DUMMY_H
#include "kglobalaccel_interface.h"
#include <QObject>
/**
* @internal
*
* The KGlobalAccel private class handles grabbing of global keys,
* and notification of when these keys are pressed.
*/
class KGlobalAccelImpl : public KGlobalAccelInterface
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.kde.kglobalaccel5.KGlobalAccelInterface" FILE "dummy.json")
Q_INTERFACES(KGlobalAccelInterface)
public:
KGlobalAccelImpl(QObject *parent = nullptr);
~KGlobalAccelImpl() override;
/**
* This function registers or unregisters a certain key for global capture,
* depending on \b grab.
*
* Before destruction, every grabbed key will be released, so this
* object does not need to do any tracking.
*
* \param key the Qt keycode to grab or release.
* \param grab true to grab they key, false to release the key.
*
* \return true if successful, otherwise false.
*/
bool grabKey(int key, bool grab) override;
static KGlobalAccelImpl *instance();
public Q_SLOTS:
bool checkKeyEvent(int keyQt, ShortcutKeyState state);
bool checkPointerPressed(Qt::MouseButtons button);
bool checkAxisTriggered(int axis);
};
#endif // DUMMY_H
@@ -0,0 +1,3 @@
{
"platforms": ["dummy"]
}
@@ -0,0 +1,243 @@
/*
SPDX-FileCopyrightText: 2024 Yifan Zhu <fanzhuyifan@gmail.com>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include <QTest>
#include "component.h"
#include "dummy.h"
#include "kglobalacceld.h"
#include <QFile>
#include <QPluginLoader>
#include <QSignalSpy>
#include <QStandardPaths>
Q_IMPORT_PLUGIN(KGlobalAccelImpl)
class ShortcutsTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void initTestCase();
void testShortcuts_data();
void testShortcuts();
void testSerialization();
void testContestedKeys();
private:
std::unique_ptr<KGlobalAccelD> m_globalacceld;
KGlobalAccelImpl *m_interface; // implementation of KGlobalAccelInterface * for this test
KGlobalAccel *m_globalaccel;
};
void ShortcutsTest::initTestCase()
{
QStandardPaths::setTestModeEnabled(true);
if (const QString filePath = QStandardPaths::locate(QStandardPaths::ConfigLocation, QStringLiteral("kglobalshortcutsrc")); !filePath.isEmpty()) {
QFile::remove(filePath);
}
qputenv("KGLOBALACCELD_PLATFORM", "dummy");
m_globalacceld = std::make_unique<KGlobalAccelD>();
QVERIFY(m_globalacceld->init());
m_interface = KGlobalAccelImpl::instance();
QVERIFY(m_interface);
m_globalaccel = KGlobalAccel::self();
QVERIFY(m_globalaccel);
}
typedef std::pair<QEvent::Type, int> Event;
typedef QList<Event> Events;
void ShortcutsTest::testShortcuts_data()
{
QTest::addColumn<QKeySequence>("shortcut");
QTest::addColumn<Events>("events");
QTest::addColumn<bool>("triggered");
// make sure all pressed modifiers are released
QTest::newRow("no mod") << QKeySequence(Qt::Key_A)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_A) << std::make_pair(QEvent::KeyRelease, Qt::Key_A)) << true;
QTest::newRow("mod+key trigger") << QKeySequence(Qt::ControlModifier | Qt::Key_P)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Control)
<< std::make_pair(QEvent::KeyPress, (Qt::ControlModifier | Qt::Key_P).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::ControlModifier | Qt::Key_P).toCombined())
<< std::make_pair(QEvent::KeyRelease, Qt::Key_Control))
<< true;
QTest::newRow("mods+key trigger") << QKeySequence(Qt::ControlModifier | Qt::AltModifier | Qt::Key_M)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Control)
<< std::make_pair(QEvent::KeyPress, (Qt::Key_Alt | Qt::ControlModifier).toCombined())
<< std::make_pair(QEvent::KeyPress, (Qt::ControlModifier | Qt::AltModifier | Qt::Key_M).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::ControlModifier | Qt::AltModifier | Qt::Key_M).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::Key_Alt | Qt::ControlModifier).toCombined())
<< std::make_pair(QEvent::KeyRelease, Qt::Key_Control))
<< true;
QTest::newRow("mods+key does not trigger mod+key")
<< QKeySequence(Qt::ControlModifier | Qt::Key_P)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Control) << std::make_pair(QEvent::KeyPress, (Qt::Key_Alt | Qt::ControlModifier).toCombined())
<< std::make_pair(QEvent::KeyPress, (Qt::ControlModifier | Qt::AltModifier | Qt::Key_P).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::ControlModifier | Qt::AltModifier | Qt::Key_P).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::Key_Alt | Qt::ControlModifier).toCombined())
<< std::make_pair(QEvent::KeyRelease, Qt::Key_Control))
<< false;
QTest::newRow("mod+key does not trigger mods+key")
<< QKeySequence(Qt::ControlModifier | Qt::AltModifier | Qt::Key_M)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Control) << std::make_pair(QEvent::KeyPress, (Qt::ControlModifier | Qt::Key_M).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::ControlModifier | Qt::Key_M).toCombined())
<< std::make_pair(QEvent::KeyRelease, Qt::Key_Control))
<< false;
QTest::newRow("modifier-only single mod") << QKeySequence(
Qt::ControlModifier) << (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Control) << std::make_pair(QEvent::KeyRelease, Qt::Key_Control))
<< true;
QTest::newRow("mod+key does not trigger modifier-only single mod")
<< QKeySequence(Qt::ControlModifier)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Control) << std::make_pair(QEvent::KeyPress, (Qt::ControlModifier | Qt::Key_P).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::ControlModifier | Qt::Key_P).toCombined())
<< std::make_pair(QEvent::KeyRelease, Qt::Key_Control))
<< false;
QTest::newRow("modifier-only multiple mods") << QKeySequence(Qt::ControlModifier | Qt::AltModifier)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Control)
<< std::make_pair(QEvent::KeyPress, (Qt::ControlModifier | Qt::Key_Alt).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::ControlModifier | Qt::Key_Alt).toCombined())
<< std::make_pair(QEvent::KeyRelease, Qt::Key_Control))
<< true;
QTest::newRow("modifier-only multiple mods trigger when released out of order")
<< QKeySequence(Qt::ControlModifier | Qt::AltModifier)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Alt) << std::make_pair(QEvent::KeyPress, (Qt::AltModifier | Qt::Key_Control).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::ControlModifier | Qt::Key_Alt).toCombined())
<< std::make_pair(QEvent::KeyRelease, Qt::Key_Control))
<< true;
QTest::newRow("modifier-only multiple mods does not trigger modifier-only single mod")
<< QKeySequence(Qt::ControlModifier)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Control) << std::make_pair(QEvent::KeyPress, (Qt::ControlModifier | Qt::Key_Alt).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::ControlModifier | Qt::Key_Alt).toCombined())
<< std::make_pair(QEvent::KeyRelease, Qt::Key_Control))
<< false;
QTest::newRow("modifier-only multiple mods trigger when part of the sequence")
<< QKeySequence(Qt::ControlModifier | Qt::AltModifier)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Control)
<< std::make_pair(QEvent::KeyPress, (Qt::ControlModifier | Qt::Key_Shift).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::ControlModifier | Qt::Key_Shift).toCombined())
<< std::make_pair(QEvent::KeyPress, (Qt::ControlModifier | Qt::Key_Alt).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::AltModifier | Qt::Key_Control).toCombined()) << std::make_pair(QEvent::KeyRelease, Qt::Key_Alt))
<< true;
QTest::newRow("modifier-only multiple mods trigger when any mod is released")
<< QKeySequence(Qt::ControlModifier | Qt::ShiftModifier)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Control)
<< std::make_pair(QEvent::KeyPress, (Qt::ControlModifier | Qt::Key_Shift).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::ControlModifier | Qt::Key_Shift).toCombined())
<< std::make_pair(QEvent::KeyPress, (Qt::ControlModifier | Qt::Key_Alt).toCombined())
<< std::make_pair(QEvent::KeyRelease, (Qt::AltModifier | Qt::Key_Control).toCombined()) << std::make_pair(QEvent::KeyRelease, Qt::Key_Alt))
<< true;
QTest::newRow("mod+pointer does not trigger modifier-only single mod")
<< QKeySequence(Qt::ControlModifier)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Control) << std::make_pair(QEvent::MouseButtonPress, Qt::LeftButton)
<< std::make_pair(QEvent::KeyRelease, Qt::Key_Control))
<< false;
QTest::newRow("mod+wheel does not trigger modifier-only single mod")
<< QKeySequence(Qt::ControlModifier)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::Key_Control) << std::make_pair(QEvent::Wheel, 0)
<< std::make_pair(QEvent::KeyRelease, Qt::Key_Control))
<< false;
QTest::newRow("mod+invalid does not trigger modifier-only single mod")
<< QKeySequence(Qt::ControlModifier)
<< (Events() << std::make_pair(QEvent::KeyPress, Qt::ControlModifier) << std::make_pair(QEvent::KeyRelease, Qt::ControlModifier)) << false;
}
void ShortcutsTest::testShortcuts()
{
auto action = std::make_unique<QAction>();
action->setObjectName(QStringLiteral("ActionForShortcutTest"));
QFETCH(QKeySequence, shortcut);
QVERIFY(KGlobalAccel::setGlobalShortcut(action.get(), shortcut));
QCOMPARE(m_globalaccel->shortcut(action.get()), QList<QKeySequence>() << shortcut);
QSignalSpy spy(action.get(), &QAction::triggered);
QFETCH(Events, events);
for (const auto &event : events) {
switch (event.first) {
case QEvent::KeyPress:
m_interface->checkKeyEvent(event.second, ShortcutKeyState::Pressed);
break;
case QEvent::KeyRelease:
m_interface->checkKeyEvent(event.second, ShortcutKeyState::Released);
break;
case QEvent::MouseButtonPress:
m_interface->checkPointerPressed(static_cast<Qt::MouseButtons>(event.second));
break;
case QEvent::Wheel:
m_interface->checkAxisTriggered(event.second);
break;
default:
qFatal("Unknown event type");
}
}
QFETCH(bool, triggered);
if (triggered) {
QVERIFY(spy.wait());
QCOMPARE(spy.count(), 1);
} else {
QVERIFY(!spy.wait(100));
QCOMPARE(spy.count(), 0);
}
m_globalaccel->removeAllShortcuts(action.get());
}
void ShortcutsTest::testSerialization()
{
QCOMPARE(Component::keysFromString(QLatin1String("none")), QSet<QKeySequence>());
QCOMPARE(Component::stringFromKeys(QSet<QKeySequence>()), QLatin1String("none"));
QCOMPARE(Component::keysFromString(QLatin1String("")), QSet<QKeySequence>() << QKeySequence());
QCOMPARE(Component::stringFromKeys(QSet<QKeySequence>() << QKeySequence()), QLatin1String("none"));
QCOMPARE(Component::keysFromString(QLatin1String("Ctrl+P")), QSet<QKeySequence>() << QKeySequence(Qt::CTRL | Qt::Key_P));
QCOMPARE(Component::stringFromKeys(QSet<QKeySequence>() << QKeySequence(Qt::CTRL | Qt::Key_P)), QLatin1String("Ctrl+P"));
QCOMPARE(Component::keysFromString(QLatin1String("\tCtrl+P")), QSet<QKeySequence>() << QKeySequence() << QKeySequence(Qt::CTRL | Qt::Key_P));
QCOMPARE(Component::keysFromString(QLatin1String("\tCtrl+P\t")), QSet<QKeySequence>() << QKeySequence() << QKeySequence(Qt::CTRL | Qt::Key_P));
QCOMPARE(Component::stringFromKeys(QSet<QKeySequence>() << QKeySequence() << QKeySequence(Qt::CTRL | Qt::Key_P)), QLatin1String("\tCtrl+P"));
}
void ShortcutsTest::testContestedKeys()
{
const QKeySequence shortcut(Qt::META | Qt::CTRL | Qt::Key_K);
auto firstAction = std::make_unique<QAction>();
firstAction->setObjectName(QStringLiteral("First Shortcut"));
QVERIFY(KGlobalAccel::setGlobalShortcut(firstAction.get(), shortcut));
QSignalSpy firstActionTriggeredSpy(firstAction.get(), &QAction::triggered);
auto secondAction = std::make_unique<QAction>();
secondAction->setObjectName(QStringLiteral("Second Shortcut"));
QVERIFY(KGlobalAccel::setGlobalShortcut(secondAction.get(), shortcut));
QSignalSpy secondActionTriggeredSpy(secondAction.get(), &QAction::triggered);
m_interface->checkKeyEvent(Qt::Key_Meta, ShortcutKeyState::Pressed);
m_interface->checkKeyEvent((Qt::MetaModifier | Qt::Key_Control).toCombined(), ShortcutKeyState::Pressed);
m_interface->checkKeyEvent((Qt::MetaModifier | Qt::ControlModifier | Qt::Key_K).toCombined(), ShortcutKeyState::Pressed);
QVERIFY(firstActionTriggeredSpy.wait());
QCOMPARE(firstActionTriggeredSpy.count(), 1);
QVERIFY(!secondActionTriggeredSpy.wait(100));
QCOMPARE(secondActionTriggeredSpy.count(), 0);
m_interface->checkKeyEvent((Qt::MetaModifier | Qt::ControlModifier | Qt::Key_K).toCombined(), ShortcutKeyState::Released);
m_interface->checkKeyEvent((Qt::MetaModifier | Qt::Key_Control).toCombined(), ShortcutKeyState::Released);
m_interface->checkKeyEvent(Qt::Key_Meta, ShortcutKeyState::Released);
m_globalaccel->removeAllShortcuts(firstAction.get());
m_globalaccel->removeAllShortcuts(secondAction.get());
}
QTEST_MAIN(ShortcutsTest)
#include "shortcutstest.moc"
@@ -3,7 +3,6 @@ set(kglobalaccelprivate_SRCS
kglobalaccel_interface.cpp
kserviceactioncomponent.cpp
component.cpp
logging.cpp
globalshortcut.cpp
globalshortcutsregistry.cpp
globalshortcutcontext.cpp
@@ -26,6 +25,14 @@ ecm_generate_export_header(KGlobalAccelD
EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT}
)
ecm_qt_declare_logging_category(KGlobalAccelD
HEADER logging.h
IDENTIFIER KGLOBALACCELD
CATEGORY_NAME kf.globalaccel.kglobalacceld
DESCRIPTION "KGlobalAccelD"
EXPORT KGLOBALACCELD
)
target_include_directories(KGlobalAccelD INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR}/KGlobalAccelD>")
target_link_libraries(KGlobalAccelD
@@ -37,7 +44,7 @@ target_link_libraries(KGlobalAccelD
KF6::CoreAddons # KAboutData
KF6::ConfigCore
KF6::Service
KF6::KIOCore
KF6::KIOGui
KF6::JobWidgets
)
@@ -52,7 +59,7 @@ if(XCB_XCB_FOUND)
target_link_libraries(KGlobalAccelD PUBLIC Qt6::GuiPrivate) # qtx11extras_p.h
endif()
add_executable(kglobalacceld main.cpp logging.cpp)
add_executable(kglobalacceld main.cpp)
target_include_directories(kglobalacceld PRIVATE ${CMAKE_BINARY_DIR})
@@ -70,6 +77,7 @@ install(TARGETS kglobalacceld DESTINATION ${KDE_INSTALL_LIBEXECDIR})
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/kglobalacceld_export.h
shortcutkeystate.h
kglobalacceld.h
kglobalaccel_interface.h
DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KGlobalAccelD/ COMPONENT Devel

Some files were not shown because too many files have changed in this diff Show More