Compare commits
103 Commits
master
...
icc-effect
Author | SHA1 | Date |
---|---|---|
Vitaliy Filippov | ff541bd02b | |
Jonathan Riddell | cf9e966ddf | |
l10n daemon script | 60d3dca8e4 | |
Vlad Zahorodnii | e891537d15 | |
l10n daemon script | 0176ddb515 | |
Aleix Pol | 28e1421c1e | |
Jan Grulich | baa3a4c791 | |
l10n daemon script | 9ef98d9306 | |
l10n daemon script | 6ec5b35dc3 | |
Jonathan Riddell | a9624fc0ca | |
Aleix Pol | 10e1b6fd9d | |
Aleix Pol | 7bfb9add96 | |
Aleix Pol | 99b29195b4 | |
Aleix Pol | 9854f40333 | |
Aleix Pol | a3f5d43100 | |
Vlad Zahorodnii | 038aa9d8d7 | |
Michał Ziąbkowski | 6acab64718 | |
Xaver Hugl | 4361892c25 | |
Aleix Pol | 233df87c2c | |
xinbo wang | 2a4fb12f8f | |
Ismael Asensio | 922dc0050b | |
Jonathan Riddell | b9de46059b | |
l10n daemon script | 13c59686c6 | |
Aleix Pol | 0b5cbe4016 | |
Aleix Pol | 191bef73ac | |
Vlad Zahorodnii | 405a0360fb | |
Vlad Zahorodnii | 575cc46a8a | |
Bhushan Shah | 7b4925f761 | |
Lewis Lakerink | 00570eb741 | |
Ismael Asensio | 7465dcc9de | |
l10n daemon script | 2ce464a15a | |
Vlad Zahorodnii | 3d40db866c | |
Jonathan Riddell | 022cc8a661 | |
Vlad Zahorodnii | ea82e10a59 | |
Vlad Zahorodnii | 44dcb6d0a5 | |
Vlad Zahorodnii | ff4a0d9713 | |
Vlad Zahorodnii | 838d7e7a14 | |
Ismael Asensio | 9ae4021ef4 | |
Vlad Zahorodnii | 6577a35ec9 | |
Vlad Zahorodnii | 9d2b27aebb | |
Vlad Zahorodnii | f123990930 | |
Vlad Zahorodnii | f6c4cc6b8d | |
Méven Car | 853ce5bcb8 | |
Vlad Zahorodnii | 445d1496e4 | |
Vlad Zahorodnii | 062e0441a5 | |
Vlad Zahorodnii | 3dcc4ebd37 | |
Vlad Zahorodnii | 259dedfc99 | |
Vlad Zahorodnii | 7d327d0b8f | |
Vlad Zahorodnii | 77a6d2c6fa | |
Jonathan Riddell | 8edf25c1ab | |
Lewis Lakerink | ae6e7feef0 | |
Fabian Vogt | 6addcab364 | |
Vlad Zahorodnii | e9b751d2c1 | |
Vlad Zahorodnii | 642be48bd2 | |
Vlad Zahorodnii | 1fd9ae618a | |
Vlad Zahorodnii | 76a33c90fb | |
Vlad Zahorodnii | 0109bdbba9 | |
Vlad Zahorodnii | 83ed25031c | |
Nicolas Fella | e35a5a7e1d | |
l10n daemon script | c3e1b1daa8 | |
l10n daemon script | f5ee562fd5 | |
l10n daemon script | 74411356bb | |
Vlad Zahorodnii | 5df72c6613 | |
Vlad Zahorodnii | bba28ff9e8 | |
l10n daemon script | a5ec0bbdc9 | |
Jonathan Riddell | 895acfc93e | |
Vlad Zahorodnii | e200caf011 | |
l10n daemon script | 593ed60d72 | |
l10n daemon script | 115489bcf8 | |
l10n daemon script | 49c7d9b70a | |
Vlad Zahorodnii | dac3c29da6 | |
Albert Astals Cid | 1dfbac7348 | |
Vlad Zahorodnii | ec70d35426 | |
Vlad Zahorodnii | 3a50ce01f8 | |
Vlad Zahorodnii | e249d08765 | |
Aleix Pol | ba2aab2f04 | |
Vlad Zahorodnii | 6e56d5741d | |
Vlad Zahorodnii | 491930c49b | |
Vlad Zahorodnii | ef65a34017 | |
Vlad Zahorodnii | 02490c2086 | |
Vlad Zahorodnii | dfa08f2259 | |
Vlad Zahorodnii | f53d90a9f9 | |
Vlad Zahorodnii | e056406951 | |
Vlad Zahorodnii | c5880833d9 | |
l10n daemon script | c8c0c57c0c | |
l10n daemon script | f4b9ecb897 | |
l10n daemon script | 5e4c52c9a9 | |
Vlad Zahorodnii | 6b91b07059 | |
Vlad Zahorodnii | 5b46e01c45 | |
Vlad Zahorodnii | 895ec1ad12 | |
David Edmundson | 23b85e2b85 | |
Vlad Zahorodnii | 98882a0962 | |
Andreas Haratzis | 60fd537684 | |
Andreas Haratzis | 7a4df745f6 | |
l10n daemon script | 23c031ce54 | |
l10n daemon script | 48a69e77f8 | |
l10n daemon script | 9fc1f82700 | |
Vlad Zahorodnii | e9eb8c725d | |
Vlad Zahorodnii | 6046a67396 | |
Vlad Zahorodnii | 1630ce053a | |
l10n daemon script | fc5a553eb0 | |
Andreas Haratzis | a3b50500fc | |
Vlad Zahorodnii | 965b20abb8 |
|
@ -285,10 +285,11 @@ _XcursorReadUInt (XcursorFile *file, XcursorUInt *u)
|
|||
|
||||
if ((*file->read) (file, bytes, 4) != 4)
|
||||
return XcursorFalse;
|
||||
*u = ((bytes[0] << 0) |
|
||||
(bytes[1] << 8) |
|
||||
(bytes[2] << 16) |
|
||||
(bytes[3] << 24));
|
||||
|
||||
*u = ((XcursorUInt)(bytes[0]) << 0) |
|
||||
((XcursorUInt)(bytes[1]) << 8) |
|
||||
((XcursorUInt)(bytes[2]) << 16) |
|
||||
((XcursorUInt)(bytes[3]) << 24);
|
||||
return XcursorTrue;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,8 +30,10 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef int XcursorBool;
|
||||
typedef unsigned int XcursorUInt;
|
||||
typedef uint32_t XcursorUInt;
|
||||
|
||||
typedef XcursorUInt XcursorDim;
|
||||
typedef XcursorUInt XcursorPixel;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
|
||||
|
||||
project(KWin)
|
||||
set(PROJECT_VERSION "5.19.90")
|
||||
set(PROJECT_VERSION "5.20.5")
|
||||
set(PROJECT_VERSION_MAJOR 5)
|
||||
|
||||
set(QT_MIN_VERSION "5.15.0")
|
||||
|
|
|
@ -236,6 +236,7 @@ void AbstractClient::markAsZombie()
|
|||
{
|
||||
Q_ASSERT(!m_zombie);
|
||||
m_zombie = true;
|
||||
addWorkspaceRepaint(visibleRect());
|
||||
}
|
||||
|
||||
Layer AbstractClient::layer() const
|
||||
|
@ -877,7 +878,7 @@ void AbstractClient::maximize(MaximizeMode m)
|
|||
void AbstractClient::setMaximize(bool vertically, bool horizontally)
|
||||
{
|
||||
// changeMaximize() flips the state, so change from set->flip
|
||||
const MaximizeMode oldMode = maximizeMode();
|
||||
const MaximizeMode oldMode = requestedMaximizeMode();
|
||||
changeMaximize(
|
||||
oldMode & MaximizeHorizontal ? !horizontally : horizontally,
|
||||
oldMode & MaximizeVertical ? !vertically : vertically,
|
||||
|
@ -2615,6 +2616,10 @@ void AbstractClient::setDesktopFileName(QByteArray name)
|
|||
|
||||
QString AbstractClient::iconFromDesktopFile() const
|
||||
{
|
||||
if (m_desktopFileName.isEmpty()) {
|
||||
return {};
|
||||
}
|
||||
|
||||
const QString desktopFileName = QString::fromUtf8(m_desktopFileName);
|
||||
QString desktopFilePath;
|
||||
|
||||
|
|
|
@ -311,45 +311,46 @@ AbstractWaylandOutput::Transform AbstractWaylandOutput::transform() const
|
|||
return static_cast<Transform>(m_waylandOutputDevice->transform());
|
||||
}
|
||||
|
||||
// TODO: Do we need to handle the flipped cases differently?
|
||||
int transformToRotation(AbstractWaylandOutput::Transform transform)
|
||||
QMatrix4x4 AbstractWaylandOutput::logicalToNativeMatrix(const QRect &rect, qreal scale, Transform transform)
|
||||
{
|
||||
switch (transform) {
|
||||
case AbstractWaylandOutput::Transform::Normal:
|
||||
case AbstractWaylandOutput::Transform::Flipped:
|
||||
return 0;
|
||||
case AbstractWaylandOutput::Transform::Rotated90:
|
||||
case AbstractWaylandOutput::Transform::Flipped90:
|
||||
return 90;
|
||||
case AbstractWaylandOutput::Transform::Rotated180:
|
||||
case AbstractWaylandOutput::Transform::Flipped180:
|
||||
return 180;
|
||||
case AbstractWaylandOutput::Transform::Rotated270:
|
||||
case AbstractWaylandOutput::Transform::Flipped270:
|
||||
return 270;
|
||||
}
|
||||
Q_UNREACHABLE();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int AbstractWaylandOutput::rotation() const
|
||||
{
|
||||
return transformToRotation(transform());
|
||||
}
|
||||
|
||||
QMatrix4x4 AbstractWaylandOutput::transformation() const
|
||||
{
|
||||
const QSize outputSize = modeSize();
|
||||
const QSize logicalSize = pixelSize();
|
||||
|
||||
QMatrix4x4 matrix;
|
||||
matrix.translate(outputSize.width()/2, outputSize.height()/2);
|
||||
matrix.rotate(rotation(), 0, 0, 1);
|
||||
matrix.translate(-logicalSize.width()/2, -logicalSize.height()/2);
|
||||
matrix.scale(scale());
|
||||
matrix.scale(scale);
|
||||
|
||||
switch (transform) {
|
||||
case Transform::Normal:
|
||||
case Transform::Flipped:
|
||||
break;
|
||||
case Transform::Rotated90:
|
||||
case Transform::Flipped90:
|
||||
matrix.translate(0, rect.width());
|
||||
matrix.rotate(-90, 0, 0, 1);
|
||||
break;
|
||||
case Transform::Rotated180:
|
||||
case Transform::Flipped180:
|
||||
matrix.translate(rect.width(), rect.height());
|
||||
matrix.rotate(-180, 0, 0, 1);
|
||||
break;
|
||||
case Transform::Rotated270:
|
||||
case Transform::Flipped270:
|
||||
matrix.translate(rect.height(), 0);
|
||||
matrix.rotate(-270, 0, 0, 1);
|
||||
break;
|
||||
}
|
||||
|
||||
switch (transform) {
|
||||
case Transform::Flipped:
|
||||
case Transform::Flipped90:
|
||||
case Transform::Flipped180:
|
||||
case Transform::Flipped270:
|
||||
matrix.translate(rect.width(), 0);
|
||||
matrix.scale(-1, 1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
matrix.translate(-rect.x(), -rect.y());
|
||||
|
||||
const QPoint topLeft = -globalPos();
|
||||
matrix.translate(-topLeft.x(), -topLeft.y());
|
||||
return matrix;
|
||||
}
|
||||
|
||||
|
|
|
@ -112,17 +112,10 @@ public:
|
|||
|
||||
QString description() const;
|
||||
|
||||
/**
|
||||
* The current rotation of the output
|
||||
*
|
||||
* @return rotation in degrees
|
||||
*/
|
||||
int rotation() const;
|
||||
|
||||
/**
|
||||
* Returns a matrix that can translate into the display's coordinates system
|
||||
*/
|
||||
QMatrix4x4 transformation() const;
|
||||
static QMatrix4x4 logicalToNativeMatrix(const QRect &rect, qreal scale, Transform transform);
|
||||
|
||||
Q_SIGNALS:
|
||||
void modeChanged();
|
||||
|
|
|
@ -370,6 +370,7 @@ void PlasmaSurfaceTest::testPanelWindowsCanCover()
|
|||
// trigger screenedge
|
||||
QFETCH(QPoint, triggerPoint);
|
||||
KWin::Cursors::self()->mouse()->setPos(triggerPoint);
|
||||
QVERIFY(stackingOrderChangedSpy.wait());
|
||||
QCOMPARE(stackingOrderChangedSpy.count(), 1);
|
||||
stackingOrder = workspace()->stackingOrder();
|
||||
QCOMPARE(stackingOrder.count(), 2);
|
||||
|
|
|
@ -100,6 +100,7 @@ private Q_SLOTS:
|
|||
void testXdgWindowGeometryMaximize();
|
||||
void testPointerInputTransform();
|
||||
void testReentrantSetFrameGeometry();
|
||||
void testDoubleMaximize();
|
||||
};
|
||||
|
||||
void TestXdgShellClient::initTestCase()
|
||||
|
@ -1558,5 +1559,38 @@ void TestXdgShellClient::testReentrantSetFrameGeometry()
|
|||
QVERIFY(Test::waitForWindowDestroyed(client));
|
||||
}
|
||||
|
||||
void TestXdgShellClient::testDoubleMaximize()
|
||||
{
|
||||
// This test verifies that the case where a client issues two set_maximized() requests
|
||||
// separated by the initial commit is handled properly.
|
||||
|
||||
// Create the test surface.
|
||||
QScopedPointer<Surface> surface(Test::createSurface());
|
||||
QScopedPointer<XdgShellSurface> shellSurface(Test::createXdgShellStableSurface(surface.data(), nullptr, Test::CreationSetup::CreateOnly));
|
||||
shellSurface->setMaximized(true);
|
||||
surface->commit(Surface::CommitFlag::None);
|
||||
|
||||
// Wait for the compositor to respond with a configure event.
|
||||
QSignalSpy configureRequestedSpy(shellSurface.data(), &XdgShellSurface::configureRequested);
|
||||
QVERIFY(configureRequestedSpy.wait());
|
||||
QCOMPARE(configureRequestedSpy.count(), 1);
|
||||
QSize size = configureRequestedSpy.last().at(0).value<QSize>();
|
||||
QCOMPARE(size, QSize(1280, 1024));
|
||||
XdgShellSurface::States states = configureRequestedSpy.last().at(1).value<XdgShellSurface::States>();
|
||||
QVERIFY(states.testFlag(XdgShellSurface::State::Maximized));
|
||||
|
||||
// Send another set_maximized() request, but do not attach any buffer yet.
|
||||
shellSurface->setMaximized(true);
|
||||
surface->commit(Surface::CommitFlag::None);
|
||||
|
||||
// The compositor must respond with another configure event even if the state hasn't changed.
|
||||
QVERIFY(configureRequestedSpy.wait());
|
||||
QCOMPARE(configureRequestedSpy.count(), 2);
|
||||
size = configureRequestedSpy.last().at(0).value<QSize>();
|
||||
QCOMPARE(size, QSize(1280, 1024));
|
||||
states = configureRequestedSpy.last().at(1).value<XdgShellSurface::States>();
|
||||
QVERIFY(states.testFlag(XdgShellSurface::State::Maximized));
|
||||
}
|
||||
|
||||
WAYLANDTEST_MAIN(TestXdgShellClient)
|
||||
#include "xdgshellclient_test.moc"
|
||||
|
|
|
@ -5,8 +5,10 @@
|
|||
*/
|
||||
|
||||
#include "kwin_wayland_test.h"
|
||||
#include "composite.h"
|
||||
#include "main.h"
|
||||
#include "platform.h"
|
||||
#include "scene.h"
|
||||
#include "screens.h"
|
||||
#include "unmanaged.h"
|
||||
#include "wayland_server.h"
|
||||
|
@ -124,6 +126,11 @@ void XwaylandServerCrashTest::testCrash()
|
|||
QCOMPARE(kwinApp()->x11DefaultScreen(), nullptr);
|
||||
QCOMPARE(kwinApp()->x11RootWindow(), XCB_WINDOW_NONE);
|
||||
QCOMPARE(kwinApp()->x11ScreenNumber(), -1);
|
||||
|
||||
// Render a frame to ensure that the compositor doesn't crash.
|
||||
Compositor::self()->addRepaintFull();
|
||||
QSignalSpy frameRenderedSpy(Compositor::self()->scene(), &Scene::frameRendered);
|
||||
QVERIFY(frameRenderedSpy.wait());
|
||||
}
|
||||
|
||||
} // namespace KWin
|
||||
|
|
|
@ -5,8 +5,10 @@
|
|||
*/
|
||||
|
||||
#include "kwin_wayland_test.h"
|
||||
#include "composite.h"
|
||||
#include "main.h"
|
||||
#include "platform.h"
|
||||
#include "scene.h"
|
||||
#include "screens.h"
|
||||
#include "wayland_server.h"
|
||||
#include "workspace.h"
|
||||
|
@ -103,6 +105,11 @@ void XwaylandServerRestartTest::testRestart()
|
|||
QCOMPARE(client->windowId(), window);
|
||||
QVERIFY(client->isDecorated());
|
||||
|
||||
// Render a frame to ensure that the compositor doesn't crash.
|
||||
Compositor::self()->addRepaintFull();
|
||||
QSignalSpy frameRenderedSpy(Compositor::self()->scene(), &Scene::frameRendered);
|
||||
QVERIFY(frameRenderedSpy.wait());
|
||||
|
||||
// Destroy the test window.
|
||||
xcb_destroy_window(c.data(), window);
|
||||
xcb_flush(c.data());
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
[Driver]
|
||||
Vendor=Mesa/X.org
|
||||
Renderer=llvmpipe (LLVM 10.0.1, 256 bits)
|
||||
Version=3.1 Mesa 20.2.1
|
||||
ShadingLanguageVersion=1.40
|
||||
|
||||
[Settings]
|
||||
LooseBinding=true
|
||||
GLSL=true
|
||||
TextureNPOT=true
|
||||
Mesa=true
|
||||
Gallium=true
|
||||
SoftwareEmulation=true
|
||||
GLVersion=3,1
|
||||
GLSLVersion=1,40
|
||||
MesaVersion=20,2,1
|
||||
GalliumVersion=0,4
|
||||
DriverVersion=20,2,1
|
||||
Driver=12
|
||||
ChipClass=99999
|
||||
Compositor=9
|
||||
|
|
@ -224,9 +224,17 @@ qint64 Manager::scheduledTransitionDuration() const
|
|||
|
||||
void Manager::initShortcuts()
|
||||
{
|
||||
// legacy shortcut with localized key (to avoid breaking existing config)
|
||||
if (i18n("Toggle Night Color") != QStringLiteral("Toggle Night Color")) {
|
||||
QAction toggleActionLegacy;
|
||||
toggleActionLegacy.setProperty("componentName", QStringLiteral(KWIN_NAME));
|
||||
toggleActionLegacy.setObjectName(i18n("Toggle Night Color"));
|
||||
KGlobalAccel::self()->removeAllShortcuts(&toggleActionLegacy);
|
||||
}
|
||||
|
||||
QAction *toggleAction = new QAction(this);
|
||||
toggleAction->setProperty("componentName", QStringLiteral(KWIN_NAME));
|
||||
toggleAction->setObjectName(i18n("Toggle Night Color"));
|
||||
toggleAction->setObjectName(QStringLiteral("Toggle Night Color"));
|
||||
toggleAction->setText(i18n("Toggle Night Color"));
|
||||
KGlobalAccel::setGlobalShortcut(toggleAction, QList<QKeySequence>());
|
||||
input()->registerShortcut(QKeySequence(), toggleAction, this, &Manager::toggle);
|
||||
|
|
|
@ -705,6 +705,9 @@ void Compositor::performCompositing()
|
|||
surface->frameRendered(currentTime);
|
||||
}
|
||||
}
|
||||
if (!kwinApp()->platform()->isCursorHidden()) {
|
||||
Cursors::self()->currentCursor()->markAsRendered();
|
||||
}
|
||||
}
|
||||
|
||||
// Stop here to ensure *we* cause the next repaint schedule - not some effect
|
||||
|
|
|
@ -145,7 +145,12 @@ void Cursor::slotKGlobalSettingsNotifyChange(int type, int arg)
|
|||
|
||||
QRect Cursor::geometry() const
|
||||
{
|
||||
return QRect(m_pos - hotspot(), image().size());
|
||||
return rect().translated(m_pos - hotspot());
|
||||
}
|
||||
|
||||
QRect Cursor::rect() const
|
||||
{
|
||||
return QRect(QPoint(0, 0), image().size() / image().devicePixelRatio());
|
||||
}
|
||||
|
||||
QPoint Cursor::pos()
|
||||
|
|
1
cursor.h
1
cursor.h
|
@ -163,6 +163,7 @@ public:
|
|||
QImage image() const { return m_image; }
|
||||
QPoint hotspot() const { return m_hotspot; }
|
||||
QRect geometry() const;
|
||||
QRect rect() const;
|
||||
|
||||
void updateCursor(const QImage &image, const QPoint &hotspot);
|
||||
void markAsRendered() {
|
||||
|
|
|
@ -22,3 +22,4 @@ kwin_scene_xrender KWin XRender based compositor scene plugin DEFAULT_SEVERITY [
|
|||
kwin_scene_qpainter KWin QPainter based compositor scene plugin DEFAULT_SEVERITY [CRITICAL] IDENTIFIER [KWIN_QPAINTER]
|
||||
kwin_scene_opengl KWin OpenGL based compositor scene plugins DEFAULT_SEVERITY [CRITICAL] IDENTIFIER [KWIN_OPENGL]
|
||||
kwin_screencast KWin Screen Cast Service DEFAULT_SEVERITY [WARNING] IDENTIFIER [KWIN_SCREENCAST]
|
||||
kwin_xwl KWin Xwayland Server DEFAULT_SEVERITY [WARNING] IDENTIFIER [KWIN_XWL]
|
||||
|
|
|
@ -47,6 +47,11 @@ Deleted::Deleted()
|
|||
|
||||
Deleted::~Deleted()
|
||||
{
|
||||
const QRegion dirty = repaints();
|
||||
if (!dirty.isEmpty()) {
|
||||
addWorkspaceRepaint(dirty);
|
||||
}
|
||||
|
||||
if (delete_refcount != 0)
|
||||
qCCritical(KWIN_CORE) << "Deleted client has non-zero reference count (" << delete_refcount << ")";
|
||||
Q_ASSERT(delete_refcount == 0);
|
||||
|
|
|
@ -73,6 +73,11 @@ macro(KWIN4_ADD_EFFECT name)
|
|||
install(TARGETS kwin4_effect_${name} ${INSTALL_TARGETS_DEFAULT_ARGS})
|
||||
endmacro()
|
||||
|
||||
# For ICC (FIXME remove if building separately)
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(LCMS2 REQUIRED lcms2)
|
||||
set_package_properties(LCMS2 PROPERTIES TYPE REQUIRED PURPOSE "Required for ICC color correction.")
|
||||
|
||||
# Install the KWin/Effect service type
|
||||
install(FILES kwineffect.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR})
|
||||
|
||||
|
@ -92,6 +97,7 @@ set(kwin4_effect_builtins_sources
|
|||
effect_builtins.cpp
|
||||
flipswitch/flipswitch.cpp
|
||||
glide/glide.cpp
|
||||
icc/icc.cpp
|
||||
invert/invert.cpp
|
||||
logging.cpp
|
||||
lookingglass/lookingglass.cpp
|
||||
|
@ -133,6 +139,7 @@ kconfig_add_kcfg_files(kwin4_effect_builtins_sources
|
|||
fallapart/fallapartconfig.kcfgc
|
||||
flipswitch/flipswitchconfig.kcfgc
|
||||
glide/glideconfig.kcfgc
|
||||
icc/iccconfig.kcfgc
|
||||
lookingglass/lookingglassconfig.kcfgc
|
||||
magiclamp/magiclampconfig.kcfgc
|
||||
magnifier/magnifierconfig.kcfgc
|
||||
|
@ -205,6 +212,7 @@ add_subdirectory(cube)
|
|||
add_subdirectory(cubeslide)
|
||||
add_subdirectory(flipswitch)
|
||||
add_subdirectory(glide)
|
||||
add_subdirectory(icc)
|
||||
add_subdirectory(invert)
|
||||
add_subdirectory(lookingglass)
|
||||
add_subdirectory(magnifier)
|
||||
|
@ -221,3 +229,8 @@ add_subdirectory(wobblywindows)
|
|||
|
||||
# Add the builtins plugin
|
||||
kwin4_add_effect(builtins ${kwin4_effect_builtins_sources})
|
||||
|
||||
# FIXME For ICC, remove if building separately
|
||||
target_link_libraries(kwin4_effect_builtins PUBLIC ${LCMS2_LIBRARIES})
|
||||
target_include_directories(kwin4_effect_builtins PUBLIC ${LCMS2_INCLUDE_DIRS})
|
||||
target_compile_options(kwin4_effect_builtins PUBLIC ${LCMS2_CFLAGS_OTHER})
|
||||
|
|
|
@ -57,7 +57,7 @@ void CubeSlideEffect::reconfigure(ReconfigureFlags)
|
|||
CubeSlideConfig::self()->read();
|
||||
// TODO: rename rotationDuration to duration
|
||||
rotationDuration = animationTime(CubeSlideConfig::rotationDuration() != 0 ? CubeSlideConfig::rotationDuration() : 500);
|
||||
timeLine.setCurveShape(QTimeLine::EaseInOutCurve);
|
||||
timeLine.setEasingCurve(QEasingCurve::InOutSine);
|
||||
timeLine.setDuration(rotationDuration);
|
||||
dontSlidePanels = CubeSlideConfig::dontSlidePanels();
|
||||
dontSlideStickyWindows = CubeSlideConfig::dontSlideStickyWindows();
|
||||
|
@ -367,9 +367,9 @@ void CubeSlideEffect::postPaintScreen()
|
|||
}
|
||||
timeLine.setCurrentTime(0);
|
||||
if (slideRotations.count() == 1)
|
||||
timeLine.setCurveShape(QTimeLine::EaseOutCurve);
|
||||
timeLine.setEasingCurve(QEasingCurve::OutSine);
|
||||
else
|
||||
timeLine.setCurveShape(QTimeLine::LinearCurve);
|
||||
timeLine.setEasingCurve(QEasingCurve::Linear);
|
||||
if (slideRotations.empty()) {
|
||||
for (EffectWindow* w : staticWindows) {
|
||||
w->setData(WindowForceBlurRole, QVariant());
|
||||
|
@ -500,9 +500,9 @@ void CubeSlideEffect::startAnimation() {
|
|||
}
|
||||
}
|
||||
if (slideRotations.count() == 1) {
|
||||
timeLine.setCurveShape(QTimeLine::EaseInOutCurve);
|
||||
timeLine.setEasingCurve(QEasingCurve::InOutSine);
|
||||
} else {
|
||||
timeLine.setCurveShape(QTimeLine::EaseInCurve);
|
||||
timeLine.setEasingCurve(QEasingCurve::InSine);
|
||||
}
|
||||
effects->setActiveFullScreenEffect(this);
|
||||
timeLine.setCurrentTime(0);
|
||||
|
|
|
@ -108,7 +108,7 @@ void DesktopGridEffect::reconfigure(ReconfigureFlags)
|
|||
|
||||
// TODO: rename zoomDuration to duration
|
||||
zoomDuration = animationTime(DesktopGridConfig::zoomDuration() != 0 ? DesktopGridConfig::zoomDuration() : 300);
|
||||
timeline.setCurveShape(QTimeLine::EaseInOutCurve);
|
||||
timeline.setEasingCurve(QEasingCurve::InOutSine);
|
||||
timeline.setDuration(zoomDuration);
|
||||
|
||||
border = DesktopGridConfig::borderWidth();
|
||||
|
@ -1046,7 +1046,7 @@ void DesktopGridEffect::setup()
|
|||
hoverTimeline.clear();
|
||||
for (int i = 0; i < effects->numberOfDesktops(); i++) {
|
||||
QTimeLine *newTimeline = new QTimeLine(zoomDuration, this);
|
||||
newTimeline->setCurveShape(QTimeLine::EaseInOutCurve);
|
||||
newTimeline->setEasingCurve(QEasingCurve::InOutSine);
|
||||
hoverTimeline.append(newTimeline);
|
||||
}
|
||||
hoverTimeline[effects->currentDesktop() - 1]->setCurrentTime(hoverTimeline[effects->currentDesktop() - 1]->duration());
|
||||
|
@ -1282,7 +1282,7 @@ void DesktopGridEffect::desktopsAdded(int old)
|
|||
for (int i = old; i <= effects->numberOfDesktops(); i++) {
|
||||
// add a timeline for the new desktop
|
||||
QTimeLine *newTimeline = new QTimeLine(zoomDuration, this);
|
||||
newTimeline->setCurveShape(QTimeLine::EaseInOutCurve);
|
||||
newTimeline->setEasingCurve(QEasingCurve::InOutSine);
|
||||
hoverTimeline.append(newTimeline);
|
||||
}
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
#include "cubeslide/cubeslide.h"
|
||||
#include "flipswitch/flipswitch.h"
|
||||
#include "glide/glide.h"
|
||||
#include "icc/icc.h"
|
||||
#include "invert/invert.h"
|
||||
#include "lookingglass/lookingglass.h"
|
||||
#include "magnifier/magnifier.h"
|
||||
|
@ -265,6 +266,21 @@ EFFECT_FALLBACK
|
|||
nullptr,
|
||||
nullptr
|
||||
#endif
|
||||
EFFECT_FALLBACK
|
||||
}, {
|
||||
QStringLiteral("icc"),
|
||||
i18ndc("kwin_effects", "Name of a KWin Effect", "ICC Color Correction"),
|
||||
i18ndc("kwin_effects", "Comment describing the KWin Effect", "Applies full ICC color correction to the whole display"),
|
||||
QStringLiteral("Appearance"),
|
||||
QString(),
|
||||
QUrl(),
|
||||
false,
|
||||
false,
|
||||
#ifdef EFFECT_BUILTINS
|
||||
&createHelper<ICCEffect>,
|
||||
&ICCEffect::supported,
|
||||
nullptr
|
||||
#endif
|
||||
EFFECT_FALLBACK
|
||||
}, {
|
||||
QStringLiteral("invert"),
|
||||
|
|
|
@ -35,6 +35,7 @@ enum class BuiltInEffect
|
|||
FlipSwitch,
|
||||
Glide,
|
||||
HighlightWindow,
|
||||
ICC,
|
||||
Invert,
|
||||
Kscreen,
|
||||
LookingGlass,
|
||||
|
|
|
@ -16,8 +16,10 @@ Name[ko]=화면 위의 눈
|
|||
Name[lt]=Akis ekrane
|
||||
Name[nl]=Oog op scherm
|
||||
Name[nn]=Auge på skjerm
|
||||
Name[pl]=Oko na ekranie
|
||||
Name[pt]=Olho no Ecrã
|
||||
Name[pt_BR]=Olho na tela
|
||||
Name[ro]=Ochi pe ecran
|
||||
Name[ru]=Втягивание окон в центр экрана
|
||||
Name[sk]=Oko na obrazovke
|
||||
Name[sl]=Oko na zaslonu
|
||||
|
@ -43,8 +45,10 @@ Comment[ko]=창을 바탕 화면으로 흡수
|
|||
Comment[lt]=Įtraukti langus į darbalaukį
|
||||
Comment[nl]=Zuig vensters in het bureaublad
|
||||
Comment[nn]=Sug vindauge inn i skrivebordet
|
||||
Comment[pl]=Zasysa okna na pulpicie
|
||||
Comment[pt]=Aspira as janelas para o ecrã
|
||||
Comment[pt_BR]=Suga as janelas para a área de trabalho
|
||||
Comment[ro]=Suge ferestrele în birou
|
||||
Comment[ru]=Втягивание окон в центр рабочего стола
|
||||
Comment[sk]=Nasať okná na plochu
|
||||
Comment[sl]=Prisesa okna na namizje
|
||||
|
|
|
@ -54,7 +54,7 @@ Name[pa]=ਫਿੱਕਾ
|
|||
Name[pl]=Zanikanie/wyłanianie
|
||||
Name[pt]=Desvanecer
|
||||
Name[pt_BR]=Desvanecer
|
||||
Name[ro]=Decolorare
|
||||
Name[ro]=Estompare
|
||||
Name[ru]=Растворение
|
||||
Name[se]=Rievdat šearratvuođa
|
||||
Name[si]=විවර්ණ
|
||||
|
@ -127,7 +127,7 @@ Comment[pa]=ਜਦੋਂ ਵਿੰਡੋਜ਼ ਨੂੰ ਵੇਖਾਉਣਾ
|
|||
Comment[pl]=Okna gładko wyłaniają się przy otwieraniu i zanikają przy zamykaniu
|
||||
Comment[pt]=Fazer com que as janelas apareçam/desapareçam suavemente quando aparecem ou ficam escondidas
|
||||
Comment[pt_BR]=Faz as janelas aparecerem/desaparecerem suavemente quando são exibidas ou ocultadas
|
||||
Comment[ro]=Face ferestrele să se (de)coloreze când sunt afișate sau ascunse
|
||||
Comment[ro]=Face ferestrele să se (de)coloreze când sunt arătate sau ascunse
|
||||
Comment[ru]=Закрывающиеся окна будут становиться всё более прозрачными, а потом совсем исчезать
|
||||
Comment[si]=පෙන්වන හා සඟවන විට කවුළු විවර්ණය කිරීම හා නොකිරීම සිදු කරන්න
|
||||
Comment[sk]=Okná sa plynule objavia/zmiznú pri ich zobrazení alebo skrytí
|
||||
|
|
|
@ -112,7 +112,7 @@ Comment[pa]=ਜਦੋਂ ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਵਿੱ
|
|||
Comment[pl]=Przenika pulpity wirtualne przy ich przełączaniu
|
||||
Comment[pt]=Desvanece entre os ecrãs virtuais, ao circular entre eles
|
||||
Comment[pt_BR]=Desaparece entre as áreas de trabalho virtuais, ao alternar entre elas
|
||||
Comment[ro]=Estompare între birourile virtuale la comutarea între ele
|
||||
Comment[ro]=Estompare între birourile virtuale la schimbarea între ele
|
||||
Comment[ru]=Постепенная смена изображения при переключении на другой рабочий стол
|
||||
Comment[si]=අතත්ය වැඩතල අතර මාරුවීමේදී ඒවා අතර විවර්ණය කරන්න
|
||||
Comment[sk]=Efekt zoslabenia pri prepínaní virtuálnych plôch
|
||||
|
|
|
@ -24,6 +24,7 @@ Name[nn]=Inn- og uttoning av sprettoppvindauge
|
|||
Name[pl]=Zanikanie okien wysuwnych
|
||||
Name[pt]=Mensagens Desvanecentes
|
||||
Name[pt_BR]=Desvanecer mensagens
|
||||
Name[ro]=Indicii estompate
|
||||
Name[ru]=Растворяющиеся всплывающие окна
|
||||
Name[sk]=Miznúce vyskakovacie okná
|
||||
Name[sl]=Prehajajoča pojavna okna
|
||||
|
@ -58,6 +59,7 @@ Comment[nn]=Ton sprettoppvindauge gradvis inn og ut når dei vert viste eller g
|
|||
Comment[pl]=Okna wysuwne gładko wyłaniają się przy otwieraniu i zanikają przy zamykaniu
|
||||
Comment[pt]=Fazer com que as janelas apareçam/desapareçam suavemente quando aparecem ou ficam escondidas
|
||||
Comment[pt_BR]=Faz as mensagens aparecerem/desaparecerem suavemente quando são exibidas ou ocultadas
|
||||
Comment[ro]=Face indiciile să se (de)coloreze când sunt arătate sau ascunse
|
||||
Comment[ru]=Всплывающие окна при закрытии будут становиться всё более прозрачными, а потом совсем исчезать
|
||||
Comment[sk]=Okná sa plynule objavia/zmiznú pri ich zobrazení alebo skrytí
|
||||
Comment[sl]=Okna se pojavijo in izginejo postopoma, kadar se pokažejo ali skrijejo
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace KWin
|
|||
|
||||
FlipSwitchEffect::FlipSwitchEffect()
|
||||
: m_selectedWindow(nullptr)
|
||||
, m_currentAnimationShape(QTimeLine::EaseInOutCurve)
|
||||
, m_currentAnimationEasingCurve(QEasingCurve::InOutSine)
|
||||
, m_active(false)
|
||||
, m_start(false)
|
||||
, m_stop(false)
|
||||
|
@ -307,11 +307,11 @@ void FlipSwitchEffect::postPaintScreen()
|
|||
m_animation = true;
|
||||
m_timeLine.setCurrentTime(0);
|
||||
if (m_scheduledDirections.count() == 1) {
|
||||
m_currentAnimationShape = QTimeLine::EaseOutCurve;
|
||||
m_timeLine.setCurveShape(m_currentAnimationShape);
|
||||
m_currentAnimationEasingCurve = QEasingCurve::OutSine;
|
||||
m_timeLine.setEasingCurve(m_currentAnimationEasingCurve);
|
||||
} else {
|
||||
m_currentAnimationShape = QTimeLine::LinearCurve;
|
||||
m_timeLine.setCurveShape(m_currentAnimationShape);
|
||||
m_currentAnimationEasingCurve = QEasingCurve::Linear;
|
||||
m_timeLine.setEasingCurve(m_currentAnimationEasingCurve);
|
||||
}
|
||||
}
|
||||
effects->addRepaintFull();
|
||||
|
@ -334,13 +334,13 @@ void FlipSwitchEffect::postPaintScreen()
|
|||
} else {
|
||||
if (m_scheduledDirections.count() == 1) {
|
||||
if (m_stop)
|
||||
m_currentAnimationShape = QTimeLine::LinearCurve;
|
||||
m_currentAnimationEasingCurve = QEasingCurve::Linear;
|
||||
else
|
||||
m_currentAnimationShape = QTimeLine::EaseOutCurve;
|
||||
m_currentAnimationEasingCurve = QEasingCurve::OutSine;
|
||||
} else {
|
||||
m_currentAnimationShape = QTimeLine::LinearCurve;
|
||||
m_currentAnimationEasingCurve = QEasingCurve::Linear;
|
||||
}
|
||||
m_timeLine.setCurveShape(m_currentAnimationShape);
|
||||
m_timeLine.setEasingCurve(m_currentAnimationEasingCurve);
|
||||
}
|
||||
}
|
||||
if (m_start || m_stop || m_animation)
|
||||
|
@ -515,7 +515,7 @@ void FlipSwitchEffect::setActive(bool activate, FlipSwitchMode mode)
|
|||
effects->setActiveFullScreenEffect(this);
|
||||
m_active = true;
|
||||
m_start = true;
|
||||
m_startStopTimeLine.setCurveShape(QTimeLine::EaseInOutCurve);
|
||||
m_startStopTimeLine.setEasingCurve(QEasingCurve::InOutSine);
|
||||
m_activeScreen = effects->activeScreen();
|
||||
m_screenArea = effects->clientArea(ScreenArea, m_activeScreen, effects->currentDesktop());
|
||||
|
||||
|
@ -623,16 +623,16 @@ void FlipSwitchEffect::setActive(bool activate, FlipSwitchMode mode)
|
|||
}
|
||||
m_stop = true;
|
||||
if (m_animation) {
|
||||
m_startStopTimeLine.setCurveShape(QTimeLine::EaseOutCurve);
|
||||
m_startStopTimeLine.setEasingCurve(QEasingCurve::OutSine);
|
||||
if (m_scheduledDirections.count() == 1) {
|
||||
if (m_currentAnimationShape == QTimeLine::EaseInOutCurve)
|
||||
m_currentAnimationShape = QTimeLine::EaseInCurve;
|
||||
else if (m_currentAnimationShape == QTimeLine::EaseOutCurve)
|
||||
m_currentAnimationShape = QTimeLine::LinearCurve;
|
||||
m_timeLine.setCurveShape(m_currentAnimationShape);
|
||||
if (m_currentAnimationEasingCurve == QEasingCurve::InOutSine)
|
||||
m_currentAnimationEasingCurve = QEasingCurve::InSine;
|
||||
else if (m_currentAnimationEasingCurve == QEasingCurve::OutSine)
|
||||
m_currentAnimationEasingCurve = QEasingCurve::Linear;
|
||||
m_timeLine.setEasingCurve(m_currentAnimationEasingCurve);
|
||||
}
|
||||
} else
|
||||
m_startStopTimeLine.setCurveShape(QTimeLine::EaseInOutCurve);
|
||||
m_startStopTimeLine.setEasingCurve(QEasingCurve::InOutSine);
|
||||
effects->stopMouseInterception(this);
|
||||
if (m_hasKeyboardGrab) {
|
||||
effects->ungrabKeyboard();
|
||||
|
@ -703,15 +703,15 @@ void FlipSwitchEffect::scheduleAnimation(const SwitchingDirection& direction, in
|
|||
{
|
||||
if (m_start) {
|
||||
// start is still active so change the shape to have a nice transition
|
||||
m_startStopTimeLine.setCurveShape(QTimeLine::EaseInCurve);
|
||||
m_startStopTimeLine.setEasingCurve(QEasingCurve::InSine);
|
||||
}
|
||||
if (!m_animation && !m_start) {
|
||||
m_animation = true;
|
||||
m_scheduledDirections.enqueue(direction);
|
||||
distance--;
|
||||
// reset shape just to make sure
|
||||
m_currentAnimationShape = QTimeLine::EaseInOutCurve;
|
||||
m_timeLine.setCurveShape(m_currentAnimationShape);
|
||||
m_currentAnimationEasingCurve = QEasingCurve::InOutSine;
|
||||
m_timeLine.setEasingCurve(m_currentAnimationEasingCurve);
|
||||
}
|
||||
for (int i = 0; i < distance; i++) {
|
||||
if (m_scheduledDirections.count() > 1 && m_scheduledDirections.last() != direction)
|
||||
|
@ -725,20 +725,20 @@ void FlipSwitchEffect::scheduleAnimation(const SwitchingDirection& direction, in
|
|||
}
|
||||
}
|
||||
if (m_scheduledDirections.count() > 1) {
|
||||
QTimeLine::CurveShape newShape = QTimeLine::EaseInOutCurve;
|
||||
switch(m_currentAnimationShape) {
|
||||
case QTimeLine::EaseInOutCurve:
|
||||
newShape = QTimeLine::EaseInCurve;
|
||||
QEasingCurve curve;
|
||||
switch (m_currentAnimationEasingCurve.type()) {
|
||||
case QEasingCurve::InOutSine:
|
||||
curve = QEasingCurve::InSine;
|
||||
break;
|
||||
case QTimeLine::EaseOutCurve:
|
||||
newShape = QTimeLine::LinearCurve;
|
||||
case QEasingCurve::OutSine:
|
||||
curve = QEasingCurve::Linear;
|
||||
break;
|
||||
default:
|
||||
newShape = m_currentAnimationShape;
|
||||
curve = m_currentAnimationEasingCurve;
|
||||
}
|
||||
if (newShape != m_currentAnimationShape) {
|
||||
m_currentAnimationShape = newShape;
|
||||
m_timeLine.setCurveShape(m_currentAnimationShape);
|
||||
if (m_currentAnimationEasingCurve != curve) {
|
||||
m_currentAnimationEasingCurve = curve;
|
||||
m_timeLine.setEasingCurve(curve);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -111,7 +111,7 @@ private:
|
|||
EffectWindow* m_selectedWindow;
|
||||
QTimeLine m_timeLine;
|
||||
QTimeLine m_startStopTimeLine;
|
||||
QTimeLine::CurveShape m_currentAnimationShape;
|
||||
QEasingCurve m_currentAnimationEasingCurve;
|
||||
QRect m_screenArea;
|
||||
int m_activeScreen;
|
||||
bool m_active;
|
||||
|
|
|
@ -54,7 +54,7 @@ Name[pa]=ਫਲਿੱਪ ਸਵਿੱਚ
|
|||
Name[pl]=Przełączanie przebierane
|
||||
Name[pt]=Mudança em Pilha
|
||||
Name[pt_BR]=Mudança em pilha
|
||||
Name[ro]=Comutare cu întoarcere
|
||||
Name[ro]=Schimbare cu întoarcere
|
||||
Name[ru]=Перелистывание
|
||||
Name[si]=උඩට ගැනීම් මාරුව
|
||||
Name[sk]=Prepínať v kartotéke
|
||||
|
|
|
@ -25,6 +25,7 @@ Name[nn]=Fjern fargemetting på ikkje-responsive program
|
|||
Name[pl]=Odbarwienie nieodpowiadających aplikacji
|
||||
Name[pt]=Reduzir a Saturação das Aplicações Bloqueadas
|
||||
Name[pt_BR]=Reduzir saturação de aplicativos que não respondem
|
||||
Name[ro]=Desaturează aplicațiile ce nu răspund
|
||||
Name[ru]=Обесцвечивание зависших приложений
|
||||
Name[sk]=Desaturovať neodpovedajúce aplikácie
|
||||
Name[sl]=Zmanjšaj nasičenost neodzivnih programov
|
||||
|
@ -65,6 +66,7 @@ Comment[nn]=Fjern fargemetting på vindauge på program som ikkje lenger reagere
|
|||
Comment[pl]=Odbarwia okna nieodpowiadających (zawieszonych) aplikacji
|
||||
Comment[pt]=Reduzir a saturação das janelas das aplicações sem resposta (bloqueadas)
|
||||
Comment[pt_BR]=Reduzir saturação de janelas de aplicativos que não respondem (travados)
|
||||
Comment[ro]=Desaturează ferestrele aplicațiilor ce nu răspund (înghețate)
|
||||
Comment[ru]=Обесцвечивание окон приложений, не отвечающих на запросы
|
||||
Comment[sk]=Desaturovať okná neodpovedajúcich aplikácií
|
||||
Comment[sl]=Zmanjšaj nasičenost oken neodzivnih (zamrznjenih) programov
|
||||
|
|
|
@ -1,11 +1,21 @@
|
|||
[Desktop Entry]
|
||||
Comment=Animation for a window going to and leaving full screen mode
|
||||
Comment[ca]=Animació per a una finestra que entra o abandona el mode de pantalla completa
|
||||
Comment[en_GB]=Animation for a window going to and leaving full screen mode
|
||||
Comment[es]=Animación para una ventana que entra en el modo de pantalla completa o sale de él
|
||||
Comment[et]=Täisekraanirežiimi mineva või sealt väljuva akna animatsioon
|
||||
Comment[eu]=Pantaila-osoko modutik/modura aldatzen den leiho baten animazioa
|
||||
Comment[fi]=Animointi ikkunalle, joka siirtyy tai poistuu koko näytön tilasta
|
||||
Comment[fr]=Animation pour une fenêtre basculant vers ou sortant du mode « Plein écran »
|
||||
Comment[ia]=Animation per un fenestra va a e abandona modo de schermo plen
|
||||
Comment[it]=Animazione per una finestra che entra e esce dalla modalità a schermo intero
|
||||
Comment[ko]=창이 전체 화면 모드로 진입하거나 벗어날 때 사용할 애니메이션
|
||||
Comment[nl]=Animatie voor een venster dat gaat naar volledig scherm en deze verlaat
|
||||
Comment[nn]=Animasjon for vindauge som går til eller frå fullskjermsmodus
|
||||
Comment[pl]=Animacja dla okna wchodzącego i wychodzącego z trybu pełnego ekranu
|
||||
Comment[pt]=Animação para uma janela que vai entrar/sair do modo de ecrã completo
|
||||
Comment[pt_BR]=Animação para uma janela indo e saindo do modo de tela cheia
|
||||
Comment[ro]=Animație pentru o fereastră ce intră sau iese din regim de ecran complet
|
||||
Comment[sk]=Animácia pre okno smerujúce do a opúšťajúce režim celej obrazovky
|
||||
Comment[sl]=Animacija za razpenjanje ali zapuščanje čez zaslon razpetega okna
|
||||
Comment[sv]=Animering för ett fönster till och från fullskärmsläge
|
||||
|
@ -14,12 +24,23 @@ Comment[x-test]=xxAnimation for a window going to and leaving full screen modexx
|
|||
Icon=preferences-system-windows-effect-fullscreen
|
||||
Name=Full Screen
|
||||
Name[ca]=Pantalla completa
|
||||
Name[cs]=Celá obrazovka
|
||||
Name[de]=Vollbild
|
||||
Name[en_GB]=Full Screen
|
||||
Name[es]=Pantalla completa
|
||||
Name[et]=Täisekraan
|
||||
Name[eu]=Pantaila-betea
|
||||
Name[fi]=Koko näyttö
|
||||
Name[fr]=Plein écran
|
||||
Name[ia]=Schermo plen
|
||||
Name[it]=Schermo intero
|
||||
Name[ko]=전체 화면
|
||||
Name[nl]=Volledig scherm
|
||||
Name[nn]=Fullskjerm
|
||||
Name[pl]=Pełny ekran
|
||||
Name[pt]=Ecrã Completo
|
||||
Name[pt_BR]=Tela inteira
|
||||
Name[ro]=Ecran complet
|
||||
Name[sk]=Celá obrazovka
|
||||
Name[sl]=Celotni zaslon
|
||||
Name[sv]=Fullskärm
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
#######################################
|
||||
# Effect
|
||||
|
||||
#######################################
|
||||
# Config
|
||||
set(kwin_icc_config_SRCS icc_config.cpp)
|
||||
ki18n_wrap_ui(kwin_icc_config_SRCS icc_config.ui)
|
||||
qt5_add_dbus_interface(kwin_icc_config_SRCS ${kwin_effects_dbus_xml} kwineffects_interface)
|
||||
kconfig_add_kcfg_files(kwin_icc_config_SRCS iccconfig.kcfgc)
|
||||
|
||||
add_library(kwin_icc_config MODULE ${kwin_icc_config_SRCS})
|
||||
|
||||
## Build separate plugin
|
||||
#find_package(PkgConfig)
|
||||
#pkg_check_modules(LCMS2 REQUIRED lcms2)
|
||||
#set_package_properties(LCMS2 PROPERTIES TYPE REQUIRED PURPOSE "Required for ICC color correction.")
|
||||
#
|
||||
#kwin4_add_effect(icc icc.cpp)
|
||||
#target_link_libraries(kwin4_effect_icc PUBLIC ${LCMS2_LIBRARIES})
|
||||
#target_include_directories(kwin4_effect_icc PUBLIC ${LCMS2_INCLUDE_DIRS})
|
||||
#target_compile_options(kwin4_effect_icc PUBLIC ${LCMS2_CFLAGS_OTHER})
|
||||
|
||||
target_link_libraries(kwin_icc_config
|
||||
KF5::ConfigWidgets
|
||||
KF5::I18n
|
||||
KF5::Service
|
||||
KF5::XmlGui
|
||||
)
|
||||
|
||||
kcoreaddons_desktop_to_json(kwin_icc_config icc_config.desktop SERVICE_TYPES kcmodule.desktop)
|
||||
|
||||
install(
|
||||
TARGETS
|
||||
kwin_icc_config
|
||||
DESTINATION
|
||||
${PLUGIN_INSTALL_DIR}/kwin/effects/configs
|
||||
)
|
|
@ -0,0 +1,26 @@
|
|||
uniform sampler2D sampler;
|
||||
|
||||
varying vec2 texcoord0;
|
||||
|
||||
uniform sampler3D clut;
|
||||
|
||||
uniform vec4 modulation;
|
||||
|
||||
uniform float saturation;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 tex = texture2D(sampler, texcoord0);
|
||||
|
||||
if (saturation != 1.0) {
|
||||
vec3 desaturated = tex.rgb * vec3( 0.30, 0.59, 0.11 );
|
||||
desaturated = vec3( dot( desaturated, tex.rgb ));
|
||||
tex.rgb = tex.rgb * vec3( saturation ) + desaturated * vec3( 1.0 - saturation );
|
||||
}
|
||||
|
||||
tex.rgb = texture3D(clut, tex.rgb).rgb;
|
||||
tex *= modulation;
|
||||
tex.rgb *= tex.a;
|
||||
|
||||
gl_FragColor = tex;
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
#version 140
|
||||
uniform sampler2D sampler;
|
||||
|
||||
in vec2 texcoord0;
|
||||
|
||||
uniform sampler3D clut;
|
||||
|
||||
out vec4 fragColor;
|
||||
|
||||
uniform vec4 modulation;
|
||||
|
||||
uniform float saturation;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 tex = texture(sampler, texcoord0);
|
||||
|
||||
if (saturation != 1.0) {
|
||||
vec3 desaturated = tex.rgb * vec3( 0.30, 0.59, 0.11 );
|
||||
desaturated = vec3( dot( desaturated, tex.rgb ));
|
||||
tex.rgb = tex.rgb * vec3( saturation ) + desaturated * vec3( 1.0 - saturation );
|
||||
}
|
||||
|
||||
tex.rgb = texture(clut, tex.rgb).rgb;
|
||||
tex *= modulation;
|
||||
tex.rgb *= tex.a;
|
||||
|
||||
fragColor = tex;
|
||||
}
|
|
@ -0,0 +1,242 @@
|
|||
/********************************************************************
|
||||
KWin - the KDE window manager
|
||||
This file is part of the KDE project.
|
||||
|
||||
Copyright (C) 2019 Vitaliy Filippov <vitalif@yourcmc.ru>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*********************************************************************/
|
||||
|
||||
#include "icc.h"
|
||||
#include "iccconfig.h"
|
||||
#include "kwinglplatform.h"
|
||||
|
||||
#include "lcms2.h"
|
||||
|
||||
#include <QAction>
|
||||
#include <QFile>
|
||||
#include <KGlobalAccel>
|
||||
#include <KLocalizedString>
|
||||
#include <QStandardPaths>
|
||||
|
||||
static const int LUT_POINTS = 64;
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
ICCEffect::ICCEffect()
|
||||
: m_valid(false),
|
||||
m_shader(NULL),
|
||||
m_texture(0),
|
||||
m_clut(NULL)
|
||||
{
|
||||
initConfig<ICCConfig>();
|
||||
reconfigure(ReconfigureAll);
|
||||
}
|
||||
|
||||
ICCEffect::~ICCEffect()
|
||||
{
|
||||
if (m_shader)
|
||||
delete m_shader;
|
||||
if (m_clut)
|
||||
delete[] m_clut;
|
||||
if (m_texture != 0)
|
||||
glDeleteTextures(1, &m_texture);
|
||||
}
|
||||
|
||||
bool ICCEffect::supported()
|
||||
{
|
||||
return effects->compositingType() == OpenGL2Compositing;
|
||||
}
|
||||
|
||||
void ICCEffect::reconfigure(ReconfigureFlags flags)
|
||||
{
|
||||
Q_UNUSED(flags)
|
||||
|
||||
ICCConfig::self()->read();
|
||||
|
||||
m_sourceICC = ICCConfig::self()->sourceICC().trimmed();
|
||||
m_targetICC = ICCConfig::self()->targetICC().trimmed();
|
||||
|
||||
loadData();
|
||||
|
||||
effects->addRepaintFull();
|
||||
}
|
||||
|
||||
bool ICCEffect::loadData()
|
||||
{
|
||||
m_valid = false;
|
||||
|
||||
if (m_shader)
|
||||
delete m_shader;
|
||||
if (m_clut)
|
||||
delete[] m_clut;
|
||||
if (m_texture != 0)
|
||||
glDeleteTextures(1, &m_texture);
|
||||
|
||||
m_shader = ShaderManager::instance()->generateShaderFromResources(ShaderTrait::MapTexture, QString(), QStringLiteral("icc.frag"));
|
||||
if (!m_shader->isValid())
|
||||
{
|
||||
qCCritical(KWINEFFECTS) << "The shader failed to load!";
|
||||
return false;
|
||||
}
|
||||
ShaderManager::instance()->pushShader(m_shader);
|
||||
m_shader->setUniform("clut", 3); // GL_TEXTURE3
|
||||
ShaderManager::instance()->popShader();
|
||||
|
||||
m_clut = makeCLUT(m_sourceICC.trimmed().isEmpty() ? NULL : m_sourceICC.toLocal8Bit().data(), m_targetICC.toLocal8Bit().data());
|
||||
|
||||
if (m_clut)
|
||||
{
|
||||
m_texture = setupCCTexture(m_clut);
|
||||
|
||||
if (m_texture)
|
||||
{
|
||||
m_valid = true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
uint8_t *ICCEffect::makeCLUT(const char* source_icc, const char* target_icc)
|
||||
{
|
||||
uint8_t *clut = NULL, *clut_source = NULL;
|
||||
cmsHPROFILE source, target;
|
||||
cmsHTRANSFORM transform;
|
||||
source = source_icc ? cmsOpenProfileFromFile(source_icc, "r") : cmsCreate_sRGBProfile();
|
||||
if (!source)
|
||||
goto free_nothing;
|
||||
target = cmsOpenProfileFromFile(target_icc, "r");
|
||||
if (!target)
|
||||
goto free_source;
|
||||
transform = cmsCreateTransform(
|
||||
source, TYPE_RGB_8, target, TYPE_RGB_8,
|
||||
INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_BLACKPOINTCOMPENSATION
|
||||
);
|
||||
if (!transform)
|
||||
goto free_target;
|
||||
clut_source = new uint8_t[LUT_POINTS*LUT_POINTS*LUT_POINTS*3];
|
||||
if (!clut_source)
|
||||
goto free_transform;
|
||||
for (int b = 0, addr = 0; b < LUT_POINTS; b++)
|
||||
{
|
||||
for (int g = 0; g < LUT_POINTS; g++)
|
||||
{
|
||||
for (int r = 0; r < LUT_POINTS; r++, addr += 3)
|
||||
{
|
||||
clut_source[addr] = 255*r/(LUT_POINTS-1);
|
||||
clut_source[addr+1] = 255*g/(LUT_POINTS-1);
|
||||
clut_source[addr+2] = 255*b/(LUT_POINTS-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
clut = new uint8_t[LUT_POINTS*LUT_POINTS*LUT_POINTS*3];
|
||||
if (!clut)
|
||||
goto free_clut_source;
|
||||
cmsDoTransform(transform, clut_source, clut, LUT_POINTS*LUT_POINTS*LUT_POINTS);
|
||||
/*for (int b = 0, addr = 0; b < LUT_POINTS; b++)
|
||||
{
|
||||
for (int g = 0; g < LUT_POINTS; g++)
|
||||
{
|
||||
for (int r = 0; r < LUT_POINTS; r++, addr += 3)
|
||||
{
|
||||
printf("cLUT %02x%02x%02x -> %02x%02x%02x\n", 255*r/(LUT_POINTS-1), 255*g/(LUT_POINTS-1), 255*b/(LUT_POINTS-1), clut[addr], clut[addr+1], clut[addr+2]);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
free_clut_source:
|
||||
delete[] clut_source;
|
||||
free_transform:
|
||||
cmsDeleteTransform(transform);
|
||||
free_target:
|
||||
cmsCloseProfile(target);
|
||||
free_source:
|
||||
cmsCloseProfile(source);
|
||||
free_nothing:
|
||||
return clut;
|
||||
}
|
||||
|
||||
GLuint ICCEffect::setupCCTexture(uint8_t *clut)
|
||||
{
|
||||
GLenum err = glGetError();
|
||||
GLuint texture;
|
||||
|
||||
glGenTextures(1, &texture);
|
||||
|
||||
glBindTexture(GL_TEXTURE_3D, texture);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
|
||||
glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB8,
|
||||
LUT_POINTS, LUT_POINTS, LUT_POINTS,
|
||||
0, GL_RGB, GL_UNSIGNED_BYTE, clut);
|
||||
|
||||
if ((err = glGetError()) != GL_NO_ERROR)
|
||||
{
|
||||
glDeleteTextures(1, &texture);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return texture;
|
||||
}
|
||||
|
||||
void ICCEffect::drawWindow(EffectWindow* w, int mask, const QRegion ®ion, WindowPaintData& data)
|
||||
{
|
||||
if (m_valid)
|
||||
{
|
||||
glActiveTexture(GL_TEXTURE3);
|
||||
glBindTexture(GL_TEXTURE_3D, m_texture);
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
ShaderManager *shaderManager = ShaderManager::instance();
|
||||
shaderManager->pushShader(m_shader);
|
||||
data.shader = m_shader;
|
||||
}
|
||||
|
||||
effects->drawWindow(w, mask, region, data);
|
||||
|
||||
if (m_valid)
|
||||
{
|
||||
ShaderManager::instance()->popShader();
|
||||
}
|
||||
}
|
||||
|
||||
void ICCEffect::paintEffectFrame(KWin::EffectFrame* frame, const QRegion ®ion, double opacity, double frameOpacity)
|
||||
{
|
||||
if (m_valid)
|
||||
{
|
||||
glActiveTexture(GL_TEXTURE3);
|
||||
glBindTexture(GL_TEXTURE_3D, m_texture);
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
frame->setShader(m_shader);
|
||||
ShaderBinder binder(m_shader);
|
||||
effects->paintEffectFrame(frame, region, opacity, frameOpacity);
|
||||
}
|
||||
else
|
||||
{
|
||||
effects->paintEffectFrame(frame, region, opacity, frameOpacity);
|
||||
}
|
||||
}
|
||||
|
||||
bool ICCEffect::isActive() const
|
||||
{
|
||||
return m_valid;
|
||||
}
|
||||
|
||||
} // namespace
|
|
@ -0,0 +1,78 @@
|
|||
/********************************************************************
|
||||
KWin - the KDE window manager
|
||||
This file is part of the KDE project.
|
||||
|
||||
Copyright (C) 2019 Vitaliy Filippov <vitalif@yourcmc.ru>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*********************************************************************/
|
||||
|
||||
#ifndef KWIN_ICC_H
|
||||
#define KWIN_ICC_H
|
||||
|
||||
#include <kwineffects.h>
|
||||
#include "kwinglutils.h"
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
class GLShader;
|
||||
|
||||
/**
|
||||
* Applies cLUT (32x32x32 RGB LUT)-based color correction to the whole desktop
|
||||
* cLUT is generated from a pair of ICC profiles using LCMS2
|
||||
*/
|
||||
class ICCEffect
|
||||
: public Effect
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ICCEffect();
|
||||
~ICCEffect();
|
||||
|
||||
void reconfigure(ReconfigureFlags flags) override;
|
||||
void drawWindow(EffectWindow* w, int mask, const QRegion ®ion, WindowPaintData& data) override;
|
||||
void paintEffectFrame(KWin::EffectFrame* frame, const QRegion ®ion, double opacity, double frameOpacity) override;
|
||||
bool isActive() const override;
|
||||
|
||||
int requestedEffectChainPosition() const override;
|
||||
|
||||
static bool supported();
|
||||
|
||||
public Q_SLOTS:
|
||||
|
||||
protected:
|
||||
bool loadData();
|
||||
|
||||
private:
|
||||
bool m_inited;
|
||||
bool m_valid;
|
||||
QString m_sourceICC;
|
||||
QString m_targetICC;
|
||||
GLShader* m_shader;
|
||||
GLuint m_texture;
|
||||
uint8_t *m_clut;
|
||||
|
||||
uint8_t *makeCLUT(const char* source_icc, const char* target_icc);
|
||||
GLuint setupCCTexture(uint8_t *clut);
|
||||
};
|
||||
|
||||
inline int ICCEffect::requestedEffectChainPosition() const
|
||||
{
|
||||
return 98;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
|
||||
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
|
||||
<kcfgfile arg="true"/>
|
||||
<group name="Effect-ICC">
|
||||
<entry name="SourceICC" type="String">
|
||||
<default></default>
|
||||
</entry>
|
||||
<entry name="TargetICC" type="String">
|
||||
<default></default>
|
||||
</entry>
|
||||
</group>
|
||||
</kcfg>
|
|
@ -0,0 +1,82 @@
|
|||
/********************************************************************
|
||||
KWin - the KDE window manager
|
||||
This file is part of the KDE project.
|
||||
|
||||
Copyright (C) 2019 Vitaliy Filippov <vitalif@yourcmc.ru>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*********************************************************************/
|
||||
|
||||
#include "icc_config.h"
|
||||
#include <kwineffects_interface.h>
|
||||
#include "iccconfig.h"
|
||||
#include <config-kwin.h>
|
||||
|
||||
#include <QAction>
|
||||
|
||||
#include <KLocalizedString>
|
||||
#include <KActionCollection>
|
||||
#include <KAboutData>
|
||||
#include <KPluginFactory>
|
||||
|
||||
#include <QVBoxLayout>
|
||||
|
||||
K_PLUGIN_FACTORY_WITH_JSON(ICCEffectConfigFactory,
|
||||
"icc_config.json",
|
||||
registerPlugin<KWin::ICCEffectConfig>();)
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
ICCEffectConfig::ICCEffectConfig(QWidget* parent, const QVariantList& args) :
|
||||
KCModule(KAboutData::pluginData(QStringLiteral("icc")), parent, args)
|
||||
{
|
||||
ui.setupUi(this);
|
||||
ICCConfig::instance(KWIN_CONFIG);
|
||||
addConfig(ICCConfig::self(), this);
|
||||
load();
|
||||
}
|
||||
|
||||
ICCEffectConfig::~ICCEffectConfig()
|
||||
{
|
||||
// Undo unsaved changes
|
||||
}
|
||||
|
||||
void ICCEffectConfig::load()
|
||||
{
|
||||
KCModule::load();
|
||||
|
||||
emit changed(false);
|
||||
}
|
||||
|
||||
void ICCEffectConfig::save()
|
||||
{
|
||||
KCModule::save();
|
||||
|
||||
emit changed(false);
|
||||
OrgKdeKwinEffectsInterface interface(QStringLiteral("org.kde.KWin"),
|
||||
QStringLiteral("/Effects"),
|
||||
QDBusConnection::sessionBus());
|
||||
interface.reconfigureEffect(QStringLiteral("icc"));
|
||||
}
|
||||
|
||||
void ICCEffectConfig::defaults()
|
||||
{
|
||||
emit changed(true);
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
#include "icc_config.moc"
|
|
@ -0,0 +1,9 @@
|
|||
[Desktop Entry]
|
||||
Type=Service
|
||||
X-KDE-ServiceTypes=KCModule
|
||||
|
||||
X-KDE-Library=kwin_icc_config
|
||||
X-KDE-ParentComponents=icc
|
||||
|
||||
Name=ICC color correction
|
||||
Name[ru]=ICC цветокоррекция
|
|
@ -0,0 +1,48 @@
|
|||
/********************************************************************
|
||||
KWin - the KDE window manager
|
||||
This file is part of the KDE project.
|
||||
|
||||
Copyright (C) 2019 Vitaliy Filippov <vitalif@yourcmc.ru>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*********************************************************************/
|
||||
|
||||
#ifndef KWIN_ICC_CONFIG_H
|
||||
#define KWIN_ICC_CONFIG_H
|
||||
|
||||
#include <kcmodule.h>
|
||||
#include "ui_icc_config.h"
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
class ICCEffectConfig : public KCModule
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ICCEffectConfig(QWidget* parent = 0, const QVariantList& args = QVariantList());
|
||||
~ICCEffectConfig();
|
||||
|
||||
public Q_SLOTS:
|
||||
virtual void save();
|
||||
virtual void load();
|
||||
virtual void defaults();
|
||||
|
||||
private:
|
||||
::Ui::ICCEffectConfig ui;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif
|
|
@ -0,0 +1,59 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ICCEffectConfig</class>
|
||||
<widget class="QWidget" name="ICCEffectConfig">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>642</width>
|
||||
<height>107</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QFormLayout" name="iccForm">
|
||||
<property name="labelAlignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="sourceICCProfileLabel">
|
||||
<property name="text">
|
||||
<string>Source ICC profile file:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="kcfg_SourceICC">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>leave empty to use sRGB (default color space)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="targetICCProfileLabel">
|
||||
<property name="text">
|
||||
<string>Target ICC profile file:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="kcfg_TargetICC">
|
||||
<property name="placeholderText">
|
||||
<string>select your display's ICC profile here</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
|
@ -0,0 +1,5 @@
|
|||
File=icc.kcfg
|
||||
ClassName=ICCConfig
|
||||
NameSpace=KWin
|
||||
Singleton=true
|
||||
Mutators=true
|
|
@ -26,6 +26,7 @@ Name[nn]=Logg ut
|
|||
Name[pl]=Wylogowywanie
|
||||
Name[pt]=Encerrar
|
||||
Name[pt_BR]=Encerrar sessão
|
||||
Name[ro]=Ieșire din sistem
|
||||
Name[ru]=Завершение работы
|
||||
Name[sk]=Odhlásiť sa
|
||||
Name[sl]=Odjava
|
||||
|
@ -61,6 +62,7 @@ Comment[nn]=Ton ut til utloggingsbiletet
|
|||
Comment[pl]=Płynne zanikanie do ekranu wylogowywania
|
||||
Comment[pt]=Desvanecer suavemente para o ecrã de encerramento
|
||||
Comment[pt_BR]=Suaviza o desaparecimento para a tela de encerramento da sessão
|
||||
Comment[ro]=Estompează lin spre ecranul de ieșire
|
||||
Comment[ru]=Плавное появление экрана завершения работы
|
||||
Comment[sk]=Plynule zobrazí plochu pri odhlásení
|
||||
Comment[sl]=Postopoma okno zbledi v zaslon za odjavo
|
||||
|
|
|
@ -59,7 +59,7 @@ Name[pa]=ਸ਼ੀਸ਼ਾ ਵੇਖਣਾ
|
|||
Name[pl]=Lupa
|
||||
Name[pt]=Aparência de Vidro
|
||||
Name[pt_BR]=Espelho
|
||||
Name[ro]=Binoclu
|
||||
Name[ro]=Lentilă
|
||||
Name[ru]=Линза
|
||||
Name[se]=Stuoridanláse
|
||||
Name[si]=වීදුරු ලෙස පෙනෙන
|
||||
|
|
|
@ -140,13 +140,13 @@ void MagicLampEffect::paintWindow(EffectWindow* w, int mask, QRegion region, Win
|
|||
QRect panelScreen = effects->clientArea(ScreenArea, panel);
|
||||
if (panel->width() >= panel->height()) {
|
||||
// horizontal panel
|
||||
if (panel->y() == panelScreen.y())
|
||||
if (panel->y() <= panelScreen.height()/2)
|
||||
position = Top;
|
||||
else
|
||||
position = Bottom;
|
||||
} else {
|
||||
// vertical panel
|
||||
if (panel->x() == panelScreen.x())
|
||||
if (panel->x() <= panelScreen.width()/2)
|
||||
position = Left;
|
||||
else
|
||||
position = Right;
|
||||
|
|
|
@ -64,6 +64,7 @@ Name[nn]=Formendring for sprettoppvindauge
|
|||
Name[pl]=Zmiennokształtne elementy pomocnicze
|
||||
Name[pt]=Mensagens com mudança de forma
|
||||
Name[pt_BR]=Mensagens com mudança de forma
|
||||
Name[ro]=Indicii în schimbare
|
||||
Name[ru]=Анимация преобразования всплывающих окон
|
||||
Name[sk]=Vysúvať vyskakovacie okná
|
||||
Name[sl]=Prehajajoča pojavna okna
|
||||
|
|
|
@ -25,6 +25,7 @@ Name[nn]=Skalering
|
|||
Name[pl]=Skalowanie
|
||||
Name[pt]=Escala
|
||||
Name[pt_BR]=Escala
|
||||
Name[ro]=Scalare
|
||||
Name[ru]=Масштабирование
|
||||
Name[sk]=Škálovať
|
||||
Name[sl]=Merilo
|
||||
|
@ -58,6 +59,7 @@ Comment[nn]=Skaler vindauge jamt inn og ut når dei vert viste eller gøymde
|
|||
Comment[pl]=Okna gładko pomniejszają się przy otwieraniu i powiększają przy zamykaniu
|
||||
Comment[pt]=Fazer com que as janelas apareçam/desapareçam suavemente quando aparecem ou ficam escondidas
|
||||
Comment[pt_BR]=Faz com que as janelas aumentem ou reduzam o seu tamanho de forma suave ao serem exibidas ou ocultadas
|
||||
Comment[ro]=Face ferestrele să se scaleze lin când sunt arătate sau ascunse
|
||||
Comment[ru]=Плавное увеличение или уменьшение окон при их появлении и скрытии
|
||||
Comment[sk]=Okná sa plynule objavia/zmiznú pri ich zobrazení alebo skrytí
|
||||
Comment[sl]=Okna se pojavijo in izginejo postopoma kadar se prikažejo ali skrijejo
|
||||
|
|
|
@ -506,9 +506,14 @@ bool ScreenShotEffect::checkCall() const
|
|||
|
||||
QString ScreenShotEffect::interactive(int mask)
|
||||
{
|
||||
if (!checkCall()) {
|
||||
if (!calledFromDBus()) {
|
||||
return QString();
|
||||
}
|
||||
if (isTakingScreenshot()) {
|
||||
sendErrorReply(s_errorAlreadyTaking, s_errorAlreadyTakingMsg);
|
||||
return QString();
|
||||
}
|
||||
|
||||
m_type = (ScreenShotType) mask;
|
||||
m_windowMode = WindowMode::File;
|
||||
m_replyMessage = message();
|
||||
|
@ -532,9 +537,14 @@ QString ScreenShotEffect::interactive(int mask)
|
|||
|
||||
void ScreenShotEffect::interactive(QDBusUnixFileDescriptor fd, int mask)
|
||||
{
|
||||
if (!checkCall()) {
|
||||
if (!calledFromDBus()) {
|
||||
return;
|
||||
}
|
||||
if (isTakingScreenshot()) {
|
||||
sendErrorReply(s_errorAlreadyTaking, s_errorAlreadyTakingMsg);
|
||||
return;
|
||||
}
|
||||
|
||||
m_fd = dup(fd.fileDescriptor());
|
||||
if (m_fd == -1) {
|
||||
sendErrorReply(s_errorFd, s_errorFdMsg);
|
||||
|
@ -684,15 +694,12 @@ QImage ScreenShotEffect::blitScreenshot(const QRect &geometry, const qreal scale
|
|||
QImage img;
|
||||
if (effects->isOpenGLCompositing())
|
||||
{
|
||||
int width = geometry.width();
|
||||
int height = geometry.height();
|
||||
const QSize nativeSize = geometry.size() * scale;
|
||||
|
||||
if (GLRenderTarget::blitSupported() && !GLPlatform::instance()->isGLES()) {
|
||||
|
||||
width = static_cast<int>(width * scale);
|
||||
height = static_cast<int>(height * scale);
|
||||
|
||||
img = QImage(width, height, QImage::Format_ARGB32);
|
||||
GLTexture tex(GL_RGBA8, width, height);
|
||||
img = QImage(nativeSize.width(), nativeSize.height(), QImage::Format_ARGB32);
|
||||
GLTexture tex(GL_RGBA8, nativeSize.width(), nativeSize.height());
|
||||
GLRenderTarget target(tex);
|
||||
target.blitFromFramebuffer(geometry);
|
||||
// copy content from framebuffer into image
|
||||
|
@ -700,10 +707,10 @@ QImage ScreenShotEffect::blitScreenshot(const QRect &geometry, const qreal scale
|
|||
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, static_cast<GLvoid*>(img.bits()));
|
||||
tex.unbind();
|
||||
} else {
|
||||
img = QImage(width, height, QImage::Format_ARGB32);
|
||||
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*)img.bits());
|
||||
img = QImage(nativeSize.width(), nativeSize.height(), QImage::Format_ARGB32);
|
||||
glReadPixels(0, 0, nativeSize.width(), nativeSize.height(), GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*)img.bits());
|
||||
}
|
||||
ScreenShotEffect::convertFromGLImage(img, width, height);
|
||||
ScreenShotEffect::convertFromGLImage(img, nativeSize.width(), nativeSize.height());
|
||||
}
|
||||
|
||||
#ifdef KWIN_HAVE_XRENDER_COMPOSITING
|
||||
|
|
|
@ -22,6 +22,7 @@ Name[nn]=Avslutt økt
|
|||
Name[pl]=Opuszczenie sesji
|
||||
Name[pt]=Saída da Sessão
|
||||
Name[pt_BR]=Saída da sessão
|
||||
Name[ro]=Părăsirea sesiunii
|
||||
Name[ru]=Завершение сеанса
|
||||
Name[sk]=Ukončenie sedenia
|
||||
Name[sl]=Zapri sejo
|
||||
|
@ -51,6 +52,7 @@ Comment[nn]=Hald skrivebordsbakgrunnen i live heilt til utlogginga er fullført
|
|||
Comment[pl]=Utrzymuj tło pulpitu podczas wylogowania, aż do końca
|
||||
Comment[pt]=Manter o fundo do ecrã activo durante a saída da sessão até ao fim
|
||||
Comment[pt_BR]=Mantém ativo o fundo da área de trabalho até o fim do fechamento da sessão
|
||||
Comment[ro]=Păstrează viu fundalul biroului în timpul ieșirii din sesiune până la capăt
|
||||
Comment[ru]=Сохранение фона рабочего стола до окончания завершения сеанса
|
||||
Comment[sk]=Ponechať pozadie plochy aktívne počas odhlásenia do skončenia
|
||||
Comment[sl]=Pusti ozadje namizja živo ob odjavi do konca
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<file alias="cylinder.vert">cube/data/1.10/cylinder.vert</file>
|
||||
<file alias="sphere.vert">cube/data/1.10/sphere.vert</file>
|
||||
<file alias="invert.frag">invert/data/1.10/invert.frag</file>
|
||||
<file alias="icc.frag">icc/data/1.10/icc.frag</file>
|
||||
<file alias="lookingglass.frag">lookingglass/data/1.10/lookingglass.frag</file>
|
||||
<file alias="blinking-startup-fragment.glsl">startupfeedback/data/1.10/blinking-startup-fragment.glsl</file>
|
||||
</qresource>
|
||||
|
@ -16,6 +17,7 @@
|
|||
<file alias="cylinder.vert">cube/data/1.40/cylinder.vert</file>
|
||||
<file alias="sphere.vert">cube/data/1.40/sphere.vert</file>
|
||||
<file alias="invert.frag">invert/data/1.40/invert.frag</file>
|
||||
<file alias="icc.frag">icc/data/1.40/icc.frag</file>
|
||||
<file alias="lookingglass.frag">lookingglass/data/1.40/lookingglass.frag</file>
|
||||
<file alias="blinking-startup-fragment.glsl">startupfeedback/data/1.40/blinking-startup-fragment.glsl</file>
|
||||
</qresource>
|
||||
|
|
|
@ -62,7 +62,7 @@ Name[pa]=FPS ਵੇਖੋ
|
|||
Name[pl]=Pokaż ilość klatek na sekundę
|
||||
Name[pt]=Mostrar as IPS
|
||||
Name[pt_BR]=Mostrar FPS
|
||||
Name[ro]=Afișează CPS
|
||||
Name[ro]=Arată CPS
|
||||
Name[ru]=График производительности
|
||||
Name[se]=Čájet rámmaid sekunddas
|
||||
Name[si]=FPS පෙන්වන්න
|
||||
|
|
|
@ -56,7 +56,7 @@ Name[pa]=ਪੇਂਟ ਵੇਖੋ
|
|||
Name[pl]=Pokaż rysowane
|
||||
Name[pt]=Mostrar a Pintura
|
||||
Name[pt_BR]=Mostrar pintura
|
||||
Name[ro]=Afișează desenele
|
||||
Name[ro]=Arată vopseaua
|
||||
Name[ru]=Подсвечивать отрисовку
|
||||
Name[se]=Čájet málema
|
||||
Name[si]=ඇඳීම් පෙන්වන්න
|
||||
|
|
|
@ -41,6 +41,8 @@ SlidingPopupsEffect::SlidingPopupsEffect()
|
|||
connect(effects, &EffectsHandler::windowClosed, this, &SlidingPopupsEffect::slideOut);
|
||||
connect(effects, &EffectsHandler::windowDeleted, this, &SlidingPopupsEffect::slotWindowDeleted);
|
||||
connect(effects, &EffectsHandler::propertyNotify, this, &SlidingPopupsEffect::slotPropertyNotify);
|
||||
connect(effects, &EffectsHandler::windowShown, this, &SlidingPopupsEffect::slideIn);
|
||||
connect(effects, &EffectsHandler::windowHidden, this, &SlidingPopupsEffect::slideOut);
|
||||
connect(effects, &EffectsHandler::xcbConnectionChanged, this,
|
||||
[this] {
|
||||
m_atom = effects->announceSupportProperty(QByteArrayLiteral("_KDE_SLIDE"), this);
|
||||
|
|
|
@ -22,6 +22,7 @@ Comment[nn]=Skvis vindauge når dei vert minimerte
|
|||
Comment[pl]=Ściąga okna przy ich minimalizacji
|
||||
Comment[pt]=Esmagar as janelas quando são minimizadas
|
||||
Comment[pt_BR]=Achatar as janelas quando são minimizadas
|
||||
Comment[ro]=Strivește ferestrele când sunt minimizate
|
||||
Comment[ru]=Сжатие окна при сворачивании
|
||||
Comment[sk]=Deformuje okná pri ich minimalizovaní
|
||||
Comment[sl]=Zmečkaj okna, ko jih strneš
|
||||
|
@ -54,6 +55,7 @@ Name[nn]=Skvis
|
|||
Name[pl]=Ściąganie
|
||||
Name[pt]=Esmagar
|
||||
Name[pt_BR]=Achatar
|
||||
Name[ro]=Strivire
|
||||
Name[ru]=Сжатие
|
||||
Name[sk]=Rozpučiť
|
||||
Name[sl]=Zmečkaj
|
||||
|
|
|
@ -43,7 +43,7 @@ Name[ja]=サムネイルをわきに表示
|
|||
Name[kk]=Нобайды шеттеу
|
||||
Name[km]=រូបភាពតូចនៅខាង
|
||||
Name[kn]=ಸೂಚ್ಯಚಿತ್ರ ಬದಿಯಲ್ಲಿ
|
||||
Name[ko]=미리 보기 그림
|
||||
Name[ko]=옆쪽에 축소판
|
||||
Name[lt]=Miniatiūra šone
|
||||
Name[lv]=Sīktēli malā
|
||||
Name[mai]=लघुछवि बाजू मे
|
||||
|
|
|
@ -59,8 +59,10 @@ Comment[ko]=창을 화면 꼭짓점으로 이동
|
|||
Comment[lt]=Perkelti langus į kampus
|
||||
Comment[nl]=Verplaats vensters in de hoeken van het scherm
|
||||
Comment[nn]=Flytt vindauge til skjermhjørne
|
||||
Comment[pl]=Rozsuwa okna w narożniki ekranu
|
||||
Comment[pt]=Mover as janelas para os cantos do ecrã
|
||||
Comment[pt_BR]=Move as janelas para os cantos da tela
|
||||
Comment[ro]=Mută ferestrele în colțurile ecranului
|
||||
Comment[ru]=Перемещение окон в углы экрана
|
||||
Comment[sk]=Presunúť okná do rohov obrazovky
|
||||
Comment[sl]=Pomakne okna v kote zaslona
|
||||
|
|
|
@ -67,7 +67,7 @@ Name[pa]=ਜ਼ੂਮ
|
|||
Name[pl]=Powiększanie
|
||||
Name[pt]=Ampliação
|
||||
Name[pt_BR]=Zoom
|
||||
Name[ro]=Scalare
|
||||
Name[ro]=Apropiere
|
||||
Name[ru]=Масштаб
|
||||
Name[se]=Stuorrudit
|
||||
Name[si]=විශාලණය
|
||||
|
|
52
events.cpp
52
events.cpp
|
@ -165,18 +165,34 @@ QVector<QByteArray> s_xcbEerrors({
|
|||
|
||||
void Workspace::registerEventFilter(X11EventFilter *filter)
|
||||
{
|
||||
if (filter->isGenericEvent())
|
||||
m_genericEventFilters.append(filter);
|
||||
else
|
||||
m_eventFilters.append(filter);
|
||||
if (filter->isGenericEvent()) {
|
||||
m_genericEventFilters.append(new X11EventFilterContainer(filter));
|
||||
} else {
|
||||
m_eventFilters.append(new X11EventFilterContainer(filter));
|
||||
}
|
||||
}
|
||||
|
||||
static X11EventFilterContainer *takeEventFilter(X11EventFilter *eventFilter,
|
||||
QList<QPointer<X11EventFilterContainer>> &list)
|
||||
{
|
||||
for (int i = 0; i < list.count(); ++i) {
|
||||
X11EventFilterContainer *container = list.at(i);
|
||||
if (container->filter() == eventFilter) {
|
||||
return list.takeAt(i);
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void Workspace::unregisterEventFilter(X11EventFilter *filter)
|
||||
{
|
||||
if (filter->isGenericEvent())
|
||||
m_genericEventFilters.removeOne(filter);
|
||||
else
|
||||
m_eventFilters.removeOne(filter);
|
||||
X11EventFilterContainer *container = nullptr;
|
||||
if (filter->isGenericEvent()) {
|
||||
container = takeEventFilter(filter, m_genericEventFilters);
|
||||
} else {
|
||||
container = takeEventFilter(filter, m_eventFilters);
|
||||
}
|
||||
delete container;
|
||||
}
|
||||
|
||||
|
||||
|
@ -219,13 +235,29 @@ bool Workspace::workspaceEvent(xcb_generic_event_t *e)
|
|||
if (eventType == XCB_GE_GENERIC) {
|
||||
xcb_ge_generic_event_t *ge = reinterpret_cast<xcb_ge_generic_event_t *>(e);
|
||||
|
||||
foreach (X11EventFilter *filter, m_genericEventFilters) {
|
||||
// We need to make a shadow copy of the event filter list because an activated event
|
||||
// filter may mutate it by removing or installing another event filter.
|
||||
const auto eventFilters = m_genericEventFilters;
|
||||
|
||||
for (X11EventFilterContainer *container : eventFilters) {
|
||||
if (!container) {
|
||||
continue;
|
||||
}
|
||||
X11EventFilter *filter = container->filter();
|
||||
if (filter->extension() == ge->extension && filter->genericEventTypes().contains(ge->event_type) && filter->event(e)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach (X11EventFilter *filter, m_eventFilters) {
|
||||
// We need to make a shadow copy of the event filter list because an activated event
|
||||
// filter may mutate it by removing or installing another event filter.
|
||||
const auto eventFilters = m_eventFilters;
|
||||
|
||||
for (X11EventFilterContainer *container : eventFilters) {
|
||||
if (!container) {
|
||||
continue;
|
||||
}
|
||||
X11EventFilter *filter = container->filter();
|
||||
if (filter->eventTypes().contains(eventType) && filter->event(e)) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,6 @@ InputPanelV1Client::InputPanelV1Client(InputPanelSurfaceV1Interface *panelSurfac
|
|||
setSkipTaskbar(true);
|
||||
setPositionSyncMode(SyncMode::Sync);
|
||||
setSizeSyncMode(SyncMode::Sync);
|
||||
setupCompositing();
|
||||
|
||||
connect(surface(), &SurfaceInterface::aboutToBeDestroyed, this, &InputPanelV1Client::destroyClient);
|
||||
connect(surface(), &SurfaceInterface::sizeChanged, this, &InputPanelV1Client::reposition);
|
||||
|
|
|
@ -211,6 +211,11 @@ bool InternalClient::isResizable() const
|
|||
return true;
|
||||
}
|
||||
|
||||
bool InternalClient::isPlaceable() const
|
||||
{
|
||||
return !m_internalWindowFlags.testFlag(Qt::BypassWindowManagerHint) && !m_internalWindowFlags.testFlag(Qt::Popup);
|
||||
}
|
||||
|
||||
bool InternalClient::noBorder() const
|
||||
{
|
||||
return m_userNoBorder || m_internalWindowFlags.testFlag(Qt::FramelessWindowHint) || m_internalWindowFlags.testFlag(Qt::Popup);
|
||||
|
|
|
@ -45,6 +45,7 @@ public:
|
|||
bool isMovable() const override;
|
||||
bool isMovableAcrossScreens() const override;
|
||||
bool isResizable() const override;
|
||||
bool isPlaceable() const override;
|
||||
bool noBorder() const override;
|
||||
bool userCanSetNoBorder() const override;
|
||||
bool wantsInput() const override;
|
||||
|
|
|
@ -90,6 +90,7 @@ Comment[pa]=ਡੈਸਕਟਾਪ ਪਰਭਾਵ ਲਈ ਕੰਪੋਜੀਟ
|
|||
Comment[pl]=Ustawienia kompozytora dla efektów pulpitu
|
||||
Comment[pt]=Configuração do Compositor para os Efeitos do Ecrã
|
||||
Comment[pt_BR]=Definições do Compositor para os efeitos da área de trabalho
|
||||
Comment[ro]=Configurări compozitor pentru efecte de birou
|
||||
Comment[ru]=Настройка движка эффектов рабочего стола
|
||||
Comment[sk]=Nastavenia kompozítora pre efekty plochy
|
||||
Comment[sl]=Nastavitve upravljalnika skladnje za učinke namizja
|
||||
|
@ -123,8 +124,10 @@ X-KDE-Keywords[ko]=kwin,window,manager,compositing,effect,3D effects,2D effects,
|
|||
X-KDE-Keywords[lt]=kwin,langas,langai,tvarkytuvė,tvarkytuve,komponavimas,kompozicionavimas,efektas,efektai,3D efektai,2D efektai,trimačiai efektai,trimaciai efektai,dvimačiai efektai,dvimaciai efektai,OpenGL,XRender,vaizdo nustatymai,vaizdo nuostatos,video nustatymai,video nuostatos,grafiniai efektai,grafikos efektai,darbalaukio efektai,darbastalio efektai
|
||||
X-KDE-Keywords[nl]=kwin,window,manager,beheerder,compositing,effecten,3D-effecten,2D-effecten,OpenGL,XRender,video-instellingen,grafische effecten,bureaubladeffecten
|
||||
X-KDE-Keywords[nn]=kwin,vindauge,vindaugshandsamar,samansetjing,effekt,3D-effektar,2D-effektar,OpenGL,XRender,videoinnstillingar,grafiske effektar,skrivebordseffektar
|
||||
X-KDE-Keywords[pl]=kwin,okno,menadżer,menedżer,zarządca,kompozytor,efekt,efekt 3D,efekt 2D,OpenGL,XRender,ustawienia wideo,efekty graficzne,efekty pulpitu
|
||||
X-KDE-Keywords[pt]=kwin,janela,gestor,composição,efeito,efeitos 3D,efeitos 2D,OpenGL,XRender,configuração do vídeo,efeitos gráficos,efeitos do ecrã
|
||||
X-KDE-Keywords[pt_BR]=kwin,janela,gerenciador,composição,efeito,efeitos 3D,efeitos 2D,OpenGL,XRender,configurações de vídeo,efeitos gráficos,efeitos da área de trabalho
|
||||
X-KDE-Keywords[ro]=kwin,fereastră,gestionar,compoziționare,efect,efecte 3D,OpenGL,XRender,configurări video,efecte grafice,efecte de birou
|
||||
X-KDE-Keywords[ru]=kwin,window,manager,compositing,effect,3D effects,2D effects,OpenGL,XRender,video settings,graphical effects,desktop effects,композитинг,композитный диспетчер окон,эффекты рабочего стола,графические эффекты,рендеринг,параметры видео,настройка видео
|
||||
X-KDE-Keywords[sk]=kwin,okno,správca,kompozícia,efekt,3D efekty,2D efekty,OpenGL,XRender,nastavenia videa,grafické efekty,efekty plochy
|
||||
X-KDE-Keywords[sl]=kwin,okna,upravljalnik,skladnja,učinek,3D učinki,2D učinki,OpenGL,XRender,nastavitve videa,video,grafični učinki,hitrost animacije,učinki namizja
|
||||
|
|
|
@ -25,7 +25,7 @@ Name[da]=Vinduesdekorationer
|
|||
Name[de]=Fensterdekoration
|
||||
Name[el]=Διακοσμήσεις παραθύρου
|
||||
Name[en_GB]=Window Decorations
|
||||
Name[es]=Decoración de ventanas
|
||||
Name[es]=Decoraciones de las ventanas
|
||||
Name[et]=Akna dekoratsioonid
|
||||
Name[eu]=Leiho-apaindurak
|
||||
Name[fi]=Ikkunakehykset
|
||||
|
@ -98,6 +98,7 @@ Comment[nn]=Set opp tittellinjer og vindaugsrammer
|
|||
Comment[pl]=Ustawienia pasków tytułów i obramowań okien
|
||||
Comment[pt]=Configurar as barras de título e contornos das janelas
|
||||
Comment[pt_BR]=Configure as barras de títulos e bordas da janela
|
||||
Comment[ro]=Configurează barele de titlu și contururile ferestrelor
|
||||
Comment[ru]=Настройка заголовка и границ окон
|
||||
Comment[sk]=Nastaviť záhlavia a okraje okna
|
||||
Comment[sl]=Nastavi naslovne vrstice in robove oken
|
||||
|
@ -139,6 +140,7 @@ X-KDE-Keywords[nn]=kwin,vindauge,handsamar,ramme,kantlinje,stil,tema,lås,utform
|
|||
X-KDE-Keywords[pl]=kwin,okno,menadżer,obramowanie,styl,motyw,wygląd,odczucie,układ,przycisk, uchwyt,krawędź,kwm,dekoracja
|
||||
X-KDE-Keywords[pt]=kwin,gestor,janela,contorno,estilo,tema,aparência,comportamento,disposição,botão,pega,extremo,kwm,decoração
|
||||
X-KDE-Keywords[pt_BR]=kwin,gerenciador,janela,borda,estilo,tema,aparência,comportamento,layout,botão,canto,extremo,kwm,decoração
|
||||
X-KDE-Keywords[ro]=kwin,fereastră,gestionar,contur,stil,tematică,aspect,comportament,aranjament,mâner,muchie,margine,kwm,decorație
|
||||
X-KDE-Keywords[ru]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,окно,диспетчер,граница,стиль,тема,внешний вид,оформление,разметка,шаблон,кнопка,управление,край
|
||||
X-KDE-Keywords[sk]=kwin,okno,správca,rám,štýl,téma,vzhľad,cítenie,rozloženie,tlačidlo,spracovanie,okraj,kwm,dekorácia
|
||||
X-KDE-Keywords[sl]=kwin,okna,okenski upravljalnik,upravljalnik oken,rob,obroba,slog,tema,videz,obnašanje,občutek,razpored,gumbi,ročica,okraski,kwm
|
||||
|
|
|
@ -43,6 +43,9 @@ KCM.GridView {
|
|||
KDecoration.Settings {
|
||||
id: settingsItem
|
||||
bridge: bridgeItem.bridge
|
||||
Component.onCompleted: {
|
||||
settingsItem.borderSizesIndex = kcm.borderSize
|
||||
}
|
||||
}
|
||||
KDecoration.Decoration {
|
||||
id: inactivePreview
|
||||
|
|
|
@ -27,7 +27,7 @@ Name[da]=Vinduesdekorationer
|
|||
Name[de]=Fensterdekoration
|
||||
Name[el]=Διακοσμήσεις παραθύρου
|
||||
Name[en_GB]=Window Decorations
|
||||
Name[es]=Decoración de ventanas
|
||||
Name[es]=Decoraciones de las ventanas
|
||||
Name[et]=Akna dekoratsioonid
|
||||
Name[eu]=Leiho-apaindurak
|
||||
Name[fi]=Ikkunakehykset
|
||||
|
@ -99,6 +99,7 @@ Comment[nn]=Set opp tittellinjer og vindaugsrammer
|
|||
Comment[pl]=Ustawienia pasków tytułów i obramowań okien
|
||||
Comment[pt]=Configurar as barras de título e contornos das janelas
|
||||
Comment[pt_BR]=Configure as barras de títulos e bordas da janela
|
||||
Comment[ro]=Configurează barele de titlu și contururile ferestrelor
|
||||
Comment[ru]=Настройка заголовка и границ окон
|
||||
Comment[sk]=Nastaviť záhlavia a okraje okna
|
||||
Comment[sl]=Nastavi naslovne vrstice in robove oken
|
||||
|
|
|
@ -11,7 +11,7 @@ Name[da]=Vinduesdekorationer
|
|||
Name[de]=Fensterdekoration
|
||||
Name[el]=Διακοσμήσεις παραθύρου
|
||||
Name[en_GB]=Window Decorations
|
||||
Name[es]=Decoración de ventanas
|
||||
Name[es]=Decoraciones de las ventanas
|
||||
Name[et]=Akna dekoratsioonid
|
||||
Name[eu]=Leiho-apaindurak
|
||||
Name[fi]=Ikkunakehykset
|
||||
|
|
|
@ -98,6 +98,7 @@ Comment[nn]=Set opp navigering, nummer og vising av virtuelle skrivebord
|
|||
Comment[pl]=Ustawienia poruszania się, liczby oraz układu wirtualnych klawiatur
|
||||
Comment[pt]=Configura a navegação, número e disposição dos ecrãs virtuais
|
||||
Comment[pt_BR]=Configura a navegação, quantidade e layout das áreas de trabalho virtuais
|
||||
Comment[ro]=Configurează navigarea, numărul și aranjamentul birourilor virtuale
|
||||
Comment[ru]=Число, расположение и способ переключения рабочих столов
|
||||
Comment[sk]=Nastaviť navigáciu, počet a rozloženie virtuálnych plôch
|
||||
Comment[sl]=Nastavi krmarjenje, število in razporeditev navideznih namizij
|
||||
|
@ -109,7 +110,7 @@ Comment[zh_TW]=設定虛擬桌面的導覽、數字與佈局
|
|||
X-KDE-Keywords=desktop,desktops,number,virtual desktop,multiple desktops,pager,pager widget,pager applet,pager settings
|
||||
X-KDE-Keywords[az]=iş masası,iş masaları,sayı,nömrəsi,virtual iş masası,bir neçə iş masası,səhifə,səhifələmə vidjeti,səhifələmə əlavəsi,səhifələmə ayarları
|
||||
X-KDE-Keywords[bs]=pozadina,pozadine,broj,virtuelna pozadina,višestruka pozadina,pejdžer,dodatak pejdžeru,aplet pejdžer,pejdžer postavke
|
||||
X-KDE-Keywords[ca]=escriptori,escriptoris,nombre,escriptori virtual,múltiples escriptoris,paginador,estri paginador,miniaplicació de paginació,arranjament del paginador
|
||||
X-KDE-Keywords[ca]=escriptori,escriptoris,nombre,escriptori virtual,múltiples escriptoris,paginador,giny paginador,miniaplicació de paginació,arranjament del paginador
|
||||
X-KDE-Keywords[ca@valencia]=escriptori,escriptoris,nombre,escriptori virtual,escriptoris múltiples,paginador,estri paginador,miniaplicació de paginació,arranjament de paginador
|
||||
X-KDE-Keywords[da]=skrivebord,skriveborde,desktop,desktops,virtuelt skrivebord,flere skriveborde,spaces,pager,skrivebordsvælger,pager widget,pager applet
|
||||
X-KDE-Keywords[de]=Arbeitsfläche,Arbeitsflächen,Desktop,Anzahl,Virtuelle Arbeitsfläche,Mehrere Arbeitsflächen,Arbeitsflächenumschalter,Arbeitsflächenumschalter-Bedienelement,Arbeitsflächenumschalter-Miniprogramm,Arbeitsflächenumschalter-Einstellungen
|
||||
|
@ -137,6 +138,7 @@ X-KDE-Keywords[pa]=ਡੈਸਕਟਾਪ,ਗਿਣਤੀ,ਨੰਬਰ,ਅੰਕ,
|
|||
X-KDE-Keywords[pl]=pulpit,pulpity,liczba,pulpity wirtualne,wiele pulpitów
|
||||
X-KDE-Keywords[pt]=ecrã,ecrãs,número,ecrã virtual,múltiplos ecrãs,paginador,elemento paginador,'applet' do paginador,configuração do paginador
|
||||
X-KDE-Keywords[pt_BR]=área de trabalho,áreas de trabalho,desktop,desktops,número,área de trabalho virtual,múltiplas áreas de trabalho,paginador,elemento paginador,miniaplicativo do paginador,configurações do paginador
|
||||
X-KDE-Keywords[ro]=birou,birouri,număr,birou virtual,birouri multiple,paginator,control paginator,miniaplicație paginator,configurare paginator,paginare
|
||||
X-KDE-Keywords[ru]=desktop,desktops,number,virtual desktop,multiple desktops,pager,pager widget,pager applet,pager settings,рабочий стол,рабочие столы,число,виртуальный рабочий стол,несколько рабочих столов,переключатель,переключение,виджет переключения,аплет переключения,параметры переключения,настройки переключения
|
||||
X-KDE-Keywords[sk]=plocha,plochy,číslo,virtuálna plocha,viac plôch,pager,widget pagera,applet pagera,nastavenia pagera
|
||||
X-KDE-Keywords[sl]=namizje,namizja,število namizij,navidezna namizja,več namizij,pozivnik
|
||||
|
|
|
@ -85,6 +85,7 @@ Comment[nn]=Set opp navigering, nummer og vising av virtuelle skrivebord
|
|||
Comment[pl]=Ustawienia poruszania się, liczby oraz układu wirtualnych klawiatur
|
||||
Comment[pt]=Configura a navegação, número e disposição dos ecrãs virtuais
|
||||
Comment[pt_BR]=Configura a navegação, quantidade e layout das áreas de trabalho virtuais
|
||||
Comment[ro]=Configurează navigarea, numărul și aranjamentul birourilor virtuale
|
||||
Comment[ru]=Число, расположение и способ переключения рабочих столов
|
||||
Comment[sk]=Nastaviť navigáciu, počet a rozloženie virtuálnych plôch
|
||||
Comment[sl]=Nastavi krmarjenje, število in razporeditev navideznih namizij
|
||||
|
|
|
@ -85,6 +85,7 @@ Comment[nn]=Samansetjarinnstillingar for skrivebordseffektar
|
|||
Comment[pl]=Ustawienia kompozytora dla efektów pulpitu
|
||||
Comment[pt]=Configuração do compositor para os efeitos do ecrã
|
||||
Comment[pt_BR]=Defina as configurações do compositor para os efeitos da área de trabalho
|
||||
Comment[ro]=Configurează opțiunile compozitorului pentru efecte de birou
|
||||
Comment[ru]=Настройка движка эффектов рабочего стола
|
||||
Comment[sk]=Nastavenia kompozítora pre efekty plochy
|
||||
Comment[sl]=Nastavitve upravljalnika skladnje za učinke namizja
|
||||
|
@ -94,7 +95,7 @@ Comment[x-test]=xxConfigure compositor settings for desktop effectsxx
|
|||
Comment[zh_CN]=配置桌面特效混成器设置
|
||||
Comment[zh_TW]=設定桌面特效的合成器設定
|
||||
|
||||
X-KDE-Keywords=kwin,window,manager,effect,3D effects,2D effects,graphical effects,desktop effects,animations,various animations,window management effects,window switching effect,desktop switching effect,animations,desktop animations,drivers,driver settings,rendering,render,invert effect,looking glass effect,magnifier effect,snap helper effect,track mouse effect,zoom effect,blur effect,fade effect,fade desktop effect,fall apart effect,glide effect,highlight window effect,login effect,logout effect,magic lamp effect,minimize animation effect,mouse mark effect,scale effect,screenshot effect,sheet effect,slide effect,sliding popups effect,thumbnail aside effect,translucency,translucency effect,transparency,window geometry effect,wobbly windows effect,startup feedback effect,dialog parent effect,dim inactive effect,dim screen effect,slide back effect,eye candy,candy,show FPS effect,show paint effect,cover switch effect,desktop cube effect,desktop cube animation effect,desktop grid effect,flip switch effect,present windows effect,resize window effect,background contrast effect
|
||||
X-KDE-Keywords=kwin,window,manager,effect,3D effects,2D effects,graphical effects,desktop effects,animations,various animations,window management effects,window switching effect,desktop switching effect,animations,desktop animations,drivers,driver settings,rendering,render,icc effect,invert effect,looking glass effect,magnifier effect,snap helper effect,track mouse effect,zoom effect,blur effect,fade effect,fade desktop effect,fall apart effect,glide effect,highlight window effect,login effect,logout effect,magic lamp effect,minimize animation effect,mouse mark effect,scale effect,screenshot effect,sheet effect,slide effect,sliding popups effect,thumbnail aside effect,translucency,translucency effect,transparency,window geometry effect,wobbly windows effect,startup feedback effect,dialog parent effect,dim inactive effect,dim screen effect,slide back effect,eye candy,candy,show FPS effect,show paint effect,cover switch effect,desktop cube effect,desktop cube animation effect,desktop grid effect,flip switch effect,present windows effect,resize window effect,background contrast effect
|
||||
X-KDE-Keywords[az]=kwin, pəncərə,menecer,effekt,3D effektlər,2D effektlər,qrafik effektlər,iş masası effektləri,animasiyalar,dəyişkən animasiyalar,pəncərə effektləri idarəsi,pəncərə dəyişdirmə effektləri,iş masası dəyişdirmə effektləri,animasiyalar,iş masası animasiyaları,sürücülər,sürücü ayarları,təsvirin işlənməsi,əks effektlər,linza effekti,lupa effekti,qopma effekti,siçanı izləmə effekti,miqyaslama effekti,yayğınlaşma effekti,solma effekti,iş masasının solması effekti,səpələnmə effekti,süzülmə effekti,vurğulama effekti,pəncərə işıqlandırma effekti,giriş effekti,çıxış effekti,sehirli lampa,animasiyalı yığılma,siçanı işarələmək,tor,ekran şəkli,vərəq,sürüşdürmə,sürüşən pəncərələr,yan miniatürləri,şəffaflıq,pəncərə həndəsəsi,titrək pəncərə,dialoq pəncərəsi,tutqunlaşma,pəncərə tutqunlaşması,ekran tutqunlaşması,geriyə sürüşmə,saniyədə kadrlar,ekranda şəkil çəkmə,örtmə,iş masası kubu animasiyası,kitab vərəqləri,pəncərə təqdimatı,pəncərə ölçüsünün dəyişdirilməsi,arxa fon kontrastı
|
||||
X-KDE-Keywords[ca]=kwin,finestra,gestor,efecte,efectes 3D,efectes 2D,efectes gràfics,efectes d'escriptori,animacions,animacions diverses,efectes en la gestió de les finestres,efecte en el canvi de finestra,efecte en el canvi d'escriptori,animacions,animacions a l'escriptori,controladors,configuració dels controladors,renderització,render,efecte d'inversió,efecte d'aspecte de vidre,efecte de lupa,efecte ajudant del desplaçament,efecte de seguiment del ratolí,efecte de zoom,efecte de difuminat,efecte d'esvaïment,efecte d'esvaïment de l'escriptori,efecte de trencament,efecte de lliscament,efecte de ressaltat de la finestra,efecte en l'inici de la sessió,efecte en sortir de la sessió,efecte de làmpada màgica,efecte d'animació de la minimització,efecte de marca del ratolí,efecte d'apropament,efecte de captura de la pantalla,efecte de full,efecte de diapositiva,efecte de missatges emergents lliscants,efecte de miniatures laterals,translucidesa,efecte de translucidesa,transparència,efecte de geometria de la finestra,efecte de finestres sacsejades,efecte de confirmació d'engegada,efecte de diàleg principal,efecte d'enfosquiment en estar inactiu,efecte d'enfosquiment de la pantalla,efecte de diapositiva prèvia,decoració,efecte per a mostrar els FPS,efecte de mostrar el pintat,efecte de canvi de coberta,efecte de cub de l'escriptori,efecte d'animació del cub de l'escriptori,efecte de quadrícula de l'escriptori,efecte de canvi en roda,efecte de presentació de les finestres,efecte de redimensionat de la finestra,efecte de contrast del fons
|
||||
X-KDE-Keywords[ca@valencia]=kwin,finestra,gestor,efecte,efectes 3D,efectes 2D,efectes gràfics,efectes d'escriptori,animacions,animacions diverses,efectes en la gestió de les finestres,efecte en el canvi de finestra,efecte en el canvi d'escriptori,animacions,animacions en l'escriptori,controladors,configuració dels controladors,renderització,render,efecte d'inversió,efecte d'aspecte de vidre,efecte de lupa,efecte ajudant del desplaçament,efecte de seguiment del ratolí,efecte de zoom,efecte de difuminat,efecte de fosa,efecte de fosa de l'escriptori,efecte de trencament,efecte de lliscament,efecte de ressaltat de la finestra,efecte en l'inici de la sessió,efecte en eixir de la sessió,efecte de làmpada màgica,efecte d'animació de la minimització,efecte de marca del ratolí,efecte d'apropament,efecte de captura de pantalla,efecte de full,efecte de diapositiva,efecte de missatges emergents lliscants,efecte de miniatures laterals,translucidesa,efecte de translucidesa,transparència,efecte de geometria de la finestra,efecte de finestres sacsejades,efecte de retroacció d'inici,efecte de diàleg principal,efecte d'enfosquiment en estar inactiu,efecte d'enfosquiment de la pantalla,efecte de diapositiva prèvia,decoració,efecte per a mostrar els FPS,efecte per a mostrar les zones pintades,efecte de canvi de coberta,efecte de cub de l'escriptori,efecte d'animació del cub de l'escriptori,efecte de graella de l'escriptori,efecte de canvi en roda,efecte de presentació de les finestres,efecte de redimensionat de la finestra,efecte de contrast del fons
|
||||
|
@ -108,6 +109,7 @@ X-KDE-Keywords[fi]=kwin,ikkuna,hallinta,tehoste,3D-tehosteet,2D-tehosteet,graafi
|
|||
X-KDE-Keywords[fr]=kwin, fenêtre, gestionnaire, effet, effets 3D, effets 2D, effets graphiques, effets de bureau, animations, animations variés, effets de gestion des fenêtres, effets de changement de fenêtre, effets de changement de bureau, animations, animation du bureau, pilotes, paramètres du pilote, rendu, rendre, effet d'inversion, effet de verre, effet de loupe, effet d'aide au positionnement, effet de repérage de la souris, effet de zoom, effet de flou, effet de fondu, effet de fondu du bureau, effet d'effondrement, effet de glissement, effet de mise en valeur de la fenêtre, effet de connexion, effet de déconnexion, effet de lampe magique, effet de minimisation de l'application, effet de marque de la souris, effet de gradation, effet de capture d'écran, effet de feuille, effet de glisse, effet d'annotations glissantes, effet vignettes sur le coté, translucidité, effet de translucidité, transparence, effet de géométrie de la fenêtre, effet de fenêtre en gélatine, effet du témoin de démarrage, effet de dialogue parent, effet d'obscurcissement de fenêtre inactive, effet d'obscurcissement du bureau, effet de glissement en arrière, confort visuel, beauté, effet d'affichage du FPS, effet d'affichage des zones peintes, effet de défilement circulaire, effet de bureaux en cube, effet d'animation de cube de bureaux, effet de bureaux en grille, effet d'empilement en perspective, effet de présentation des fenêtres, effet de redimensionnement des fenêtres, effet de contraste du bureau
|
||||
X-KDE-Keywords[gl]=kwin,window,xanela,manager,xestor,effect,efecto,3D effects,efectos 3D,2D effects,efectos 2D,configuración de vídeo,graphical effects,efectos gráficos,efectos visuais,desktop effects,efectos de escritorio,animations,animacións,various animations,animacións diversas,varias animacións,animacións variadas,window management effects,efectos de xestión de xanelas,window switching effect,efecto de cambio de xanela,desktop switching effect,efecto de cambio de escritorio,animations,animacións,desktop animations,animacións de escritorio,animacións dos escritorios,animacións do escritorio,drivers,controlador,controladores,driver settings,configuración dos controladores,configuración do controlador,rendering,renderización,renderizado,renderizamento,render,renderizar,invert effect,inverter un efecto,inverter efecto,reverter un efecto,reverter efecto,looking glass effect,efecto de lupa,efecto lupa,magnifier effect,snap helper effect,track mouse effect,efecto de seguir o rato,efecto de seguimento do rato,zoom effect,efecto de ampliación,blur effect,efecto borroso,fade effect,efecto de esvaer,fade desktop effect,efecto de esvaer o escritorio,fall apart effect,efecto de destrución,glide effect,efecto de brillo,highlight window effect,efecto de realzar a xanela,efecto de resaltar a xanela,efecto de salientar a xanela,efecto de salientar a xanela,login effect,efecto de acceder,logout effect,efecto de saír,magic lamp effect,efecto de lámpada máxica,minimize animation effect,efecto de minimizar,mouse mark effect,efecto de marca co rato,scale in effect,efecto de achegar,efecto de cambia de escala,screenshot effect,efecto de captura,sheet effect,efecto de folla,slide effect,efecto de dispositiva,sliding popups effect,thumbnail aside effect,translucency,transparencia,translucidez,translucency effect,efecto de translucidez,efecto de transparencia,transparency,transparencia,window geometry effect,efecto de xeometría da xanela,efecto de xeometría das xanelas,wobbly windows effect,efecto de xanelas a tremer,startup feedback effect,dialog parent effect,efecto do pai do diálogo,dim inactive effect,dim screen effect,efecto de escurecer,slide back effect,eye candy,candy,show FPS effect,efecto de mostrar os FPS,show paint effect,cover switch effect,desktop cube effect,efecto de cubo de escritorio,efecto do cubo de escritorio,efecto de cubo do escritorio,desktop cube animation effect,desktop grid effect,efecto de grade de escritorios,efecto de grade de escritorios,flip switch effect,efecto de interruptor,efecto de contorno,present windows effect,resize window effect,efecto de cambio de tamaño das xanelas,efecto de contraste de fondo
|
||||
X-KDE-Keywords[hu]=kwin,ablak,kezelő,hatás,3D hatás,2D hatás,grafikai hatások,asztali hatások,animációk,különféle animációk,ablakkezelő hatások,ablakváltó hatások,asztalváltó hatások,animációk,asztali animációk,meghajtók,meghajtó beállítások,leképezés,renderelés,fordított hatás,tükörhatás,nagyító hatás,elkapás segítő hatás,egérkövetés hatás,nagyítás hatás,elmosás,elhalványulás hatás,asztal elhalványulása hatás,széteső hatás,csúszás hatás,ablak kiemelése hatás,belépés hatás,kilépés hatás,varázslámpa hatás,minimalizálás animáció hatás,egérjelölés hatás,méretezés hatás,képernyőkép hatás,munkalap hatás,dia hatás,csúszó felugrók hatás,,bélyegképek félre hatás, áttetszőség,áttetszőség hatás,átlátszóság,ablak geometria hatás,ingó ablak hatás,indulási visszajelzés hatás,párbeszédablak szülő hatás,dim inaktív hatás,dim kijelző hatás,dia vissza hatás,látványelem,édesség,FPS megjelenítése hatás,festék megjelenése hatás,eltakarás váltás hatás,asztal kocka hatás,asztal kockaanimáció hatás,asztal rács hatás,tükrözésváltás hatás,jelenlegi ablakok hatás,ablak átméretezése hatás,háttérkontraszt hatás
|
||||
X-KDE-Keywords[ia]=kwin,window,manager,effect,3D effects,2D effects,graphical effects,desktop effects,animations,various animations,window management effects,window switching effect,desktop switching effect,animations,desktop animations,drivers,driver settings,rendering,render,invert effect,looking glass effect,magnifier effect,snap helper effect,track mouse effect,zoom effect,blur effect,fade effect,fade desktop effect,fall apart effect,glide effect,highlight window effect,login effect,logout effect,magic lamp effect,minimize animation effect,mouse mark effect,scale effect,screenshot effect,sheet effect,slide effect,sliding popups effect,thumbnail aside effect,translucency,translucency effect,transparency,window geometry effect,wobbly windows effect,startup feedback effect,dialog parent effect,dim inactive effect,dim screen effect,slide back effect,eye candy,candy,show FPS effect,show paint effect,cover switch effect,desktop cube effect,desktop cube animation effect,desktop grid effect,flip switch effect,present windows effect,resize window effect,background contrast effect
|
||||
X-KDE-Keywords[id]=kwin,window,pengelola,efek,efek 3D,efek 2D,efek grafik,efek desktop,animasi,beragam animasi,efek pengelola window,efek beralih window,efek beralih desktop,animasi,animasi desktop,driver,pengaturan driver,rendering,render,efek kebalikan,efek seperti gelas,efek kaca pembesar,efek penunjang jepret,efek lacak mouse,efek pembesaran,efek buram,efek lesap,efek desktop lesap,efek hancur,efek petak,efek window sorot,efek login,efek logout,efek lampu ajaib,efek animasi minimalkan,efek tanda mouse,efek skala,efek cuplikan layar,efek lembar,efek geser,efek sembul geser,efek gambar-mini disamping,translusensi,efek translusensi,transparan,efek geometri window,efek window goyang,efek feedback pemulaian,efek induk dialog,efek layar suram,efek geser mundur,eye candy,candy,efek tampilkan FPS,efek tampilkan lukisan,efek alih kotak,efek alih sampul,efek kubus desktop,efek animasi kubus desktop,efek kisi desktop,efek alih lipat,efek window hadir,efek ubah ukuran window,efek kontras latarbelakang
|
||||
X-KDE-Keywords[it]=kwin,finestra,gestore,effetto,effetti 3D,effetti 2D,effetti grafici,effetti del desktop,animazioni,animazioni varie, effetti del gestore delle finestre,effetto dello scambiafinestre,effetto dello scambiatore di desktop,animazioni,animazioni del desktop,driver,impostazioni driver,rendering,render,effetto invertito,effetto vetro,effetto lente,effetto snap helper,effetto traccia mouse,effetto ingrandimento, effetto sfocatura,effetto dissolvenza,effetto dissolvenza desktop,effetto caduta,effetto planatura,effetto evidenziazione finestra,effetto schermata di accesso, effetto disconnessione,effetto lampada magica,effetto animazione di minimizzazione,effetto marcatura mouse, effetto scalatura,effetto schermata,effetto foglio,effetto diapositiva,effetto scivolamento,effetto miniature nella barra delle applicazioni,effetto miniatura su un lato,translucenza,effetto translucenza, trasparenza,effetto geometria finestra,effetto finestre tremolanti,effetto segnale di avvio,effetto finestra madre,effetto oscura finestra inattiva,effetto oscura schermo,effetto scivola all'indietro,gradevole,effetto gradevole,effetto mostra FPS,effetto ridisegno,effetto scambio cubi,effetto scambio copertina,effetto cubi del desktop,effetto animazione cubi del desktop,effetto griglia desktop,effetto scambiatore con inversione,effetto riquadro,effetto finestra presente,effetto ridimensionamento finestra,effetto contrasto dello sfondo
|
||||
X-KDE-Keywords[ko]=kwin,window,manager,effect,3D effects,2D effects,graphical effects,desktop effects,animations,various animations,window management effects,window switching effect,desktop switching effect,animations,desktop animations,drivers,driver settings,rendering,render,invert effect,looking glass effect,magnifier effect,snap helper effect,track mouse effect,zoom effect,blur effect,dashboard effect,explosion effect,fade effect,fade desktop effect,fall apart effect,glide effect,highlight window effect,login effect,logout effect,magic lamp effect,minimize animation effect,mouse mark effect,scale in effect,screenshot effect,sheet effect,slide effect,sliding popups effect,taskbar thumbnails effect,thumbnail aside effect,translucency,translucency effect,transparency,window geometry effect,wobbly windows effect,startup feedback effect,dialog parent effect,dim inactive effect,dim screen effect,slide back effect,eye candy,candy,show FPS effect,show paint effect,box switch effect,cover switch effect,desktop cube effect,desktop cube animation effect,desktop grid effect,flip switch effect,outline effect,present windows effect,resize window effect,창,관리자,효과,3D 효과,2D 효과,그래픽 효과,데스크톱 효과,애니메이션,창 관리자,창 관리자 효과,데스크톱 전환,데스크톱 전환 효과,드라이버,드라이버 설정,렌더링,렌더링 설정,애니메이션 속도,투명 유리 효과,확대 축소 효과,흐림 효과,대시보드 효과,페이드 효과,로그인 효과,창 강조 효과,글라이드 효과,로그아웃 효과,램프 효과,시트 효과,최소화 효과,최대화 효과,팝업 효과
|
||||
|
|
|
@ -27,6 +27,7 @@ Name[pa]=ਵਿੰਡੋ ਮੈਨੇਜਰ ਪਰਭਾਵ
|
|||
Name[pl]=Efekty zarządzania oknami
|
||||
Name[pt]=Efeitos do Gestor de Janelas
|
||||
Name[pt_BR]=Efeitos do gerenciador de janelas
|
||||
Name[ro]=Efectele gestionarului de ferestre
|
||||
Name[ru]=Эффекты диспетчера окон KWin
|
||||
Name[sk]=Efekty správcu okien
|
||||
Name[sl]=Učinki upravljalnika oken
|
||||
|
|
|
@ -32,6 +32,7 @@ Name[nn]=Handlingar for vindauge
|
|||
Name[pl]=Zachowanie okien
|
||||
Name[pt]=Acções das Janelas
|
||||
Name[pt_BR]=Ações da janela
|
||||
Name[ro]=Acțiuni fereastră
|
||||
Name[ru]=Действия с окнами
|
||||
Name[sk]=Akcie okna
|
||||
Name[sl]=Dejavnosti oken
|
||||
|
@ -64,6 +65,7 @@ Comment[nn]=Set opp musehandlingar for vindauge og tittellinjer
|
|||
Comment[pl]=Ustawienia działań myszy dla okien i pasków tytułu
|
||||
Comment[pt]=Configurar as acções do rato para as janelas e barras do título
|
||||
Comment[pt_BR]=Configura as ações do mouse para as janelas e barras de títulos
|
||||
Comment[ro]=Configurează acțiunile mausului pentru ferestre și bare de titlu
|
||||
Comment[ru]=Настройка действий для окон и их заголовков
|
||||
Comment[sk]=Nastavenie akcií myši pre okná a záhlavia
|
||||
Comment[sl]=Nastavi aktivnosti miške za okna in naslovne vrstice
|
||||
|
@ -104,6 +106,7 @@ X-KDE-Keywords[nn]=rull,fald saman,fald ut,samanfalding,maksimer,minimer,senk,ha
|
|||
X-KDE-Keywords[pl]=zwiń,maksymalizuj,minimalizuj,obniż,operacje na menu,pasek tytułu,zmień rozmiar
|
||||
X-KDE-Keywords[pt]=enrolar,maximizar,minimizar,baixar,menu de operações,barra de título,dimensionar
|
||||
X-KDE-Keywords[pt_BR]=enrolar,maximizar,minimizar,baixar,menu de operações,barra de título,redimensionar
|
||||
X-KDE-Keywords[ro]=strânge,maximizează,minimizează,coboară,meniu operații,bară de titlu,redimensionează
|
||||
X-KDE-Keywords[ru]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,свернуть,распахнуть,убрать вниз,меню операций,меню действий,заголовок окна,заголовок,изменить размер
|
||||
X-KDE-Keywords[sk]=tieň,maximalizácia,maximalizovanie,minimalizácia,minimalizovanie,nižší,ponuka operácií,záhlavie,zmeniť veľkosť
|
||||
X-KDE-Keywords[sl]=zvij,povečaj,razpni,pomanjšaj,skrči,dvigni,spusti,naslovna vrstica,spremeni velikost,okenski meni,meni okna
|
||||
|
|
|
@ -31,6 +31,7 @@ Name[nn]=Avansert vindaugsåtferd
|
|||
Name[pl]=Zaawansowane zachowania okien
|
||||
Name[pt]=Comportamento Avançado das Janelas
|
||||
Name[pt_BR]=Comportamento avançado das janelas
|
||||
Name[ro]=Comportament avansat al ferestrelor
|
||||
Name[ru]=Расширенное поведение окон
|
||||
Name[sk]=Pokročilé správanie okien
|
||||
Name[sl]=Napredno obnašanje oken
|
||||
|
@ -63,6 +64,7 @@ Comment[nn]=Set opp avanserte vindaugshandsamarinnstillingar
|
|||
Comment[pl]=Zaawansowane ustawienia zarządzania oknami
|
||||
Comment[pt]=Configurar as funcionalidades de gestão de janelas avançadas
|
||||
Comment[pt_BR]=Configure as opções avançadas de gerenciamento de janelas
|
||||
Comment[ro]=Configurează opțiuni avansate de gestiune a ferestrelor
|
||||
Comment[ru]=Настройка дополнительных возможностей управления окнами
|
||||
Comment[sk]=Nastaviť pokročilé možnosti správy okien
|
||||
Comment[sl]=Nastavi napredne zmožnosti upravljanja oken
|
||||
|
@ -84,6 +86,7 @@ X-KDE-Keywords[eu]=zabaldu,zabaltzea,bildu,biltzea,gainetik pasatzea,ertz aktibo
|
|||
X-KDE-Keywords[fi]=rullauksen avaus,rullauksen avaaminen,rullaus,rullaaminen,kehys,leijunta,aktiiviset reunat,asettelu,välilehdet,ikkunavälilehdet,ikkunoiden ryhmittely,ikkunoiden asettelu,sijoittaminen,sijoittelu,ikkunoiden sijoittaminen,ikkunoiden sijoittelu,ikkunoiden lisäasetukset
|
||||
X-KDE-Keywords[fr]=non ombré, dé-nuancé, nuancé, ombré, bordure, survol, bords actifs, mosaïque, onglets, changement d'onglet, fenêtre, changement de fenêtres, regroupement de fenêtres, mosaïque de fenêtres, placement de fenêtres, positionnement de fenêtre, comportement avancé des fenêtres
|
||||
X-KDE-Keywords[gl]=dessombrar,dessombramento,sombra,bordo,beira,pasar,bordos activos,beiras activas,xanela,separadores,agrupar xanelas, situación das xanelas,colocación,colocación das xanelas,comportamento avanzado das xanelas
|
||||
X-KDE-Keywords[ia]=unshade,unshading,shade,shading,border,hover,active borders,tiling,tabs,tabbing,window,window tabbing,window grouping,window tiling,placement,window placement,placement of windows,window advanced behavior
|
||||
X-KDE-Keywords[id]=tak berbayang,tak bayang,berbayang,batas,melayang,bingkai aktif,pengubinan,tab,pengetaban,window,pengetaban window,pengelompokan window,pengubinan window,penempatan,penempatan window,penempatan si window,perilaku tingkat-lanjut window
|
||||
X-KDE-Keywords[it]=arrotola,srotola,ombra,ombreggiatura,bordo,sovrapponi,bordi attivi,affiancamento,schede,navigazione a schede,finestre,finestre a schede,raggruppamento finestre,affiancamento finestre,posizionamento,posizionamento finestre,posizionamento delle finestre,comportamento avanzato delle finestre
|
||||
X-KDE-Keywords[ko]=unshade,unshading,shade,shading,border,hover,active borders,tiling,tabs,tabbing,window,window tabbing,window grouping,window tiling,placement,window placement,placement of windows,window advanced behavior,그림자,경계선,호버,지나다니기,타일,탭,창 탭,창 그룹,창 타일,창 위치,말아 올리기,풀어 내리기,배치,창
|
||||
|
|
|
@ -30,11 +30,13 @@ Name[nn]=Fokusåtferd for vindauge
|
|||
Name[pl]=Zachowanie uaktywnienia okien
|
||||
Name[pt]=Comportamento do Foco da Janela
|
||||
Name[pt_BR]=Comportamento do foco da janela
|
||||
Name[ro]=Comportament focalizare ferestre
|
||||
Name[ru]=Фокус окон
|
||||
Name[sk]=Správanie zamerania okien
|
||||
Name[sl]=Obnašanje oken pri osredotočanju
|
||||
Name[sv]=Fönsterfokusbeteende
|
||||
Name[uk]=Параметри фокусування вікон
|
||||
Name[vi]=Ứng xử nhắm của cửa sổ
|
||||
Name[x-test]=xxWindow Focus Behaviorxx
|
||||
Name[zh_CN]=窗口焦点行为
|
||||
Name[zh_TW]=視窗焦點行為
|
||||
|
@ -61,11 +63,13 @@ Comment[nn]=Set opp praksisen for vindaugsaktivering
|
|||
Comment[pl]=Ustawienia uaktywniania okien
|
||||
Comment[pt]=Configurar a política de activação da janela
|
||||
Comment[pt_BR]=Configure a política de ativação de janela
|
||||
Comment[ro]=Configurează politica de activare a ferestrelor
|
||||
Comment[ru]=Настройка активации окон
|
||||
Comment[sk]=Nastavenie spôsobu aktivácie okien
|
||||
Comment[sl]=Nastavi politiko aktiviranja okna
|
||||
Comment[sv]=Anpassa policy för fönsteraktivering
|
||||
Comment[uk]=Налаштовування правил активації вікон
|
||||
Comment[vi]=Cấu hình chính sách kích hoạt cửa sổ
|
||||
Comment[x-test]=xxConfigure window activation policyxx
|
||||
Comment[zh_CN]=配置窗口激活策略
|
||||
Comment[zh_TW]=設定視窗啟用策略
|
||||
|
@ -82,6 +86,7 @@ X-KDE-Keywords[eu]=fokua,automatikoki igo,igo,egin klik igotzeko,teklatu,CDE,alt
|
|||
X-KDE-Keywords[fi]=kohdistus,sijoitus,automaattinen nosto,automaattinen nostaminen,nosta,nosta napsauttamalla,näppäimistö,alt-sarkain,kaikki työpöydät,kohdistus seuraa hiirtä,kohdistuksen esto,kohdistuksen varastaminen,kohdistustapa,ikkunoiden kohdistuksen toiminta,ikkunoiden näyttötoiminta
|
||||
X-KDE-Keywords[fr]=focus, agrandissement automatique, agrandissement, clic d'agrandissement, clavier, CDE, alt-tab, tous les bureaux, focus suivi par la souris, prise de focus, politique de focus, comportement du focus des fenêtres, comportement des fenêtres
|
||||
X-KDE-Keywords[gl]=foco,erguer automaticamente,erguer,erguer ao premer,teclado,CDE,alt-tab,todo o escritorio,foco que segue o rato,prevención do foco,roubar o foco,política de foco,comportamento de foco de xanela,comportamento de pantalla de xanela
|
||||
X-KDE-Keywords[ia]=focus,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,focus follows mouse,focus prevention,focus stealing,focus policy,window focus behavior,window screen behavior
|
||||
X-KDE-Keywords[id]=fokus,auto naik,naikkan,klik naikkan,keyboard,papan ketik,CDE,alt-tab,semua desktop,fokus mengikuti mouse,pencegahan fokus,pencurian fokus,kebijakan fokus,perilaku fokus window,perilaku layar window
|
||||
X-KDE-Keywords[it]=fuoco,avanzamento automatico,avanzamento,avanzamento con clic,tastiera,CDE,alt-tab,tutti i desktop,il fuoco segue il mouse,impedisci il fuoco,mantieni il fuoco,regole fuoco,comportamento fuoco finestra, comportamento schermo finestra
|
||||
X-KDE-Keywords[ko]=focus,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,focus follows mouse,focus prevention,focus stealing,focus policy,window focus behavior,window screen behavior,초점,키보드,모든 데스크톱,초점,초점 훔치기,초점 훔치기 방지,초점 정책,창 초점 행동,창 화면 행동
|
||||
|
@ -96,6 +101,7 @@ X-KDE-Keywords[sk]=zameranie,umiestnenie,automatické zdvihnutie,zdvihnutie,klik
|
|||
X-KDE-Keywords[sl]=fokus,žarišče,postavitev,postavljanje,samodejni dvig,samodejno dvigovanje,dvig,dvigovanje,dvig na klik,tipkovnica,cde,celotno namizje,fokus sledi miški,žarišče sledi miški,preprečevanje fokusa,preprečevanje žarišča,kraja fokusa,kraja žarišča,pravila osredotočanja,pravila za osredotočanje,obnašanje pri osredotočanju oken,obnašanje pri postavljanju oken v žarišče,obnašanje oken
|
||||
X-KDE-Keywords[sv]=fokus,fönsterbeteende,animering,höj,höj automatiskt,höj med klick,CDE,alt-tab,alla skrivbord,fokus följer musen,förhindra fokus,stjäla fokus,fokusprincip,fönsterfokusbeteende,fönsterskärmbeteende
|
||||
X-KDE-Keywords[uk]=focus,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,focus follows mouse,focus prevention,focus stealing,focus policy,window focus behavior,window screen behavior,фокус,фокусування,автопідняття,підняття,клацання,клавіатура,альт-таб,всі стільниці,фокус за мишею,запобігання,перехід фокуса,правила фокусування,поведінка вікон
|
||||
X-KDE-Keywords[vi]=focus,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,focus follows mouse,focus prevention,focus stealing,focus policy,window focus behavior,window screen behavior,nhắm,nâng tự động,nâng,bấm nâng,bàn phím,tất cả bàn làm việc,nhắm đi theo chuột,ngăn chặn nhắm,lấy nhắm,chính sách nhắm,ứng xử nhắm của cửa sổ,ứng xử màn hình cửa sổ
|
||||
X-KDE-Keywords[x-test]=xxfocusxx,xxauto raisexx,xxraisexx,xxclick raisexx,xxkeyboardxx,xxCDExx,xxalt-tabxx,xxall desktopxx,xxfocus follows mousexx,xxfocus preventionxx,xxfocus stealingxx,xxfocus policyxx,xxwindow focus behaviorxx,xxwindow screen behaviorxx
|
||||
X-KDE-Keywords[zh_CN]=focus,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,focus follows mouse,focus prevention,focus stealing,focus policy,window focus behavior,window screen behavior,焦点,聚焦,自动升起,升起,点击升起,键盘,全部桌面,焦点跟随鼠标,偷取焦点,焦点策略,窗口焦点行为,窗口屏幕行为
|
||||
X-KDE-Keywords[zh_TW]=focus,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,focus follows mouse,focus prevention,focus stealing,focus policy,window focus behavior,window screen behavior
|
||||
|
|
|
@ -31,6 +31,7 @@ Name[nn]=Vidaugsflytting
|
|||
Name[pl]=Przesuwanie okien
|
||||
Name[pt]=Movimentação das Janelas
|
||||
Name[pt_BR]=Movimento da janela
|
||||
Name[ro]=Mutare ferestre
|
||||
Name[ru]=Перемещение окон
|
||||
Name[sk]=Presuny okien
|
||||
Name[sl]=Premikanje oken
|
||||
|
@ -62,6 +63,7 @@ Comment[nn]=Set opp vindaugsflytting
|
|||
Comment[pl]=Ustawienia opcji przesuwania okien
|
||||
Comment[pt]=Configurar as opções de movimentação das janelas
|
||||
Comment[pt_BR]=Configure as opções de movimento da janela
|
||||
Comment[ro]=Configurează opțiuni de mutare a ferestrelor
|
||||
Comment[ru]=Настройка поведения при перемещении окон
|
||||
Comment[sk]=Nastavenie spôsobu presunu okien
|
||||
Comment[sl]=Nastavi možnosti premikanja okna
|
||||
|
@ -101,6 +103,7 @@ X-KDE-Keywords[nn]=flytting,smart,kaskade,maksimering,gripesone,gripa,kant
|
|||
X-KDE-Keywords[pl]=przesuwanie,elegancki,kaskada,maksymalizuj,obszar przyciągania,przyciągaj,obramowanie
|
||||
X-KDE-Keywords[pt]=movimento,inteligente,cascata,maximizar,ajuste à zona,ajuste,contorno
|
||||
X-KDE-Keywords[pt_BR]=movimento,movimentação,inteligente,cascata,maximizar,ajuste à área,ajuste,borda
|
||||
X-KDE-Keywords[ro]=mutare,inteligent,cascadă,maximizează,minimizează,zonă magnetică,magnet,contur
|
||||
X-KDE-Keywords[ru]=moving,smart,cascade,maximize,maximise,snap zone,snap,border,перемещение,каскад,распахнуть,свернуть,захват,привязка,граница
|
||||
X-KDE-Keywords[sk]=presun,smart,kaskáda,maximalizácia,miinmalizácia,oblasť prichytenia,prichytenie,rám
|
||||
X-KDE-Keywords[sl]=premikanje,pametno premikanje,kaskada,povečaj,razpni,območje pripenjanja,pripenjanje,rob,robovi,obroba,obrobe
|
||||
|
|
|
@ -74,7 +74,7 @@ Name[pa]=ਵਿੰਡੋ ਰਵੱਈਆ
|
|||
Name[pl]=Zachowania okien
|
||||
Name[pt]=Comportamento das Janelas
|
||||
Name[pt_BR]=Comportamento das janelas
|
||||
Name[ro]=Comportament fereastră
|
||||
Name[ro]=Comportament ferestre
|
||||
Name[ru]=Поведение окон
|
||||
Name[se]=Láseláhtten
|
||||
Name[si]=කවුළු හැසිරීම
|
||||
|
@ -123,6 +123,7 @@ Comment[nn]=Set opp utsjånad og åtferd for vindauge
|
|||
Comment[pl]=Ustawienia działań i zachowań okien
|
||||
Comment[pt]=Configurar as acções e comportamento das janelas
|
||||
Comment[pt_BR]=Configure as ações e comportamento das janelas
|
||||
Comment[ro]=Configurează acțiunile și comportamentul ferestrelor
|
||||
Comment[ru]=Настройка поведения окон
|
||||
Comment[sk]=Nastaviť akcie a správanie okien
|
||||
Comment[sl]=Nastavi dejanja in obnašanje oken
|
||||
|
@ -160,6 +161,7 @@ X-KDE-Keywords[nn]=fokus,plassering,vindaugsåtferd,vindaugshandlingar,animering
|
|||
X-KDE-Keywords[pl]=uaktywnienie,umieszczenie,zachowanie okna,działania okien,animacja,wzniesienie,auto-wzniesienie, okna,ramka,pasek tytułu,podwójne kliknięcie
|
||||
X-KDE-Keywords[pt]=foco,colocação,comportamento da janela,acções das janelas,animação,elevar,elevar automaticamente,janelas,contorno,barra de título,duplo-click
|
||||
X-KDE-Keywords[pt_BR]=foco,colocação,comportamento da janela,ações da janela,animação,elevar,elevar automaticamente,janelas,contorno,barra de título,clique duplo
|
||||
X-KDE-Keywords[ro]=focalizare,amplasare,comportament ferestre,acțiuni ferestre,animație,ridică,ridicare automată,ferestre,cadru,bară de titlu,dublu clic
|
||||
X-KDE-Keywords[ru]=focus,placement,window behavior,window actions,animation,raise,auto raise,windows,frame,titlebar,doubleclick,фокус,местоположение,поведение окон,анимация,увеличение,автоувеличение,окна,рамка,заголовок,двойной щелчок,действия над окнами
|
||||
X-KDE-Keywords[sk]=zameranie,umiestnenie,správanie okien,animácia,zdvihnúť,automaticky zdvihnúť,okná,rám,záhlavie,dvojklik
|
||||
X-KDE-Keywords[sl]=fokus,žarišče,postavitev,postavljanje,obnašanje oken,dejanja oken,animacija,dvig,samodejni dvig,okna,okvir,naslovna vrstica,dvojni klik,dvoklik
|
||||
|
@ -170,6 +172,7 @@ X-KDE-Keywords[sr@latin]=focus,placement,window behavior,window actions,animatio
|
|||
X-KDE-Keywords[sv]=fokus,placering,fönsterbeteende,animering,höj,höj automatiskt,fönster,ram,namnlist,dubbelklick
|
||||
X-KDE-Keywords[tr]=odak,yerleşim,pencere davranışı,pencere eylemleri,canlandırma,yükselt,otomatik yükselt,pencereler,çerçeve,başlık çubuğu,çift tıklama
|
||||
X-KDE-Keywords[uk]=focus,placement,window behavior,window actions,animation,raise,auto raise,windows,frame,titlebar,doubleclick,фокус,розташування,місце,вікно,поведінка,поведінка вікон,дії,реакція,дії з вікнами,реакція вікон,анімація,підняти,підняття,автоматична,автоматично,рамка,заголовок,смужка заголовка,клацання,подвійне
|
||||
X-KDE-Keywords[vi]=focus,placement,window behavior,window actions,animation,raise,auto raise,windows,frame,titlebar,doubleclick,nhắm,xếp chỗ,ứng xử của cửa sổ,hành động của cửa sổ,hiệu ứng động,nâng,nâng tự động,cửa sổ,khung,thanh tiêu đề,bấm đúp
|
||||
X-KDE-Keywords[x-test]=xxfocusxx,xxplacementxx,xxwindow behaviorxx,xxwindow actionsxx,xxanimationxx,xxraisexx,xxauto raisexx,xxwindowsxx,xxframexx,xxtitlebarxx,xxdoubleclickxx
|
||||
X-KDE-Keywords[zh_CN]=focus,placement,window behavior,window actions,animation,raise,auto raise,windows,frame,titlebar,doubleclick,焦点,位置,窗口行为,窗口动作,动画,升起,自动升起,窗口,边框,标题栏,双击
|
||||
X-KDE-Keywords[zh_TW]=focus,placement,window behavior,window actions,animation,raise,auto raise,windows,frame,titlebar,doubleclick
|
||||
|
|
|
@ -56,7 +56,7 @@ Name[pa]=ਵਿੰਡੋ ਨਿਯਮ
|
|||
Name[pl]=Zasady okien
|
||||
Name[pt]=Regras das Janelas
|
||||
Name[pt_BR]=Regras das janelas
|
||||
Name[ro]=Reguli fereastră
|
||||
Name[ro]=Reguli ferestre
|
||||
Name[ru]=Особые параметры окон
|
||||
Name[si]=කවුළු නීති
|
||||
Name[sk]=Pravidlá okien
|
||||
|
@ -107,6 +107,7 @@ Comment[pa]=ਵੱਖ-ਵੱਖ ਵਿੰਡੋ ਰਵੱਈਆ
|
|||
Comment[pl]=Wyjątkowe okna
|
||||
Comment[pt]=Comportamento das Janelas Individuais
|
||||
Comment[pt_BR]=Comportamento das janelas individuais
|
||||
Comment[ro]=Comportament al ferestrelor individuale
|
||||
Comment[ru]=Особые параметры конкретных окон
|
||||
Comment[sk]=Individuálne správanie okien
|
||||
Comment[sl]=Obnašanje posameznih oken
|
||||
|
@ -152,6 +153,7 @@ X-KDE-Keywords[nn]=storleik,plassering,tilstand,vindaugsåtferd,vindauge,einskil
|
|||
X-KDE-Keywords[pl]=rozmiar,pozycja,stan,zachowanie okna,okna,specyficzne,obejścia,zapamiętaj,reguły
|
||||
X-KDE-Keywords[pt]=tamanho,posição,estado,comportamento da janela,janelas,específico,alternativas,recordar,regras
|
||||
X-KDE-Keywords[pt_BR]=tamanho,posição,estado,comportamento da janela,janelas,específico,alternativas,lembrar,regras
|
||||
X-KDE-Keywords[ro]=dimensiune,poziție,stare,comportament ferestre,ferestre,specific,ține minte,reguli
|
||||
X-KDE-Keywords[ru]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,размер,позиция,состояние,поведение окон,окна,специальный,специальные возможности,запомнить,правила
|
||||
X-KDE-Keywords[sk]=veľkosť,poloha,stav,správanie okien,okná,špecifický,workaroundy,pamätať,pravidlá
|
||||
X-KDE-Keywords[sl]=velikost,položaj,stanje,obnašanje oken,okna,določeno,popravki,pomnjenje,pravila
|
||||
|
|
|
@ -190,6 +190,9 @@ static void edit(const QVariantMap &data, bool whole_app)
|
|||
int main(int argc, char* argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
|
||||
KLocalizedString::setApplicationDomain("kcm_kwinrules");
|
||||
|
||||
app.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
|
||||
app.setApplicationDisplayName(i18n("KWin"));
|
||||
app.setApplicationName("kwin_rules_dialog");
|
||||
|
|
|
@ -48,6 +48,8 @@ ScrollViewKCM {
|
|||
sourceComponent: ruleBookDelegate
|
||||
}
|
||||
|
||||
highlightMoveDuration: Kirigami.Units.longDuration
|
||||
|
||||
displaced: Transition {
|
||||
NumberAnimation { properties: "y"; duration: Kirigami.Units.longDuration }
|
||||
}
|
||||
|
|
|
@ -142,8 +142,9 @@ Loader {
|
|||
id: coordItem
|
||||
spacing: Kirigami.Units.smallSpacing
|
||||
|
||||
readonly property var coord: (controlType == RuleItem.Size) ? Qt.size(coordX.value, coordY.value)
|
||||
: Qt.point(coordX.value, coordY.value)
|
||||
readonly property bool isSize: controlType == RuleItem.Size
|
||||
readonly property var coord: (isSize) ? Qt.size(coordX.value, coordY.value)
|
||||
: Qt.point(coordX.value, coordY.value)
|
||||
onCoordChanged: valueEditor.valueEdited(coord)
|
||||
|
||||
QQC2.SpinBox {
|
||||
|
@ -151,9 +152,9 @@ Loader {
|
|||
editable: true
|
||||
Layout.preferredWidth: 50 // 50%
|
||||
Layout.fillWidth: true
|
||||
from: 0
|
||||
from: (isSize) ? 0 : -32767
|
||||
to: 32767
|
||||
value: (controlType == RuleItem.Size) ? ruleValue.width : ruleValue.x
|
||||
value: (isSize) ? ruleValue.width : ruleValue.x
|
||||
}
|
||||
QQC2.Label {
|
||||
id: coordSeparator
|
||||
|
@ -164,11 +165,11 @@ Loader {
|
|||
QQC2.SpinBox {
|
||||
id: coordY
|
||||
editable: true
|
||||
from: 0
|
||||
to: 32767
|
||||
from: coordX.from
|
||||
to: coordX.to
|
||||
Layout.preferredWidth: 50 // 50%
|
||||
Layout.fillWidth: true
|
||||
value: (controlType == RuleItem.Size) ? ruleValue.height : ruleValue.y
|
||||
value: (isSize) ? ruleValue.height : ruleValue.y
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ Name[pa]=ਵਿੰਡੋ ਨਿਯਮ
|
|||
Name[pl]=Zasady okien
|
||||
Name[pt]=Regras das Janelas
|
||||
Name[pt_BR]=Regras das janelas
|
||||
Name[ro]=Reguli fereastră
|
||||
Name[ro]=Reguli ferestre
|
||||
Name[ru]=Особые параметры окон
|
||||
Name[si]=කවුළු නීති
|
||||
Name[sk]=Pravidlá okien
|
||||
|
@ -109,6 +109,7 @@ Comment[pa]=ਵੱਖ-ਵੱਖ ਵਿੰਡੋ ਰਵੱਈਆ
|
|||
Comment[pl]=Wyjątkowe okna
|
||||
Comment[pt]=Comportamento das Janelas Individuais
|
||||
Comment[pt_BR]=Comportamento das janelas individuais
|
||||
Comment[ro]=Comportament al ferestrelor individuale
|
||||
Comment[ru]=Особые параметры конкретных окон
|
||||
Comment[sk]=Individuálne správanie okien
|
||||
Comment[sl]=Obnašanje posameznih oken
|
||||
|
|
|
@ -208,8 +208,10 @@ QVariant RuleItem::typedValue(const QVariant &value) const
|
|||
}
|
||||
return typesMask;
|
||||
}
|
||||
case Point:
|
||||
return value.toPoint();
|
||||
case Point: {
|
||||
const QPoint point = value.toPoint();
|
||||
return (point == invalidPoint) ? QPoint(0, 0) : point;
|
||||
}
|
||||
case Size:
|
||||
return value.toSize();
|
||||
case String:
|
||||
|
|
|
@ -61,7 +61,7 @@ Name[pa]=ਸਕਰੀਨ ਬਾਹੀਆਂ
|
|||
Name[pl]=Krawędzie ekranu
|
||||
Name[pt]=Extremos do Ecrã
|
||||
Name[pt_BR]=Contornos da tela
|
||||
Name[ro]=Muchiile ecranului
|
||||
Name[ro]=Marginile ecranului
|
||||
Name[ru]=Края экрана
|
||||
Name[si]=තිර මුළු
|
||||
Name[sk]=Okraje obrazovky
|
||||
|
@ -104,6 +104,7 @@ Comment[nn]=Set opp aktive skjermhjørne og skjermkantar
|
|||
Comment[pl]=Ustawienia czułych narożników i krawędzi ekranu
|
||||
Comment[pt]=Configurar os cantos e extremos do ecrã activo
|
||||
Comment[pt_BR]=Configura os cantos e bordas da tela ativa
|
||||
Comment[ro]=Configurează colțurile și marginile active ale ecranului
|
||||
Comment[ru]=Настройка действий для краёв и углов экрана
|
||||
Comment[sk]=Nastavenie aktívnych okrajov obrazovky a hrán
|
||||
Comment[sl]=Nastavi dejavne kote in robove okna
|
||||
|
|
|
@ -39,6 +39,7 @@ Name[pa]=ਟੱਚ ਸਕਰੀਨ
|
|||
Name[pl]=Ekran dotykowy
|
||||
Name[pt]=Ecrã Táctil
|
||||
Name[pt_BR]=Touch Screen
|
||||
Name[ro]=Ecran tactil
|
||||
Name[ru]=Сенсорный экран
|
||||
Name[sk]=Dotyková obrazovka
|
||||
Name[sl]=Zaslon na dotik
|
||||
|
@ -75,6 +76,7 @@ Comment[nn]=Set opp fingerrørsler på trykkskjerm
|
|||
Comment[pl]=Ustawienia gestów na ekranie dotykowym
|
||||
Comment[pt]=Configurar os gestos para deslizar o ecrã táctil
|
||||
Comment[pt_BR]=Configura os gestos na tela sensível ao toque
|
||||
Comment[ro]=Configurează gesturi de tragere pe ecran tactil
|
||||
Comment[ru]=Действия при проведении по сенсорному экрану
|
||||
Comment[sk]=Nastaviť ťahacie gestá dotykovej obrazovky
|
||||
Comment[sl]=Nastavi kretnje vlečenja za zaslon na dotik
|
||||
|
@ -99,6 +101,7 @@ X-KDE-Keywords[fi]=kwin,ikkuna,hallinta,tehoste,kulma,laita,reuna,toiminto,vaihd
|
|||
X-KDE-Keywords[fr]=kwin, fenêtre, gestionnaire, effet, bord, bordure, action, bascule, bureau, bords du bureau, bords de l'écran, côté de l'écran, comportement de l'écran, écran tactile
|
||||
X-KDE-Keywords[gl]=kwin,window,xanela,manager,xestor,effect,efecto,edge,beira,bordo,contorno,esquina,border,action,acción,switch,cambiar,conmutar,trocar,desktop,escritorio,desktop edges,screen edges,pantalla,side of screen,screen behavior,comportamento,touch screen,táctil
|
||||
X-KDE-Keywords[hu]=kwin,ablak,kezelő,effektus,szél,szegély,művelet,váltás,asztal,asztalszél,képernyőszél,képernyőoldal,képernyő működése,érintőképernyő
|
||||
X-KDE-Keywords[ia]=kwin,window,manager,effect,edge,border,action,switch,desktop,desktop edges,screen edges,side of screen,screen behavior,touch screen
|
||||
X-KDE-Keywords[id]=kwin,window,pengelola,efek,tepi,bingkai,aksi,alih,desktop,tepian desktop,tepian layar,sisi layar,perilaku layar,layar sentuh
|
||||
X-KDE-Keywords[it]=kwin,finestra,gestore,effetto,angolo,bordo,azione,scambiatore,desktop,bordi desktop,bordi schermo,lato dello schermo,comportamento schermo,schermo a sfioramento
|
||||
X-KDE-Keywords[ko]=kwin,window,manager,effect,edge,border,action,switch,desktop,desktop edges,screen edges,side of screen,screen behavior,touch screen,창,관리자,효과,경계,경계선,동작,액션,데스크톱,화면 경계,경계,터치,터치 스크린,터치스크린,바탕 화면
|
||||
|
@ -108,6 +111,7 @@ X-KDE-Keywords[nn]=kwin,vindauge,handsamar,effekt,kant,ramme,handling,byte,skriv
|
|||
X-KDE-Keywords[pl]=kwin,okno,menadżer,efekt,krawędź,obramowanie,działanie,przełącz,pulpit,krawędzie pulpitu,krawędzie ekranu,strona ekranu,zachowanie ekranu,ekran dotykowy
|
||||
X-KDE-Keywords[pt]=kwin,janela,gestor,efeito,extremo,contorno,acção,mudar,ecrã,extremos do ecrã no kwin,extremos do ecrã,maximizar as janelas,janelas lado-a-lado,lado do ecrã,comportamento do ecrã,ecrã táctil
|
||||
X-KDE-Keywords[pt_BR]=kwin,janela,gerenciador,efeito,canto,contorno,borda,ação,mudar,área de trabalho,cantos da área de trabalho, desktop,lado da tela,comportamento da tela,touch screen
|
||||
X-KDE-Keywords[ro]=kwin,fereastră,gestionar,efect,margine,muchie,latură,acțiune,schimbă,birou,marginile biroului,marginile ecranului,marginea ecranului,comportament ecran,ecran tactil
|
||||
X-KDE-Keywords[ru]=kwin,window,manager,effect,corner,edge,border,action,switch,desktop,kwin screen edges,desktop edges,screen edges,maximize windows,tile windows,side of screen,screen behavior,switch desktop,virtual desktop,screen corners,окно,окон,диспетчер,эффект,край,граница,действие,переключить,рабочий стол,края экрана kwin,края экрана,края рабочего стола,распахнуть окна,мозаика окон,край экрана,поведение экрана,переключить рабочий стол,виртуальный рабочий стол,углы рабочего стола,углы экрана,тачскрин,сенсорный экран,touch screen
|
||||
X-KDE-Keywords[sk]=Kwin, okná, manažér, efekt, okraj, hranice, akcie, prepínač, desktop, okraje plochy,Okraje obrazovky, bočná strana obrazovky, správanie obrazovky, dotyková obrazovka
|
||||
X-KDE-Keywords[sl]=kwin,okno,upravljalnik oken,upravljanje oken,učinki,rob,obroba,dejanje,preklopi,preklapljanje,robovi namizja,robovi zaslona,rob zaslona,obnašanje zaslona,zaslon na dotik
|
||||
|
|
|
@ -158,7 +158,7 @@ Comment[sr@latin]=Upravljajte KWinovih skriptama
|
|||
Comment[sv]=Hantera Kwin-skript
|
||||
Comment[tr]=KWin betiklerini yönet
|
||||
Comment[uk]=Керування скриптами KWin
|
||||
Comment[vi]=Quản lý tập lệnh KWin
|
||||
Comment[vi]=Quản lí tập lệnh KWin
|
||||
Comment[x-test]=xxManage KWin scriptsxx
|
||||
Comment[zh_CN]=管理 KWin 脚本
|
||||
Comment[zh_TW]=管理 KWin 文稿
|
||||
|
|
|
@ -26,6 +26,7 @@ Name[pa]=ਵਿੰਡੋ ਮੈਨੇਜਰ ਸਕ੍ਰਿਪਟਾਂ
|
|||
Name[pl]=Skrypty zarządzania oknami
|
||||
Name[pt]=Programas do Gestor de Janelas
|
||||
Name[pt_BR]=Scripts do gerenciador de janelas
|
||||
Name[ro]=Scripturi pentru gestionar de ferestre
|
||||
Name[ru]=Сценарии для диспетчера окон KWin
|
||||
Name[sk]=Skripty správcu okien
|
||||
Name[sl]=Skripti upravljalnika oken
|
||||
|
|
|
@ -27,6 +27,7 @@ Name[pa]=ਵਿੰਡੋ ਮੈਨੇਜਰ ਸਵਿੱਚਰ ਲੇਆਉਟ
|
|||
Name[pl]=Układ przełączania zarządzana oknami
|
||||
Name[pt]=Disposições da Mudança de Janelas do KWin
|
||||
Name[pt_BR]=Layouts de mudança do gerenciador de janelas
|
||||
Name[ro]=Aranjamente de schimbare pentru gestionar de ferestre
|
||||
Name[ru]=Оформления переключателя окон для KWin
|
||||
Name[sk]=Prepínanie rozložení správcu okien
|
||||
Name[sl]=Razporedi preklapljanja upravljalnika oken
|
||||
|
|
|
@ -102,6 +102,7 @@ Comment[pa]=ਵਿੰਡੋਆਂ 'ਚ ਏਧਰ ਓਧਰ ਜਾਓ
|
|||
Comment[pl]=Przełączanie pomiędzy oknami
|
||||
Comment[pt]=Navegação pelas Janelas
|
||||
Comment[pt_BR]=Navegação pelas janelas
|
||||
Comment[ro]=Navigare printre ferestre
|
||||
Comment[ru]=Настройка переключателя окон
|
||||
Comment[sk]=Navigácia cez okná
|
||||
Comment[sl]=Krmarjenje med okni
|
||||
|
@ -146,6 +147,7 @@ X-KDE-Keywords[nn]=vindauge,vindauge,byte,vindaugsbytar,byte,vindaugsbytar,altta
|
|||
X-KDE-Keywords[pl]=okno,okna,przełączanie,przełączanie okien,alttab,alt-tab,alt+tab,alt tab
|
||||
X-KDE-Keywords[pt]=janela,janelas,selector,selector de janelas,mudar,mudança de janela,alttab,alt-tab,alt+tab,alt tab
|
||||
X-KDE-Keywords[pt_BR]=janela,janelas,seletor,seletor de janelas,mudar,mudança de janela,alttab,alt-tab,alt+tab,alt tab
|
||||
X-KDE-Keywords[ro]=fereastră,ferestre,comutator,comutator ferestre,schimbare,schimbare ferestre,alttab,alt-tab,alt+tab,alt tab
|
||||
X-KDE-Keywords[ru]=window,windows,switcher,window switcher,switching,window switching,alttab,alt-tab,alt+tab,alt tab,окно,окна,переключатель,переключатель окон,переключение,переключение окон
|
||||
X-KDE-Keywords[sk]=okno,okná,prepínač,prepínanie okien,prepínanie,prepínač okien,alttab,alt-tab,alt+tab,alt tab
|
||||
X-KDE-Keywords[sl]=okno,okna,preklapljanje,preklapljanje med okni,alttab,alt-tab,alt+tab,alt tab
|
||||
|
|
|
@ -58,7 +58,7 @@ Comment[th]=ตัวจัดการหน้าต่าง KWin
|
|||
Comment[tr]=KWin Pencere Yöneticisi
|
||||
Comment[ug]=KWin كۆزنەك باشقۇرغۇچ
|
||||
Comment[uk]=Керування вікнами KWin
|
||||
Comment[vi]=Trình quản lý cửa sổ KWin
|
||||
Comment[vi]=Trình quản lí cửa sổ KWin
|
||||
Comment[wa]=Manaedjeu des fniesses KWin
|
||||
Comment[x-test]=xxKWin Window Managerxx
|
||||
Comment[zh_CN]=KWin 窗口管理器
|
||||
|
@ -292,12 +292,21 @@ Action=Popup
|
|||
Name=Xwayland Crash
|
||||
Name[az]=Xwayland Qəzası
|
||||
Name[ca]=Fallada de l'Xwayland
|
||||
Name[en_GB]=Xwayland Crash
|
||||
Name[es]=Fallo de Xwayland
|
||||
Name[et]=Xwaylandi krahh
|
||||
Name[eu]=Xwayland kraskatzea
|
||||
Name[fi]=XWayland kaatui
|
||||
Name[fr]=Plantage « Xwayland »
|
||||
Name[ia]=Xwayland Crash
|
||||
Name[it]=Chiusura inattesa di Xwayland
|
||||
Name[ko]=Xwayland 충돌
|
||||
Name[nl]=Xwayland-crash
|
||||
Name[nn]=Xwayland-krasj
|
||||
Name[pl]=Usterka Xwayland
|
||||
Name[pt]=Estoiro do Xwayland
|
||||
Name[pt_BR]=Falha no Xwayland
|
||||
Name[ro]=Prăbușire Xwayland
|
||||
Name[sk]=Pád Xwayland-u
|
||||
Name[sl]=Sesutje Xwayland
|
||||
Name[sv]=Krasch av Xwayland
|
||||
|
@ -307,12 +316,21 @@ Comment=Xwayland has crashed
|
|||
Comment[az]=Xwayland qəzaya uğradı
|
||||
Comment[ca]=L'Xwayland ha fallat
|
||||
Comment[cs]=Xwayland spadnul
|
||||
Comment[en_GB]=Xwayland has crashed
|
||||
Comment[es]=Xwayland ha fallado
|
||||
Comment[et]=Xwayland lõpetas krahhiga
|
||||
Comment[eu]=Xwayland kraskatu egin da
|
||||
Comment[fi]=XWayland on kaatunut
|
||||
Comment[fr]=Plantage de « Xwayland »
|
||||
Comment[ia]=Xwayland ha fracassate
|
||||
Comment[it]=Xwayland è stato terminato in modo inatteso
|
||||
Comment[ko]=Xwayland가 충돌함
|
||||
Comment[nl]=Xwayland is gecrasht
|
||||
Comment[nn]=Xwayland krasja
|
||||
Comment[pl]=Xwayland napotkał usterkę
|
||||
Comment[pt]=O Xwayland estoirou
|
||||
Comment[pt_BR]=O Xwayland falhou
|
||||
Comment[ro]=Xwayland s-a prăbușit
|
||||
Comment[sk]=Xwayland spadol
|
||||
Comment[sl]=Xwayland se je sesul
|
||||
Comment[sv]=Xwayland har kraschat
|
||||
|
|
|
@ -113,6 +113,7 @@ void Workspace::updateStackingOrder(bool propagate_new_clients)
|
|||
stacking_order = new_stacking_order;
|
||||
if (changed || propagate_new_clients) {
|
||||
propagateClients(propagate_new_clients);
|
||||
markXStackingOrderAsDirty();
|
||||
emit stackingOrderChanged();
|
||||
if (m_compositor) {
|
||||
m_compositor->addRepaintFull();
|
||||
|
@ -217,10 +218,6 @@ void Workspace::propagateClients(bool propagate_new_clients)
|
|||
}
|
||||
rootInfo()->setClientListStacking(cl, pos);
|
||||
delete [] cl;
|
||||
|
||||
// Make the cached stacking order invalid here, in case we need the new stacking order before we get
|
||||
// the matching event, due to X being asynchronous.
|
||||
markXStackingOrderAsDirty();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -732,11 +729,11 @@ void Workspace::updateXStackingOrder()
|
|||
if (tree && !tree->isNull()) {
|
||||
xcb_window_t *windows = tree->children();
|
||||
const auto count = tree->data()->children_len;
|
||||
int foundUnmanagedCount = unmanaged.count();
|
||||
int foundUnmanagedCount = m_unmanaged.count();
|
||||
for (unsigned int i = 0;
|
||||
i < count;
|
||||
++i) {
|
||||
for (auto it = unmanaged.constBegin(); it != unmanaged.constEnd(); ++it) {
|
||||
for (auto it = m_unmanaged.constBegin(); it != m_unmanaged.constEnd(); ++it) {
|
||||
Unmanaged *u = *it;
|
||||
if (u->window() == windows[i]) {
|
||||
x_stacking.append(u);
|
||||
|
|
|
@ -50,7 +50,6 @@ LayerShellV1Client::LayerShellV1Client(LayerSurfaceV1Interface *shellSurface,
|
|||
setSkipTaskbar(true);
|
||||
setSizeSyncMode(SyncMode::Async);
|
||||
setPositionSyncMode(SyncMode::Sync);
|
||||
setupCompositing();
|
||||
|
||||
connect(shellSurface, &LayerSurfaceV1Interface::aboutToBeDestroyed,
|
||||
this, &LayerShellV1Client::destroyClient);
|
||||
|
|
|
@ -175,7 +175,7 @@ X-KDE-Library=kwin4_effect_cooleffect
|
|||
|
||||
#define KWIN_EFFECT_API_MAKE_VERSION( major, minor ) (( major ) << 8 | ( minor ))
|
||||
#define KWIN_EFFECT_API_VERSION_MAJOR 0
|
||||
#define KWIN_EFFECT_API_VERSION_MINOR 230
|
||||
#define KWIN_EFFECT_API_VERSION_MINOR 231
|
||||
#define KWIN_EFFECT_API_VERSION KWIN_EFFECT_API_MAKE_VERSION( \
|
||||
KWIN_EFFECT_API_VERSION_MAJOR, KWIN_EFFECT_API_VERSION_MINOR )
|
||||
|
||||
|
@ -755,10 +755,10 @@ public:
|
|||
#define KWIN_EFFECT_FACTORY_ENABLED( factoryName, className, jsonFile, enabled ) \
|
||||
KWIN_EFFECT_FACTORY_SUPPORTED_ENABLED( factoryName, className, jsonFile, return true;, enabled )
|
||||
|
||||
#define KWIN_EFFECT_FACTORY_SUPPORTED( factoryName, classname, jsonFile, supported ) \
|
||||
#define KWIN_EFFECT_FACTORY_SUPPORTED( factoryName, className, jsonFile, supported ) \
|
||||
KWIN_EFFECT_FACTORY_SUPPORTED_ENABLED( factoryName, className, jsonFile, supported, return true; )
|
||||
|
||||
#define KWIN_EFFECT_FACTORY( factoryName, classname, jsonFile ) \
|
||||
#define KWIN_EFFECT_FACTORY( factoryName, className, jsonFile ) \
|
||||
KWIN_EFFECT_FACTORY_SUPPORTED_ENABLED( factoryName, className, jsonFile, return true;, return true; )
|
||||
|
||||
|
||||
|
|
|
@ -894,12 +894,12 @@ void GLPlatform::detect(OpenGLPlatformInterface platformInterface)
|
|||
}
|
||||
|
||||
// softpipe
|
||||
else if (m_vendor == "VMware, Inc." && m_chipset == "softpipe" ) {
|
||||
else if (m_chipset == "softpipe") {
|
||||
m_driver = Driver_Softpipe;
|
||||
}
|
||||
|
||||
// llvmpipe
|
||||
else if (m_vendor == "VMware, Inc." && m_chipset == "llvmpipe") {
|
||||
else if (m_chipset == "llvmpipe") {
|
||||
m_driver = Driver_Llvmpipe;
|
||||
}
|
||||
|
||||
|
|
|
@ -221,6 +221,13 @@ void LogindIntegration::logindServiceRegistered()
|
|||
emit connectedChanged();
|
||||
}
|
||||
);
|
||||
|
||||
m_bus.connect(m_sessionControllerService,
|
||||
m_sessionPath,
|
||||
m_sessionControllerManagerInterface,
|
||||
QStringLiteral("PrepareForSleep"),
|
||||
this,
|
||||
SIGNAL(prepareForSleep(bool)));
|
||||
}
|
||||
|
||||
void LogindIntegration::connectSessionPropertiesChanged()
|
||||
|
|
1
logind.h
1
logind.h
|
@ -54,6 +54,7 @@ Q_SIGNALS:
|
|||
void hasSessionControlChanged(bool);
|
||||
void sessionActiveChanged(bool);
|
||||
void virtualTerminalChanged(int);
|
||||
void prepareForSleep(bool prepare);
|
||||
|
||||
private Q_SLOTS:
|
||||
void getSessionActive();
|
||||
|
|
11
main.h
11
main.h
|
@ -158,6 +158,13 @@ public:
|
|||
return m_defaultScreen;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns @c true if we're in the middle of destroying the X11 connection.
|
||||
*/
|
||||
bool isClosingX11Connection() const {
|
||||
return m_isClosingX11Connection;
|
||||
}
|
||||
|
||||
#ifdef KWIN_BUILD_ACTIVITIES
|
||||
bool usesKActivities() const {
|
||||
return m_useKActivities;
|
||||
|
@ -233,6 +240,9 @@ protected:
|
|||
void setTerminating() {
|
||||
m_terminating = true;
|
||||
}
|
||||
void setClosingX11Connection(bool set) {
|
||||
m_isClosingX11Connection = set;
|
||||
}
|
||||
|
||||
protected:
|
||||
static int crashes;
|
||||
|
@ -255,6 +265,7 @@ private:
|
|||
#endif
|
||||
Platform *m_platform = nullptr;
|
||||
bool m_terminating = false;
|
||||
bool m_isClosingX11Connection = false;
|
||||
};
|
||||
|
||||
inline static Application *kwinApp()
|
||||
|
|
21
platform.cpp
21
platform.cpp
|
@ -197,6 +197,7 @@ void Platform::setSoftWareCursor(bool set)
|
|||
disconnect(Cursors::self(), &Cursors::positionChanged, this, &Platform::triggerCursorRepaint);
|
||||
disconnect(Cursors::self(), &Cursors::currentCursorChanged, this, &Platform::triggerCursorRepaint);
|
||||
}
|
||||
triggerCursorRepaint();
|
||||
}
|
||||
|
||||
void Platform::triggerCursorRepaint()
|
||||
|
@ -413,10 +414,14 @@ void Platform::warpPointer(const QPointF &globalPos)
|
|||
Q_UNUSED(globalPos)
|
||||
}
|
||||
|
||||
bool Platform::supportsQpaContext() const
|
||||
bool Platform::supportsSurfacelessContext() const
|
||||
{
|
||||
if (Compositor *c = Compositor::self()) {
|
||||
return c->scene()->openGLPlatformInterfaceExtensions().contains(QByteArrayLiteral("EGL_KHR_surfaceless_context"));
|
||||
Compositor *compositor = Compositor::self();
|
||||
if (Q_UNLIKELY(!compositor)) {
|
||||
return false;
|
||||
}
|
||||
if (Scene *scene = compositor->scene()) {
|
||||
return scene->supportsSurfacelessContext();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -563,4 +568,14 @@ QString Platform::supportInformation() const
|
|||
return QStringLiteral("Name: %1\n").arg(metaObject()->className());
|
||||
}
|
||||
|
||||
EGLContext Platform::sceneEglGlobalShareContext() const
|
||||
{
|
||||
return m_globalShareContext;
|
||||
}
|
||||
|
||||
void Platform::setSceneEglGlobalShareContext(EGLContext context)
|
||||
{
|
||||
m_globalShareContext = context;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
16
platform.h
16
platform.h
|
@ -100,7 +100,7 @@ public:
|
|||
* Whether our Compositing EGL display allows a surface less context
|
||||
* so that a sharing context could be created.
|
||||
*/
|
||||
virtual bool supportsQpaContext() const;
|
||||
bool supportsSurfacelessContext() const;
|
||||
/**
|
||||
* The EGLDisplay used by the compositing scene.
|
||||
*/
|
||||
|
@ -118,6 +118,19 @@ public:
|
|||
void setSceneEglContext(EGLContext context) {
|
||||
m_context = context;
|
||||
}
|
||||
/**
|
||||
* Returns the compositor-wide shared EGL context. This function may return EGL_NO_CONTEXT
|
||||
* if the underlying rendering backend does not use EGL.
|
||||
*
|
||||
* Note that the returned context should never be made current. Instead, create a context
|
||||
* that shares with this one and make the new context current.
|
||||
*/
|
||||
EGLContext sceneEglGlobalShareContext() const;
|
||||
/**
|
||||
* Sets the global share context to @a context. This function is intended to be called only
|
||||
* by rendering backends.
|
||||
*/
|
||||
void setSceneEglGlobalShareContext(EGLContext context);
|
||||
/**
|
||||
* The first (in case of multiple) EGLSurface used by the compositing scene.
|
||||
*/
|
||||
|
@ -544,6 +557,7 @@ private:
|
|||
EGLDisplay m_eglDisplay;
|
||||
EGLConfig m_eglConfig = nullptr;
|
||||
EGLContext m_context = EGL_NO_CONTEXT;
|
||||
EGLContext m_globalShareContext = EGL_NO_CONTEXT;
|
||||
EGLSurface m_surface = EGL_NO_SURFACE;
|
||||
int m_hideCursorCounter = 0;
|
||||
ColorCorrect::Manager *m_colorCorrect = nullptr;
|
||||
|
|
|
@ -40,11 +40,61 @@ eglBindWaylandDisplayWL_func eglBindWaylandDisplayWL = nullptr;
|
|||
eglUnbindWaylandDisplayWL_func eglUnbindWaylandDisplayWL = nullptr;
|
||||
eglQueryWaylandBufferWL_func eglQueryWaylandBufferWL = nullptr;
|
||||
|
||||
static EGLContext s_globalShareContext = EGL_NO_CONTEXT;
|
||||
|
||||
static bool isOpenGLES_helper()
|
||||
{
|
||||
if (qstrcmp(qgetenv("KWIN_COMPOSE"), "O2ES") == 0) {
|
||||
return true;
|
||||
}
|
||||
return QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGLES;
|
||||
}
|
||||
|
||||
static bool ensureGlobalShareContext()
|
||||
{
|
||||
const EGLDisplay eglDisplay = kwinApp()->platform()->sceneEglDisplay();
|
||||
const EGLConfig eglConfig = kwinApp()->platform()->sceneEglConfig();
|
||||
|
||||
if (s_globalShareContext != EGL_NO_CONTEXT) {
|
||||
return true;
|
||||
}
|
||||
|
||||
std::vector<int> attribs;
|
||||
if (isOpenGLES_helper()) {
|
||||
EglOpenGLESContextAttributeBuilder builder;
|
||||
builder.setVersion(2);
|
||||
attribs = builder.build();
|
||||
} else {
|
||||
EglContextAttributeBuilder builder;
|
||||
attribs = builder.build();
|
||||
}
|
||||
|
||||
s_globalShareContext = eglCreateContext(eglDisplay, eglConfig, EGL_NO_CONTEXT, attribs.data());
|
||||
if (s_globalShareContext == EGL_NO_CONTEXT) {
|
||||
qCWarning(KWIN_OPENGL, "Failed to create global share context: 0x%x", eglGetError());
|
||||
}
|
||||
|
||||
kwinApp()->platform()->setSceneEglGlobalShareContext(s_globalShareContext);
|
||||
|
||||
return s_globalShareContext != EGL_NO_CONTEXT;
|
||||
}
|
||||
|
||||
static void destroyGlobalShareContext()
|
||||
{
|
||||
const EGLDisplay eglDisplay = kwinApp()->platform()->sceneEglDisplay();
|
||||
if (eglDisplay == EGL_NO_DISPLAY || s_globalShareContext == EGL_NO_CONTEXT) {
|
||||
return;
|
||||
}
|
||||
eglDestroyContext(eglDisplay, s_globalShareContext);
|
||||
s_globalShareContext = EGL_NO_CONTEXT;
|
||||
kwinApp()->platform()->setSceneEglGlobalShareContext(EGL_NO_CONTEXT);
|
||||
}
|
||||
|
||||
AbstractEglBackend::AbstractEglBackend()
|
||||
: QObject(nullptr)
|
||||
, OpenGLBackend()
|
||||
{
|
||||
connect(Compositor::self(), &Compositor::aboutToDestroy, this, &AbstractEglBackend::unbindWaylandDisplay);
|
||||
connect(Compositor::self(), &Compositor::aboutToDestroy, this, &AbstractEglBackend::teardown);
|
||||
}
|
||||
|
||||
AbstractEglBackend::~AbstractEglBackend()
|
||||
|
@ -52,11 +102,12 @@ AbstractEglBackend::~AbstractEglBackend()
|
|||
delete m_dmaBuf;
|
||||
}
|
||||
|
||||
void AbstractEglBackend::unbindWaylandDisplay()
|
||||
void AbstractEglBackend::teardown()
|
||||
{
|
||||
if (eglUnbindWaylandDisplayWL && m_display != EGL_NO_DISPLAY) {
|
||||
eglUnbindWaylandDisplayWL(m_display, *(WaylandServer::self()->display()));
|
||||
}
|
||||
destroyGlobalShareContext();
|
||||
}
|
||||
|
||||
void AbstractEglBackend::cleanup()
|
||||
|
@ -103,6 +154,7 @@ bool AbstractEglBackend::initEglAPI()
|
|||
qCDebug(KWIN_OPENGL) << "EGL version: " << major << "." << minor;
|
||||
const QByteArray eglExtensions = eglQueryString(m_display, EGL_EXTENSIONS);
|
||||
setExtensions(eglExtensions.split(' '));
|
||||
setSupportsSurfacelessContext(hasExtension(QByteArrayLiteral("EGL_KHR_surfaceless_context")));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -198,14 +250,15 @@ void AbstractEglBackend::doneCurrent()
|
|||
|
||||
bool AbstractEglBackend::isOpenGLES() const
|
||||
{
|
||||
if (qstrcmp(qgetenv("KWIN_COMPOSE"), "O2ES") == 0) {
|
||||
return true;
|
||||
}
|
||||
return QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGLES;
|
||||
return isOpenGLES_helper();
|
||||
}
|
||||
|
||||
bool AbstractEglBackend::createContext()
|
||||
{
|
||||
if (!ensureGlobalShareContext()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const bool haveRobustness = hasExtension(QByteArrayLiteral("EGL_EXT_create_context_robustness"));
|
||||
const bool haveCreateContext = hasExtension(QByteArrayLiteral("EGL_KHR_create_context"));
|
||||
const bool haveContextPriority = hasExtension(QByteArrayLiteral("EGL_IMG_context_priority"));
|
||||
|
@ -276,7 +329,7 @@ bool AbstractEglBackend::createContext()
|
|||
EGLContext ctx = EGL_NO_CONTEXT;
|
||||
for (auto it = candidates.begin(); it != candidates.end(); it++) {
|
||||
const auto attribs = (*it)->build();
|
||||
ctx = eglCreateContext(m_display, config(), EGL_NO_CONTEXT, attribs.data());
|
||||
ctx = eglCreateContext(m_display, config(), s_globalShareContext, attribs.data());
|
||||
if (ctx != EGL_NO_CONTEXT) {
|
||||
qCDebug(KWIN_OPENGL) << "Created EGL context with attributes:" << (*it).get();
|
||||
break;
|
||||
|
@ -392,11 +445,7 @@ void AbstractEglTexture::updateTexture(WindowPixmap *pixmap)
|
|||
m_image = EGL_NO_IMAGE_KHR; // The wl_buffer has ownership of the image
|
||||
// The origin in a dmabuf-buffer is at the upper-left corner, so the meaning
|
||||
// of Y-inverted is the inverse of OpenGL.
|
||||
const bool yInverted = !(dmabuf->flags() & KWaylandServer::LinuxDmabufUnstableV1Interface::YInverted);
|
||||
if (m_size != dmabuf->size() || yInverted != q->isYInverted()) {
|
||||
m_size = dmabuf->size();
|
||||
q->setYInverted(yInverted);
|
||||
}
|
||||
q->setYInverted(!(dmabuf->flags() & KWaylandServer::LinuxDmabufUnstableV1Interface::YInverted));
|
||||
if (s) {
|
||||
s->resetTrackedDamage();
|
||||
}
|
||||
|
@ -552,6 +601,7 @@ bool AbstractEglTexture::loadDmabufTexture(const QPointer< KWaylandServer::Buffe
|
|||
|
||||
m_size = dmabuf->size();
|
||||
q->setYInverted(!(dmabuf->flags() & KWaylandServer::LinuxDmabufUnstableV1Interface::YInverted));
|
||||
updateMatrix();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ protected:
|
|||
bool createContext();
|
||||
|
||||
private:
|
||||
void unbindWaylandDisplay();
|
||||
void teardown();
|
||||
|
||||
EGLDisplay m_display = EGL_NO_DISPLAY;
|
||||
EGLSurface m_surface = EGL_NO_SURFACE;
|
||||
|
|
|
@ -166,11 +166,9 @@ public:
|
|||
return m_haveSwapBuffersWithDamage;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns whether the context is surfaceless
|
||||
*/
|
||||
bool isSurfaceLessContext() const {
|
||||
return m_surfaceLessContext;
|
||||
bool supportsSurfacelessContext() const
|
||||
{
|
||||
return m_haveSurfacelessContext;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -267,6 +265,11 @@ protected:
|
|||
m_haveSwapBuffersWithDamage = value;
|
||||
}
|
||||
|
||||
void setSupportsSurfacelessContext(bool value)
|
||||
{
|
||||
m_haveSurfacelessContext = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return const QRegion& Damage of previously rendered frame
|
||||
*/
|
||||
|
@ -285,13 +288,6 @@ protected:
|
|||
m_renderTimer.start();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param set whether the context is surface less
|
||||
*/
|
||||
void setSurfaceLessContext(bool set) {
|
||||
m_surfaceLessContext = set;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the platform-specific @p extensions.
|
||||
*
|
||||
|
@ -323,6 +319,10 @@ private:
|
|||
*/
|
||||
bool m_havePartialUpdate;
|
||||
bool m_haveSwapBuffersWithDamage = false;
|
||||
/**
|
||||
* @brief Whether the backend supports EGL_KHR_surfaceless_context.
|
||||
*/
|
||||
bool m_haveSurfacelessContext = false;
|
||||
/**
|
||||
* @brief Whether the initialization failed, of course default to @c false.
|
||||
*/
|
||||
|
@ -339,7 +339,6 @@ private:
|
|||
* @brief Timer to measure how long a frame renders.
|
||||
*/
|
||||
QElapsedTimer m_renderTimer;
|
||||
bool m_surfaceLessContext = false;
|
||||
|
||||
QList<QByteArray> m_extensions;
|
||||
};
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue