From 7c4e24bc9a273e1b06b6ab597f4caeedc2205ecf Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sun, 23 Jun 2013 06:31:45 +0000 Subject: [PATCH 001/108] SVN_SILENT made messages (.desktop file) --- effects/mouseclick/mouseclick.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/effects/mouseclick/mouseclick.desktop b/effects/mouseclick/mouseclick.desktop index 075ec20739..2cd264bfe9 100644 --- a/effects/mouseclick/mouseclick.desktop +++ b/effects/mouseclick/mouseclick.desktop @@ -47,7 +47,7 @@ Comment[bs]=Kreira animaciju kada se god protosne dugme miša. To je korisno zas Comment[ca]=Crea una animació quan es fa clic amb un botó del ratolí. Això és útil per enregistrar la pantalla o en presentacions. Comment[ca@valencia]=Crea una animació quan es fa clic amb un botó del ratolí. Això és útil per enregistrar la pantalla o en presentacions. Comment[da]=Opretter en animation når der klikkes på en museknap. Dette er nyttigt til skærmoptagelser/præsentationer. -Comment[de]=Erzeugt bei jedem Mausklick eine Animation. Dies ist sinnvoll für Bildschirmaufnahmen oder Präsentation benutzt werden. +Comment[de]=Erzeugt bei jedem Mausklick eine Animation. Dies ist sinnvoll für Bildschirmaufnahmen oder Präsentationen. Comment[el]=Σχηματίζει εφέ κίνησης όποτε γίνεται κλικ σε κουμπί του ποντικιού. Αυτό είναι χρήσιμο για βιντεοσκόπηση οθόνης / παρουσιάσεις. Comment[es]=Crea una animación cada vez que se pulsa un botón del ratón. Esto resulta útil para las grabaciones de pantalla y para las presentaciones. Comment[et]=Animatsiooni loomine hiirenupu klõpsamise peale. See on kasulik näiteks ekraanisalvestuste või esitluste jaoks. From e93b7b7e68c33e148adfe0fd06f03aef7faf1a0e Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Tue, 25 Jun 2013 03:48:10 +0000 Subject: [PATCH 002/108] SVN_SILENT made messages (.desktop file) --- effects/desktopgrid/desktopgrid.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/effects/desktopgrid/desktopgrid.desktop b/effects/desktopgrid/desktopgrid.desktop index e4cb535d63..15afcedea0 100644 --- a/effects/desktopgrid/desktopgrid.desktop +++ b/effects/desktopgrid/desktopgrid.desktop @@ -129,7 +129,7 @@ Comment[ro]=Îndepărtează astfel încît toate birourile sînt afișate alătu Comment[ru]=Показать все рабочие столы на одном экране Comment[si]=සියළු වැඩතල ජාලයක පැත්තෙන් පැත්තට පෙනීම සඳහා විශාලනය අඩු කරන්න Comment[sk]=Oddiali všetky plochy a zobrazí ich vedľa seba v mriežke -Comment[sl]=Oddalji prikaz, tako da so vsa namizja prikazana eno ob drugem v mreži +Comment[sl]=Oddalji pogled, tako da so vsa namizja prikazana eno ob drugem v mreži Comment[sr]=Умањите тако да се све површи поређају једна до друге у мрежи Comment[sr@ijekavian]=Умањите тако да се све површи поређају једна до друге у мрежи Comment[sr@ijekavianlatin]=Umanjite tako da se sve površi poređaju jedna do druge u mreži From 756bf0a5e34f0e89b8e12cfa22a1c1961a7a0b34 Mon Sep 17 00:00:00 2001 From: Weng Xuetian Date: Tue, 25 Jun 2013 11:09:01 -0400 Subject: [PATCH 003/108] Fix BigSmall Icon Tab box behavior when icons can not fit in the screen REVIEW: 111163 --- tabbox/qml/IconTabBox.qml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tabbox/qml/IconTabBox.qml b/tabbox/qml/IconTabBox.qml index fd9b752cce..c59526183c 100644 --- a/tabbox/qml/IconTabBox.qml +++ b/tabbox/qml/IconTabBox.qml @@ -29,6 +29,7 @@ Item { property alias margins: hoverItem.margins property alias currentItem: iconsListView.currentItem focus: true + clip: true function setModel(model) { @@ -92,9 +93,10 @@ Item { orientation: ListView.Horizontal // used for image provider URL to trick Qt into reloading icons when the model changes property int imageId: 0 - width: (iconSize + margins.left + margins.right) * count + width: Math.min(parent.width, (iconSize + margins.left + margins.right) * count) height: iconSize + margins.top + margins.bottom anchors { + top: parent.top horizontalCenter: parent.horizontalCenter } clip: true From 4a426d731d06902d3375704d9dae425c2f1e67b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20G=C3=A2teau?= Date: Wed, 26 Jun 2013 10:13:33 +0200 Subject: [PATCH 004/108] kwin: Fix build on arm CCMAIL: ubuntu@kitterman.com --- libkwineffects/kwineffects.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libkwineffects/kwineffects.cpp b/libkwineffects/kwineffects.cpp index d29c6343d8..3efb07a9a5 100644 --- a/libkwineffects/kwineffects.cpp +++ b/libkwineffects/kwineffects.cpp @@ -332,7 +332,7 @@ qreal WindowPaintData::crossFadeProgress() const void WindowPaintData::setCrossFadeProgress(qreal factor) { - d->crossFadeProgress = qBound(0.0, factor, 1.0); + d->crossFadeProgress = qBound(qreal(0.0), factor, qreal(1.0)); } qreal WindowPaintData::multiplyDecorationOpacity(qreal factor) From fab8aa9a121abda65a4d11c7de288a5eec666a2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Mon, 24 Jun 2013 00:13:08 +0200 Subject: [PATCH 005/108] update composite blocking from deleted, not client fixing bug by deferring the deletion and removal of the deleted to the next event cycle had the side effect that this now happens in the event cycle of the compositor restart, which was deferred to avoid precisely that... so the test is now moved to the removal of the deleted which got an additional flag wasClient to avoid calling this action for each and every tooltip (and might be usable elsewise) BUG: 321537 FIXED-IN: 4.11 REVIEW: 111204 --- deleted.cpp | 2 ++ deleted.h | 4 ++++ workspace.cpp | 7 +++---- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/deleted.cpp b/deleted.cpp index de26ae18e4..5bfc196989 100644 --- a/deleted.cpp +++ b/deleted.cpp @@ -41,6 +41,7 @@ Deleted::Deleted() , m_minimized(false) , m_modal(false) , m_paintRedirector(NULL) + , m_wasClient(false) { } @@ -81,6 +82,7 @@ void Deleted::copyToDeleted(Toplevel* c) cinfo->disable(); Client* client = dynamic_cast(c); if (client) { + m_wasClient = true; no_border = client->noBorder(); padding_left = client->paddingLeft(); padding_right = client->paddingRight(); diff --git a/deleted.h b/deleted.h index 69fb50e0dc..79b93ac06e 100644 --- a/deleted.h +++ b/deleted.h @@ -66,6 +66,9 @@ public: PaintRedirector *decorationPaintRedirector() { return m_paintRedirector; } + bool wasClient() const { + return m_wasClient; + } protected: virtual void debug(QDebug& stream) const; virtual bool shouldUnredirect() const; @@ -93,6 +96,7 @@ private: bool m_modal; ClientList m_mainClients; PaintRedirector *m_paintRedirector; + bool m_wasClient; }; inline void Deleted::refWindow() diff --git a/workspace.cpp b/workspace.cpp index 43b3c5adef..e6041adcd0 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -594,10 +594,6 @@ void Workspace::removeClient(Client* c) updateStackingOrder(true); - if (m_compositor) { - m_compositor->updateCompositeBlocking(); - } - #ifdef KWIN_BUILD_TABBOX if (tabBox->isDisplayed()) tabBox->reset(true); @@ -641,6 +637,9 @@ void Workspace::removeDeleted(Deleted* c) unconstrained_stacking_order.removeAll(c); stacking_order.removeAll(c); x_stacking_dirty = true; + if (c->wasClient() && m_compositor) { + m_compositor->updateCompositeBlocking(); + } } void Workspace::updateToolWindows(bool also_hide) From cf6acf84b9014aa7cde59438fc63e34fe6926e6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sun, 23 Jun 2013 00:01:05 +0200 Subject: [PATCH 006/108] deny configure requests to leave QuickTiling similar to maximization blocking also ensure the user can permit configure requests for quick tiled and maximized windows REVIEW: 111186 BUG: 321491 FIXED-IN: 4.11 --- geometry.cpp | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/geometry.cpp b/geometry.cpp index d5977492cc..c1e0f054de 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -1599,24 +1599,43 @@ const QPoint Client::calculateGravitation(bool invert, int gravity) const void Client::configureRequest(int value_mask, int rx, int ry, int rw, int rh, int gravity, bool from_tool) { - if (rules()->checkIgnoreGeometry(false)) - return; // user said: "FU!" - // "maximized" is a user setting -> we do not allow the client to resize itself // away from this & against the users explicit wish kDebug(1212) << this << bool(value_mask & (CWX|CWWidth|CWY|CWHeight)) << bool(maximizeMode() & MaximizeVertical) << bool(maximizeMode() & MaximizeHorizontal); - if (!app_noborder) { // - if (maximizeMode() & MaximizeVertical) - value_mask &= ~(CWY|CWHeight); // do not allow clients to drop out of vertical ... - if (maximizeMode() & MaximizeHorizontal) - value_mask &= ~(CWX|CWWidth); // .. or horizontal maximization (MaximizeFull == MaximizeVertical|MaximizeHorizontal) + + // we want to (partially) ignore the request when the window is somehow maximized or quicktiled + bool ignore = !app_noborder && (quick_tile_mode != QuickTileNone || maximizeMode() != MaximizeRestore); + // however, the user shall be able to force obedience despite and also disobedience in general + ignore = rules()->checkIgnoreGeometry(ignore); + if (!ignore) { // either we're not max'd / q'tiled or the user allowed the client to break that - so break it. + quick_tile_mode = QuickTileNone; + max_mode = MaximizeRestore; + } else if (!app_noborder && quick_tile_mode == QuickTileNone && + (maximizeMode() == MaximizeVertical || maximizeMode() == MaximizeHorizontal)) { + // ignoring can be, because either we do, or the user does explicitly not want it. + // for partially maximized windows we want to allow configures in the other dimension. + // so we've to ask the user again - to know whether we just ignored for the partial maximization. + // the problem here is, that the user can explicitly permit configure requests - even for maximized windows! + // we cannot distinguish that from passing "false" for partially maximized windows. + ignore = rules()->checkIgnoreGeometry(false); + if (!ignore) { // the user is not interested, so we fix up dimensions + if (maximizeMode() == MaximizeVertical) + value_mask &= ~(CWY|CWHeight); + if (maximizeMode() == MaximizeHorizontal) + value_mask &= ~(CWX|CWWidth); + if (!(value_mask & (CWX|CWWidth|CWY|CWHeight))) { + ignore = true; // the modification turned the request void + } + } } - if (!(value_mask & (CWX|CWWidth|CWY|CWHeight))) { + + if (ignore) { kDebug(1212) << "DENIED"; - return; // nothing to (left) to do for use - bugs #158974, #252314 + return; // nothing to (left) to do for use - bugs #158974, #252314, #321491 } + kDebug(1212) << "PERMITTED" << this << bool(value_mask & (CWX|CWWidth|CWY|CWHeight)); if (gravity == 0) // default (nonsense) value for the argument From e717c131bf223b0353a126cf3278ea309642229e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 19 Jun 2013 16:26:55 +0200 Subject: [PATCH 007/108] Hook modalChanged signal for DialogParent script Eg. gtk+ alters the modality after mapping and before unmapping the window. Therfore the former implementation ahd a wrong idea about the modality until the window was activated and again had a wrong idea when the dialog closed, keeping the main client dimmed. Modality changes at runtime are uncommon but legal and can happen anytime. BUG: 321340 FIXED-IN: 4.11 REVIEW: 111154 --- effects.cpp | 6 ++++++ effects.h | 1 + .../package/contents/code/main.js | 20 +++++++++++++++++-- libkwineffects/kwineffects.h | 6 ++++++ 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/effects.cpp b/effects.cpp index 1ad2975abd..b07004ad3d 100644 --- a/effects.cpp +++ b/effects.cpp @@ -282,6 +282,7 @@ void EffectsHandlerImpl::setupClientConnections(Client* c) connect(c, SIGNAL(opacityChanged(KWin::Toplevel*,qreal)), this, SLOT(slotOpacityChanged(KWin::Toplevel*,qreal))); connect(c, SIGNAL(clientMinimized(KWin::Client*,bool)), this, SLOT(slotClientMinimized(KWin::Client*,bool))); connect(c, SIGNAL(clientUnminimized(KWin::Client*,bool)), this, SLOT(slotClientUnminimized(KWin::Client*,bool))); + connect(c, SIGNAL(modalChanged()), this, SLOT(slotClientModalityChanged())); connect(c, SIGNAL(geometryShapeChanged(KWin::Toplevel*,QRect)), this, SLOT(slotGeometryShapeChanged(KWin::Toplevel*,QRect))); connect(c, SIGNAL(paddingChanged(KWin::Toplevel*,QRect)), this, SLOT(slotPaddingChanged(KWin::Toplevel*,QRect))); connect(c, SIGNAL(damaged(KWin::Toplevel*,QRect)), this, SLOT(slotWindowDamaged(KWin::Toplevel*,QRect))); @@ -601,6 +602,11 @@ void EffectsHandlerImpl::slotClientUnminimized(Client* c, bool animate) } } +void EffectsHandlerImpl::slotClientModalityChanged() +{ + emit windowModalityChanged(static_cast(sender())->effectWindow()); +} + void EffectsHandlerImpl::slotCurrentTabAboutToChange(EffectWindow *from, EffectWindow *to) { emit currentTabAboutToChange(from, to); diff --git a/effects.h b/effects.h index 1cb4bc230d..17dc4d9002 100644 --- a/effects.h +++ b/effects.h @@ -227,6 +227,7 @@ protected Q_SLOTS: void slotOpacityChanged(KWin::Toplevel *t, qreal oldOpacity); void slotClientMinimized(KWin::Client *c, bool animate); void slotClientUnminimized(KWin::Client *c, bool animate); + void slotClientModalityChanged(); void slotGeometryShapeChanged(KWin::Toplevel *t, const QRect &old); void slotPaddingChanged(KWin::Toplevel *t, const QRect &old); void slotWindowDamaged(KWin::Toplevel *t, const QRect& r); diff --git a/effects/dialogparent/package/contents/code/main.js b/effects/dialogparent/package/contents/code/main.js index e4c2f70a77..52ee202631 100644 --- a/effects/dialogparent/package/contents/code/main.js +++ b/effects/dialogparent/package/contents/code/main.js @@ -27,6 +27,10 @@ var dialogParentEffect = { if (window === null || window.modal === false) { return; } + dialogParentEffect.dialogGotModality(window) + }, + dialogGotModality: function (window) { + "use strict"; mainWindows = window.mainWindows(); for (i = 0; i < mainWindows.length; i += 1) { w = mainWindows[i]; @@ -60,6 +64,10 @@ var dialogParentEffect = { if (window.modal === false) { return; } + dialogParentEffect.dialogLostModality(window); + }, + dialogLostModality: function (window) { + "use strict"; mainWindows = window.mainWindows(); for (i = 0; i < mainWindows.length; i += 1) { w = mainWindows[i]; @@ -96,10 +104,17 @@ var dialogParentEffect = { windows = effects.stackingOrder; for (i = 0; i < windows.length; i += 1) { window = windows[i]; - dialogParentEffect.cancelAnimation(window); + dialogParentEffect.cancelAnimation(window); dialogParentEffect.restartAnimation(window); } }, + modalDialogChanged: function(dialog) { + "use strict"; + if (dialog.modal === false) + dialogParentEffect.dialogLostModality(dialog); + else if (dialog.modal === true) + dialogParentEffect.dialogGotModality(dialog); + }, restartAnimation: function (window) { "use strict"; if (window === null || window.findModal() === null) { @@ -110,10 +125,11 @@ var dialogParentEffect = { init: function () { "use strict"; var i, windows; - effects.windowActivated.connect(dialogParentEffect.windowAdded); + effects.windowAdded.connect(dialogParentEffect.windowAdded); effects.windowClosed.connect(dialogParentEffect.windowClosed); effects.windowMinimized.connect(dialogParentEffect.cancelAnimation); effects.windowUnminimized.connect(dialogParentEffect.restartAnimation); + effects.windowModalityChanged.connect(dialogParentEffect.modalDialogChanged) effects['desktopChanged(int,int)'].connect(dialogParentEffect.desktopChanged); // start animation diff --git a/libkwineffects/kwineffects.h b/libkwineffects/kwineffects.h index 4e7519b3e6..b8c39e9b1d 100644 --- a/libkwineffects/kwineffects.h +++ b/libkwineffects/kwineffects.h @@ -1079,6 +1079,12 @@ Q_SIGNALS: * @since 4.7 **/ void windowUnminimized(KWin::EffectWindow *w); + /** + * Signal emitted when a window either becomes modal (ie. blocking for its main client) or looses that state. + * @param w The window which was unminimized + * @since 4.11 + **/ + void windowModalityChanged(KWin::EffectWindow *w); /** * Signal emitted when an area of a window is scheduled for repainting. * Use this signal in an effect if another area needs to be synced as well. From 936b63dc1a69ebcd2bf4ce6457e97fb828ecc59f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Tue, 18 Jun 2013 01:57:49 +0200 Subject: [PATCH 008/108] updt ActiveLayer client layer on client activation When a client becomes active on a screen with a fullscreen window on the ActiveLayer, that window needs to be withdrawn from the active layer explicitly as it does not get this update with deactivation. REVIEW: 111084 --- activation.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/activation.cpp b/activation.cpp index bad68d7ba0..f924bbc212 100644 --- a/activation.cpp +++ b/activation.cpp @@ -247,11 +247,20 @@ void Workspace::setActiveClient(Client* c) } active_client = c; Q_ASSERT(c == NULL || c->isActive()); - if (active_client != NULL) - last_active_client = active_client; + if (active_client) { + last_active_client = active_client; FocusChain::self()->update(active_client, FocusChain::MakeFirst); active_client->demandAttention(false); + + // activating a client can cause a non active fullscreen window to loose the ActiveLayer status on > 1 screens + if (screens()->count() > 1) { + for (ClientList::Iterator it = clients.begin(); it != clients.end(); ++it) { + if (*it != active_client && (*it)->layer() == ActiveLayer && (*it)->screen() == active_client->screen()) { + updateClientLayer(*it); + } + } + } } pending_take_activity = NULL; From 3f69a5d09b3d4aea5320d6d8c61097c67a6ac219 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sun, 16 Jun 2013 13:56:28 +0200 Subject: [PATCH 009/108] move Screens::create post global config reading It calls KConfigGroup what is not thread safe and collides with threaded config reading. BUG: 321164 FIXED-IN: 4.11 REVIEW: 111082 --- workspace.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/workspace.cpp b/workspace.cpp index e6041adcd0..b3ae147318 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -154,10 +154,6 @@ Workspace::Workspace(bool restore) // start the cursor support Cursor::create(this); - // get screen support - Screens *screens = Screens::create(this); - connect(screens, SIGNAL(changed()), SLOT(desktopResized())); - #ifdef KWIN_BUILD_ACTIVITIES Activities *activities = Activities::create(this); connect(activities, SIGNAL(currentChanged(QString)), SLOT(updateCurrentActivity(QString))); @@ -165,6 +161,11 @@ Workspace::Workspace(bool restore) // PluginMgr needs access to the config file, so we need to wait for it for finishing reparseConfigFuture.waitForFinished(); + + // get screen support + Screens *screens = Screens::create(this); + connect(screens, SIGNAL(changed()), SLOT(desktopResized())); + options->loadConfig(); options->loadCompositingConfig(false); DecorationPlugin::create(this); From 70d81ce42635f7f9c0688fd1db421f48ae4c109d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sat, 15 Jun 2013 22:34:05 +0200 Subject: [PATCH 010/108] drop inputFocus on internalKeep unmapping would do the same, but does not take place to keep the window alive for the compositor this breaks re-activation which takes place on inputFocus events which won't occur since the window got deactivated, but never lost the focus BUG: 317484 FIXED-IN: 4.11 REVIEW: 111046 --- client.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client.cpp b/client.cpp index dd5fdffaec..db6513f09a 100644 --- a/client.cpp +++ b/client.cpp @@ -1183,6 +1183,8 @@ void Client::internalKeep() if (old == Unmapped || old == Withdrawn) map(); m_decoInputExtent.unmap(); + if (isActive()) + workspace()->focusToNull(); // get rid of input focus, bug #317484 updateHiddenPreview(); addWorkspaceRepaint(visibleRect()); workspace()->clientHidden(this); From 16ee964eb7f011f5ad55839b79dabd7dc7e95208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Tue, 25 Jun 2013 15:35:13 +0200 Subject: [PATCH 011/108] Ignore the desktop on smart placement The desktop usually intersects all windows and by this pollutes the heuristics with its punishment --- placement.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/placement.cpp b/placement.cpp index 222d2255c9..b23dc37d62 100644 --- a/placement.cpp +++ b/placement.cpp @@ -154,6 +154,8 @@ static inline bool isIrrelevant(Client *client, Client *regarding, int desktop) return true; if (!client->isOnCurrentActivity()) return true; + if (client->isDesktop()) + return true; return false; } From 774e3ec05b4c8fc8ac470ea11bb3c0c3f105af3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 19 Jun 2013 21:17:31 +0200 Subject: [PATCH 012/108] ignore desktops and splashes for snapping Desktops cannot be resonably snapped or cause implicit screen snapping and splashes are undemanded short term clients REVIEW: 111139 --- geometry.cpp | 107 ++++++++++++++++++++++++++------------------------- 1 file changed, 55 insertions(+), 52 deletions(-) diff --git a/geometry.cpp b/geometry.cpp index c1e0f054de..becb4dc02b 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -456,63 +456,66 @@ QPoint Workspace::adjustClientPosition(Client* c, QPoint pos, bool unrestricted, if (snap) { QList::ConstIterator l; for (l = clients.constBegin(); l != clients.constEnd(); ++l) { - if ((((*l)->isOnDesktop(c->desktop()) && !(*l)->isMinimized()) - || (c->isOnDesktop(NET::OnAllDesktops) && (*l)->isOnDesktop(VirtualDesktopManager::self()->current()) - && !(*l)->isMinimized())) - && (!(*l)->tabGroup() || (*l) == (*l)->tabGroup()->current()) - && (*l) != c) { - lx = (*l)->x(); - ly = (*l)->y(); - lrx = lx + (*l)->width(); - lry = ly + (*l)->height(); + if ((*l) == c) + continue; + if ((*l)->isMinimized()) + continue; // is minimized + if ((*l)->tabGroup() && (*l) != (*l)->tabGroup()->current()) + continue; // is not active tab + if (!((*l)->isOnDesktop(c->desktop()) || c->isOnDesktop((*l)->desktop()))) + continue; // wrong virtual desktop + if (!(*l)->isOnCurrentActivity()) + continue; // wrong activity + if ((*l)->isDesktop() || (*l)->isSplash()) + continue; - if (((cy <= lry) && (cy >= ly)) || - ((ry >= ly) && (ry <= lry)) || - ((cy <= ly) && (ry >= lry))) { - if ((sOWO ? (cx < lrx) : true) && (qAbs(lrx - cx) < snap) && (qAbs(lrx - cx) < deltaX)) { - deltaX = qAbs(lrx - cx); - nx = lrx; - } - if ((sOWO ? (rx > lx) : true) && (qAbs(rx - lx) < snap) && (qAbs(rx - lx) < deltaX)) { - deltaX = qAbs(rx - lx); - nx = lx - cw; - } - } + lx = (*l)->x(); + ly = (*l)->y(); + lrx = lx + (*l)->width(); + lry = ly + (*l)->height(); - if (((cx <= lrx) && (cx >= lx)) || - ((rx >= lx) && (rx <= lrx)) || - ((cx <= lx) && (rx >= lrx))) { - if ((sOWO ? (cy < lry) : true) && (qAbs(lry - cy) < snap) && (qAbs(lry - cy) < deltaY)) { - deltaY = qAbs(lry - cy); - ny = lry; - } - //if ( (qAbs( ry-ly ) < snap) && (qAbs( ry - ly ) < deltaY )) - if ((sOWO ? (ry > ly) : true) && (qAbs(ry - ly) < snap) && (qAbs(ry - ly) < deltaY)) { - deltaY = qAbs(ry - ly); - ny = ly - ch; - } + if (((cy <= lry) && (cy >= ly)) || ((ry >= ly) && (ry <= lry)) || ((cy <= ly) && (ry >= lry))) { + if ((sOWO ? (cx < lrx) : true) && (qAbs(lrx - cx) < snap) && (qAbs(lrx - cx) < deltaX)) { + deltaX = qAbs(lrx - cx); + nx = lrx; } + if ((sOWO ? (rx > lx) : true) && (qAbs(rx - lx) < snap) && (qAbs(rx - lx) < deltaX)) { + deltaX = qAbs(rx - lx); + nx = lx - cw; + } + } - // Corner snapping - if (nx == lrx || nx + cw == lx) { - if ((sOWO ? (ry > lry) : true) && (qAbs(lry - ry) < snap) && (qAbs(lry - ry) < deltaY)) { - deltaY = qAbs(lry - ry); - ny = lry - ch; - } - if ((sOWO ? (cy < ly) : true) && (qAbs(cy - ly) < snap) && (qAbs(cy - ly) < deltaY)) { - deltaY = qAbs(cy - ly); - ny = ly; - } + if (((cx <= lrx) && (cx >= lx)) || ((rx >= lx) && (rx <= lrx)) || ((cx <= lx) && (rx >= lrx))) { + if ((sOWO ? (cy < lry) : true) && (qAbs(lry - cy) < snap) && (qAbs(lry - cy) < deltaY)) { + deltaY = qAbs(lry - cy); + ny = lry; } - if (ny == lry || ny + ch == ly) { - if ((sOWO ? (rx > lrx) : true) && (qAbs(lrx - rx) < snap) && (qAbs(lrx - rx) < deltaX)) { - deltaX = qAbs(lrx - rx); - nx = lrx - cw; - } - if ((sOWO ? (cx < lx) : true) && (qAbs(cx - lx) < snap) && (qAbs(cx - lx) < deltaX)) { - deltaX = qAbs(cx - lx); - nx = lx; - } + //if ( (qAbs( ry-ly ) < snap) && (qAbs( ry - ly ) < deltaY )) + if ((sOWO ? (ry > ly) : true) && (qAbs(ry - ly) < snap) && (qAbs(ry - ly) < deltaY)) { + deltaY = qAbs(ry - ly); + ny = ly - ch; + } + } + + // Corner snapping + if (nx == lrx || nx + cw == lx) { + if ((sOWO ? (ry > lry) : true) && (qAbs(lry - ry) < snap) && (qAbs(lry - ry) < deltaY)) { + deltaY = qAbs(lry - ry); + ny = lry - ch; + } + if ((sOWO ? (cy < ly) : true) && (qAbs(cy - ly) < snap) && (qAbs(cy - ly) < deltaY)) { + deltaY = qAbs(cy - ly); + ny = ly; + } + } + if (ny == lry || ny + ch == ly) { + if ((sOWO ? (rx > lrx) : true) && (qAbs(lrx - rx) < snap) && (qAbs(lrx - rx) < deltaX)) { + deltaX = qAbs(lrx - rx); + nx = lrx - cw; + } + if ((sOWO ? (cx < lx) : true) && (qAbs(cx - lx) < snap) && (qAbs(cx - lx) < deltaX)) { + deltaX = qAbs(cx - lx); + nx = lx; } } } From 725534471e183b29d8f3de46272a1a9470a97789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 19 Jun 2013 21:28:21 +0200 Subject: [PATCH 013/108] exclude padding from snap delta of screen snap using the actual delta this casewise causes false preference for window snapping (less to move) this restores the pre snap-to-content behavior in that regard and delta isn't used for anything else. BUG: 321325 FIXED-IN: 4.11 REVIEW: 111139 --- geometry.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/geometry.cpp b/geometry.cpp index becb4dc02b..4be414cb60 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -433,20 +433,20 @@ QPoint Workspace::adjustClientPosition(Client* c, QPoint pos, bool unrestricted, padding[3] = 0; if ((sOWO ? (cx < xmin) : true) && (qAbs(xmin - cx) < snapX)) { - deltaX = xmin - (cx - padding[0]); + deltaX = xmin - cx; nx = xmin - padding[0]; } if ((sOWO ? (rx > xmax) : true) && (qAbs(rx - xmax) < snapX) && (qAbs(xmax - rx) < deltaX)) { - deltaX = rx + padding[1] - xmax; + deltaX = rx - xmax; nx = xmax - cw + padding[1]; } if ((sOWO ? (cy < ymin) : true) && (qAbs(ymin - cy) < snapY)) { - deltaY = ymin - (cy - padding[2]); + deltaY = ymin - cy; ny = ymin - padding[2]; } if ((sOWO ? (ry > ymax) : true) && (qAbs(ry - ymax) < snapY) && (qAbs(ymax - ry) < deltaY)) { - deltaY = ry + padding[3] - ymax; + deltaY = ry - ymax; ny = ymax - ch + padding[3]; } } From 41ff079da57ddddda115f278f33d79b9647df551 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Sun, 23 Jun 2013 11:54:53 +0200 Subject: [PATCH 014/108] Dead increment --- effects/desktopgrid/desktopgrid.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/effects/desktopgrid/desktopgrid.cpp b/effects/desktopgrid/desktopgrid.cpp index dc3d82b187..7a53b528a2 100644 --- a/effects/desktopgrid/desktopgrid.cpp +++ b/effects/desktopgrid/desktopgrid.cpp @@ -859,8 +859,6 @@ int DesktopGridEffect::posToDesktop(const QPoint& pos) const double scaledY = (pos.y() - scaledOffset[screen].y() + double(border) / 2.0) / (scaledSize[screen].height() + border); int gx = qBound(0, int(scaledX), gridSize.width() - 1); // Zero-based int gy = qBound(0, int(scaledY), gridSize.height() - 1); - scaledX -= gx; - scaledY -= gy; if (orientation == Qt::Horizontal) return gy * gridSize.width() + gx + 1; return gx * gridSize.height() + gy + 1; From 2ea7be70b766208c7648358514af0cd1ca16b944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Sun, 23 Jun 2013 12:01:59 +0200 Subject: [PATCH 015/108] Remove not needed KCmdLineArgs::parsedArgs() in kdemain It's also called in KWin::Application's ctor. --- main.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/main.cpp b/main.cpp index 6786145023..f951191545 100644 --- a/main.cpp +++ b/main.cpp @@ -586,8 +586,6 @@ KDE_EXPORT int kdemain(int argc, char * argv[]) QDBusConnection::sessionBus().interface()->registerService( appname, QDBusConnectionInterface::DontQueueService); - KCmdLineArgs* sargs = KCmdLineArgs::parsedArgs(); - return a.exec(); } From fa6b46ef30aa9edbe8743f5352bbf0c7a8dbfbd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Sun, 23 Jun 2013 12:10:28 +0200 Subject: [PATCH 016/108] Remove dead assignments Variable deltaX and deltaY are assigned in the if-else branches, but not read again after being set in the branches. --- geometry.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/geometry.cpp b/geometry.cpp index 4be414cb60..f928649c0e 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -528,20 +528,16 @@ QPoint Workspace::adjustClientPosition(Client* c, QPoint pos, bool unrestricted, int diffY = qAbs((ymin + ymax) / 2 - (cy + ch / 2)); if (diffX < snap && diffY < snap && diffX < deltaX && diffY < deltaY) { // Snap to center of screen - deltaX = diffX; - deltaY = diffY; nx = (xmin + xmax) / 2 - cw / 2; ny = (ymin + ymax) / 2 - ch / 2; } else if (options->borderSnapZone()) { // Enhance border snap if ((nx == xmin || nx == xmax - cw) && diffY < snap && diffY < deltaY) { // Snap to vertical center on screen edge - deltaY = diffY; ny = (ymin + ymax) / 2 - ch / 2; } else if (((unrestricted ? ny == ymin : ny <= ymin) || ny == ymax - ch) && diffX < snap && diffX < deltaX) { // Snap to horizontal center on screen edge - deltaX = diffX; nx = (xmin + xmax) / 2 - cw / 2; } } From db2e6687e124fb3058a7b84f1f0dfae0975ab8e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Sun, 23 Jun 2013 12:13:45 +0200 Subject: [PATCH 017/108] Remove dead assignment in GLVertexBuffer::draw Variable primitiveMode is not read in the branch and there's a return in the same branch. REVIEW: 111192 --- libkwineffects/kwinglutils.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/libkwineffects/kwinglutils.cpp b/libkwineffects/kwinglutils.cpp index e587fbee14..048cce725e 100644 --- a/libkwineffects/kwinglutils.cpp +++ b/libkwineffects/kwinglutils.cpp @@ -1897,8 +1897,6 @@ void GLVertexBuffer::draw(const QRegion ®ion, GLenum primitiveMode, int first { #ifndef KWIN_HAVE_OPENGLES if (primitiveMode == GL_QUADS) { - primitiveMode = GL_TRIANGLES; - IndexBuffer *&indexBuffer = GLVertexBufferPrivate::s_indexBuffer; if (!indexBuffer) From 7124f5190b5bac7fabb313c76aa1a97eec977701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=B6glund?= Date: Tue, 26 Mar 2013 19:49:35 +0100 Subject: [PATCH 018/108] Revert "kwin: Make WindowQuadList inherit from QVector" This reverts commit 23dff966437bb664a2ffdb3f7957ef39978f5fad. Using QVector is not a win when effects such as wobbly windows are active, due to the realloc overhead. So revert this change for now. --- libkwineffects/kwineffects.h | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/libkwineffects/kwineffects.h b/libkwineffects/kwineffects.h index b8c39e9b1d..62b0a4f0c3 100644 --- a/libkwineffects/kwineffects.h +++ b/libkwineffects/kwineffects.h @@ -1757,7 +1757,6 @@ private: class KWIN_EXPORT WindowQuad { public: - explicit WindowQuad(); explicit WindowQuad(WindowQuadType type, int id = -1); WindowQuad makeSubQuad(double x1, double y1, double x2, double y2) const; WindowVertex& operator[](int index); @@ -1784,7 +1783,7 @@ private: }; class KWIN_EXPORT WindowQuadList - : public QVector + : public QList< WindowQuad > { public: WindowQuadList splitAtX(double x) const; @@ -2693,13 +2692,6 @@ void WindowVertex::setY(double y) WindowQuad ***************************************************************/ -inline -WindowQuad::WindowQuad() - : quadType(WindowQuadError) - , quadID(-1) -{ -} - inline WindowQuad::WindowQuad(WindowQuadType t, int id) : quadType(t) From 6562fcc6656651f224841fca1b4b98fb9744dee6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=B6glund?= Date: Mon, 24 Jun 2013 20:39:32 +0200 Subject: [PATCH 019/108] kwin: Don't query GL_VIEWPORT in pushRenderTarget() Assume that the default framebuffer has the same dimensions as the screen. By not quering the dimensions of the viewport we don't risk serialization in drivers that use threaded dispatch. --- libkwineffects/kwinglutils.cpp | 13 ++++--------- libkwineffects/kwinglutils.h | 1 - 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/libkwineffects/kwinglutils.cpp b/libkwineffects/kwinglutils.cpp index 048cce725e..5792d91b38 100644 --- a/libkwineffects/kwinglutils.cpp +++ b/libkwineffects/kwinglutils.cpp @@ -987,7 +987,6 @@ void ShaderManager::resetShader(ShaderType type) bool GLRenderTarget::sSupported = false; bool GLRenderTarget::s_blitSupported = false; QStack GLRenderTarget::s_renderTargets = QStack(); -QSize GLRenderTarget::s_oldViewport; void GLRenderTarget::initStatic() { @@ -1012,12 +1011,6 @@ bool GLRenderTarget::blitSupported() void GLRenderTarget::pushRenderTarget(GLRenderTarget* target) { - if (s_renderTargets.isEmpty()) { - GLint params[4]; - glGetIntegerv(GL_VIEWPORT, params); - s_oldViewport = QSize(params[2], params[3]); - } - target->enable(); s_renderTargets.push(target); } @@ -1026,11 +1019,13 @@ GLRenderTarget* GLRenderTarget::popRenderTarget() { GLRenderTarget* ret = s_renderTargets.pop(); ret->disable(); + if (!s_renderTargets.isEmpty()) { s_renderTargets.top()->enable(); - } else if (!s_oldViewport.isEmpty()) { - glViewport (0, 0, s_oldViewport.width(), s_oldViewport.height()); + } else { + glViewport (0, 0, displayWidth(), displayHeight()); } + return ret; } diff --git a/libkwineffects/kwinglutils.h b/libkwineffects/kwinglutils.h index 2fdf7a1abf..20a66013b4 100644 --- a/libkwineffects/kwinglutils.h +++ b/libkwineffects/kwinglutils.h @@ -580,7 +580,6 @@ private: static bool sSupported; static bool s_blitSupported; static QStack s_renderTargets; - static QSize s_oldViewport; GLTexture mTexture; bool mValid; From b83d4b158370588b15e63711f7ece40544700d67 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sun, 30 Jun 2013 03:57:16 +0000 Subject: [PATCH 020/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 1 + 1 file changed, 1 insertion(+) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index 8ef64e3d65..60509b163c 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -3,6 +3,7 @@ Name=Kscreen Name[ca]=Kscreen Name[cs]=Kscreen Name[de]=Kscreen +Name[el]=Kscreen Name[es]=Kscreen Name[fi]=KScreen Name[gl]=KScreen From dcd670692bd21f3cfd2648fdd6386883954a1a88 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Mon, 1 Jul 2013 03:54:58 +0000 Subject: [PATCH 021/108] SVN_SILENT made messages (.desktop file) --- kcmkwin/kwindecoration/kwindecoration.desktop | 2 +- kcmkwin/kwinoptions/kwinactions.desktop | 2 +- kcmkwin/kwinoptions/kwinadvanced.desktop | 2 +- kcmkwin/kwinoptions/kwinfocus.desktop | 2 +- kcmkwin/kwinoptions/kwinmoving.desktop | 2 +- kcmkwin/kwinoptions/kwinoptions.desktop | 2 +- kcmkwin/kwinrules/kwinrules.desktop | 2 +- kcmkwin/kwinscreenedges/kwinscreenedges.desktop | 2 +- kcmkwin/kwintabbox/kwintabbox.desktop | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/kcmkwin/kwindecoration/kwindecoration.desktop b/kcmkwin/kwindecoration/kwindecoration.desktop index 1d6da8f517..7adec3c557 100644 --- a/kcmkwin/kwindecoration/kwindecoration.desktop +++ b/kcmkwin/kwindecoration/kwindecoration.desktop @@ -139,7 +139,7 @@ Comment[ru]=Настройка внешнего вида заголовков о Comment[se]=Heivet lásenamahusaid fárdda Comment[si]=කවුළු ශීර්‍ෂයන්හී පෙනුම හා හැඟීම සකසන්න Comment[sk]=Nastavenie vzhľadu titulkov okien -Comment[sl]=Nastavite videz in delovanje naslovnih vrstic okna. +Comment[sl]=Nastavi videz in delovanje naslovnih vrstic okna. Comment[sr]=Подешавање изгледа и осећаја за наслове прозора Comment[sr@ijekavian]=Подешавање изгледа и осјећаја за наслове прозора Comment[sr@ijekavianlatin]=Podešavanje izgleda i osjećaja za naslove prozora diff --git a/kcmkwin/kwinoptions/kwinactions.desktop b/kcmkwin/kwinoptions/kwinactions.desktop index 2038af4760..6d6394f4d7 100644 --- a/kcmkwin/kwinoptions/kwinactions.desktop +++ b/kcmkwin/kwinoptions/kwinactions.desktop @@ -118,7 +118,7 @@ Comment[pt]=Configurar as acções do rato nas janelas Comment[pt_BR]=Configura as ações do mouse nas janelas Comment[ru]=Настройка действий мыши для окон Comment[sk]=Nastaviť akcie myši na oknách -Comment[sl]=Nastavite dejanja miške na oknih +Comment[sl]=Nastavi dejanja miške na oknih Comment[sr]=Подешавање радњи миша на прозорима Comment[sr@ijekavian]=Подешавање радњи миша на прозорима Comment[sr@ijekavianlatin]=Podešavanje radnji miša na prozorima diff --git a/kcmkwin/kwinoptions/kwinadvanced.desktop b/kcmkwin/kwinoptions/kwinadvanced.desktop index 5a811acaa0..06ed613a13 100644 --- a/kcmkwin/kwinoptions/kwinadvanced.desktop +++ b/kcmkwin/kwinoptions/kwinadvanced.desktop @@ -164,7 +164,7 @@ Comment[ru]=Настройка дополнительных возможност Comment[se]=Heivet viiddiduvvon lásegieđahanfunkšuvnnaid Comment[si]=උසස් කවුළු පරිපාලන විශේෂාංග සකසන්න Comment[sk]=Nastavenie pokročilých možností správy okien -Comment[sl]=Nastavitve dodatnih zmožnosti upravljanja oken +Comment[sl]=Nastavi dodatne zmožnosti upravljanja oken Comment[sr]=Подешавање напредних могућности управљања прозорима Comment[sr@ijekavian]=Подешавање напредних могућности управљања прозорима Comment[sr@ijekavianlatin]=Podešavanje naprednih mogućnosti upravljanja prozorima diff --git a/kcmkwin/kwinoptions/kwinfocus.desktop b/kcmkwin/kwinoptions/kwinfocus.desktop index 99ece37b9c..000cd99ddb 100644 --- a/kcmkwin/kwinoptions/kwinfocus.desktop +++ b/kcmkwin/kwinoptions/kwinfocus.desktop @@ -161,7 +161,7 @@ Comment[ru]=Настройка поведения фокуса окон Comment[se]=Heivet lásefohkusa doaibmanvuogi Comment[si]=කවුළෘ නාඹිගත කිරීමේ ප්‍රතිපත්ති සකසන්න Comment[sk]=Nastavenie spôsobu zamerania okien -Comment[sl]=Nastavitve ravnanja s žariščem okna +Comment[sl]=Nastavi ravnanje s žariščem okna Comment[sr]=Подешавање начина фокусирања прозора Comment[sr@ijekavian]=Подешавање начина фокусирања прозора Comment[sr@ijekavianlatin]=Podešavanje načina fokusiranja prozora diff --git a/kcmkwin/kwinoptions/kwinmoving.desktop b/kcmkwin/kwinoptions/kwinmoving.desktop index 243ce46864..a2a9a770c1 100644 --- a/kcmkwin/kwinoptions/kwinmoving.desktop +++ b/kcmkwin/kwinoptions/kwinmoving.desktop @@ -163,7 +163,7 @@ Comment[ru]=Настройка перемещения окон Comment[se]=Heivet mo láset lihkaduvvot Comment[si]=කවුළු ගමන්කරන ආකාරය සකසන්න Comment[sk]=Nastavenie presunu okien -Comment[sl]=Nastavitve načinov premikanja okna +Comment[sl]=Nastavi načine premikanja oken Comment[sr]=Подешавање начина на који се прозори померају Comment[sr@ijekavian]=Подешавање начина на који се прозори помијерају Comment[sr@ijekavianlatin]=Podešavanje načina na koji se prozori pomijeraju diff --git a/kcmkwin/kwinoptions/kwinoptions.desktop b/kcmkwin/kwinoptions/kwinoptions.desktop index f5488cdf30..46e17d617f 100644 --- a/kcmkwin/kwinoptions/kwinoptions.desktop +++ b/kcmkwin/kwinoptions/kwinoptions.desktop @@ -168,7 +168,7 @@ Comment[ru]=Настройка поведения окон Comment[se]=Heivet láseláhttema Comment[si]=කවුළු හැසිරීම් සකසන්න Comment[sk]=Nastavenie správania okna -Comment[sl]=Nastavite obnašanje oken +Comment[sl]=Nastavi obnašanje oken Comment[sr]=Подешавање понашања прозора Comment[sr@ijekavian]=Подешавање понашања прозора Comment[sr@ijekavianlatin]=Podešavanje ponašanja prozora diff --git a/kcmkwin/kwinrules/kwinrules.desktop b/kcmkwin/kwinrules/kwinrules.desktop index 5c29853794..fbc416e351 100644 --- a/kcmkwin/kwinrules/kwinrules.desktop +++ b/kcmkwin/kwinrules/kwinrules.desktop @@ -139,7 +139,7 @@ Comment[ru]=Настройка особых параметров для конк Comment[se]=Heivehusat erenoamáš láse várás Comment[si]=එක් කවුළුවකට විශේෂයෙන් සැකසුම් සාදන්න Comment[sk]=Nastavenie pre jednotlivé okná -Comment[sl]=Nastavite možnosti glede na posamezno okno +Comment[sl]=Nastavi možnosti glede na posamezno okno Comment[sr]=Поставке које важе посебно за сваки прозор Comment[sr@ijekavian]=Поставке које важе посебно за сваки прозор Comment[sr@ijekavianlatin]=Postavke koje važe posebno za svaki prozor diff --git a/kcmkwin/kwinscreenedges/kwinscreenedges.desktop b/kcmkwin/kwinscreenedges/kwinscreenedges.desktop index 68d8cf38b1..f9e75a0ecd 100644 --- a/kcmkwin/kwinscreenedges/kwinscreenedges.desktop +++ b/kcmkwin/kwinscreenedges/kwinscreenedges.desktop @@ -133,7 +133,7 @@ Comment[ro]=Configurează muchiile active ale ecranului Comment[ru]=Настройка действий для краёв экрана Comment[si]=සක්‍රිය තිර කෙලවර වින්‍යාසගත කරන්න Comment[sk]=Nastavenie aktívnych okrajov obrazovky -Comment[sl]=Nastavitve dejavnih robov zaslona +Comment[sl]=Nastavi dejavne robove zaslona Comment[sr]=Подешавање активних ивица екрана Comment[sr@ijekavian]=Подешавање активних ивица екрана Comment[sr@ijekavianlatin]=Podešavanje aktivnih ivica ekrana diff --git a/kcmkwin/kwintabbox/kwintabbox.desktop b/kcmkwin/kwintabbox/kwintabbox.desktop index 13dda2ceab..6bc547169d 100644 --- a/kcmkwin/kwintabbox/kwintabbox.desktop +++ b/kcmkwin/kwintabbox/kwintabbox.desktop @@ -111,7 +111,7 @@ Comment[pt_BR]=Configura o comportamento da navegação pelas janelas Comment[ro]=Configurează comportamentul navigării printre ferestre Comment[ru]=Настройка поведения переключателя окон Comment[sk]=Nastavenie správania pre prepínanie medzi oknami -Comment[sl]=Nastavite obnašanje pri preklapljanju med okni +Comment[sl]=Nastavi obnašanje pri preklapljanju med okni Comment[sr]=Подешавање понашања при кретању кроз прозоре Comment[sr@ijekavian]=Подешавање понашања при кретању кроз прозоре Comment[sr@ijekavianlatin]=Podešavanje ponašanja pri kretanju kroz prozore From 89a1027ac8f0c4abe296388320f9491982a26746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Fri, 28 Jun 2013 20:31:04 +0200 Subject: [PATCH 022/108] fix secondary test for hiding utility windows broke with 2ae475ce CCBUG: 320921 REVIEW: 111302 --- workspace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace.cpp b/workspace.cpp index b3ae147318..8237eeda9b 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -703,7 +703,7 @@ void Workspace::updateToolWindows(bool also_hide) for (ClientList::ConstIterator it2 = mainclients.constBegin(); it2 != mainclients.constEnd(); ++it2) { - if (c->isSpecialWindow()) + if ((*it2)->isSpecialWindow()) show = true; } if (!show) From 9694330aa8da6fbcd8c5ecb4d4b1be525e1e1502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Fri, 28 Jun 2013 21:49:24 +0200 Subject: [PATCH 023/108] grant minimizability to transient special clients This will not provide a 100% fix, since at least KMainWindow toolbars at some point start to behave like override_redirects BUG: 320921 REVIEW: 111303 FIXED-IN: 4.11 --- client.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client.cpp b/client.cpp index db6513f09a..2c80a63c2f 100644 --- a/client.cpp +++ b/client.cpp @@ -826,7 +826,7 @@ void Client::hideClient(bool hide) */ bool Client::isMinimizable() const { - if (isSpecialWindow()) + if (isSpecialWindow() && !isTransient()) return false; if (!rules()->checkMinimize(true)) return false; From eb647c7489ce2d2b35ffc83cae99e1cfe0b35483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 26 Jun 2013 19:29:52 +0200 Subject: [PATCH 024/108] do not emit maximizeChange if mode didn't change BUG: 321638 FIXED-IN: 4.11 REVIEW: 111262 --- geometry.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/geometry.cpp b/geometry.cpp index f928649c0e..0176abd42a 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -2113,12 +2113,15 @@ void Client::maximize(MaximizeMode m) void Client::setMaximize(bool vertically, bool horizontally) { // changeMaximize() flips the state, so change from set->flip + MaximizeMode oldMode = maximizeMode(); changeMaximize( max_mode & MaximizeVertical ? !vertically : vertically, max_mode & MaximizeHorizontal ? !horizontally : horizontally, false); - emit clientMaximizedStateChanged(this, max_mode); - emit clientMaximizedStateChanged(this, vertically, horizontally); + if (oldMode != maximizeMode()) { + emit clientMaximizedStateChanged(this, max_mode); + emit clientMaximizedStateChanged(this, vertically, horizontally); + } } From f71457b2cf08782954ad00236360e770cf7b69bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Thu, 27 Jun 2013 21:54:50 +0200 Subject: [PATCH 025/108] Don't highlight hoverd window while PW start/stops Instead have a synthetic motion after the effect started and explicitly set the selected window on click/drags BUG: 314840 BUG: 314715 FIXED-IN: 4.11 CCBUG: 314717 REVIEW: 111276 --- effects/presentwindows/presentwindows.cpp | 19 ++++++++++++++++--- effects/presentwindows/presentwindows.h | 1 + 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/effects/presentwindows/presentwindows.cpp b/effects/presentwindows/presentwindows.cpp index 116e7eb5e0..413e3ab993 100755 --- a/effects/presentwindows/presentwindows.cpp +++ b/effects/presentwindows/presentwindows.cpp @@ -61,6 +61,7 @@ PresentWindowsEffect::PresentWindowsEffect() , m_decalOpacity(0.0) , m_hasKeyboardGrab(false) , m_mode(ModeCurrentDesktop) + , m_needInitialSelection(false) , m_managerWindow(NULL) , m_highlightedWindow(NULL) , m_filterFrame(NULL) @@ -221,6 +222,10 @@ void PresentWindowsEffect::postPaintScreen() } effects->setActiveFullScreenEffect(NULL); effects->addRepaintFull(); + } else if (m_activated && m_needInitialSelection) { + m_needInitialSelection = false; + QMouseEvent me(QEvent::MouseMove, cursorPos(), Qt::NoButton, Qt::NoButton, Qt::NoModifier); + windowInputMouseEvent(&me); } // Update windows that are changing brightness or opacity @@ -330,7 +335,7 @@ void PresentWindowsEffect::paintWindow(EffectWindow *w, int mask, QRegion region m_motionManager.apply(w, data); QRect rect = m_motionManager.transformedGeometry(w).toRect(); - if (m_activated && winData->highlight > 0.0 && !m_motionManager.areWindowsMoving()) { + if (m_activated && winData->highlight > 0.0) { // scale the window (interpolated by the highlight level) to at least 105% or to cover 1/16 of the screen size - yet keep it in screen bounds QRect area = effects->clientArea(FullScreenArea, w); @@ -533,6 +538,7 @@ void PresentWindowsEffect::windowInputMouseEvent(QEvent *e) // We cannot use m_motionManager.windowAtPoint() as the window might not be visible EffectWindowList windows = m_motionManager.managedWindows(); bool hovering = false; + EffectWindow *highlightCandidate = NULL; for (int i = 0; i < windows.size(); ++i) { DataHash::const_iterator winData = m_windowData.constFind(windows.at(i)); if (winData == m_windowData.constEnd()) @@ -541,7 +547,7 @@ void PresentWindowsEffect::windowInputMouseEvent(QEvent *e) winData->visible && !winData->deleted) { hovering = true; if (windows.at(i) && m_highlightedWindow != windows.at(i) && !m_dragInProgress) - setHighlightedWindow(windows.at(i)); + highlightCandidate = windows.at(i); break; } } @@ -553,6 +559,8 @@ void PresentWindowsEffect::windowInputMouseEvent(QEvent *e) m_closeView->hide(); if (e->type() == QEvent::MouseButtonRelease) { + if (highlightCandidate) + setHighlightedWindow(highlightCandidate); if (me->button() == Qt::LeftButton) { if (m_dragInProgress && m_dragWindow) { // handle drop @@ -612,13 +620,16 @@ void PresentWindowsEffect::windowInputMouseEvent(QEvent *e) } effects->defineCursor(Qt::PointingHandCursor); } else if (e->type() == QEvent::MouseButtonPress && me->button() == Qt::LeftButton && hovering && m_dragToClose) { + if (highlightCandidate) + setHighlightedWindow(highlightCandidate); m_dragStart = me->pos(); m_dragWindow = m_highlightedWindow; m_dragInProgress = false; m_highlightedDropTarget = NULL; effects->setElevatedWindow(m_dragWindow, true); effects->addRepaintFull(); - } + } else if (highlightCandidate && !m_motionManager.areWindowsMoving()) + setHighlightedWindow(highlightCandidate); if (e->type() == QEvent::MouseMove && m_dragWindow) { if ((me->pos() - m_dragStart).manhattanLength() > KGlobalSettings::dndEventDelay() && !m_dragInProgress) { m_dragInProgress = true; @@ -1471,6 +1482,7 @@ void PresentWindowsEffect::setActive(bool active) return; m_activated = active; if (m_activated) { + m_needInitialSelection = true; m_closeButtonCorner = (Qt::Corner)effects->kwinOption(KWin::CloseButtonCorner).toInt(); m_decalOpacity = 0.0; m_highlightedWindow = NULL; @@ -1545,6 +1557,7 @@ void PresentWindowsEffect::setActive(bool active) } } } else { + m_needInitialSelection = false; if (m_highlightedWindow) effects->setElevatedWindow(m_highlightedWindow, false); // Fade in/out all windows diff --git a/effects/presentwindows/presentwindows.h b/effects/presentwindows/presentwindows.h index 89ccca796a..cdbc958dcd 100644 --- a/effects/presentwindows/presentwindows.h +++ b/effects/presentwindows/presentwindows.h @@ -281,6 +281,7 @@ private: EffectWindowList m_selectedWindows; EffectWindow *m_managerWindow; QString m_class; + bool m_needInitialSelection; // Window data WindowMotionManager m_motionManager; From a3d502338d9db0407232ff7c05ccacd73b47de7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Fri, 28 Jun 2013 14:23:22 +0200 Subject: [PATCH 026/108] delay adding Unmanaged clients by 50ms This provides some sort of synthetic XSYNC support for unmanaged clients and allows them to do an initial update after mapping and before being painted (prevent flicker) Also it helps with Unmanaged clients performing quick map/unmap/map cycles what also seems to induce the black window issue on the nvidia blob. CCBUG: 284888 BUG: 319184 FIXED-IN: 4.11 REVIEW: 111292 --- effects.cpp | 14 +++++++++++--- effects.h | 1 + toplevel.h | 2 +- unmanaged.cpp | 3 +++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/effects.cpp b/effects.cpp index b07004ad3d..11781d6751 100644 --- a/effects.cpp +++ b/effects.cpp @@ -555,9 +555,9 @@ void EffectsHandlerImpl::slotClientAdded(Client *c) } void EffectsHandlerImpl::slotUnmanagedAdded(Unmanaged *u) -{ // regardless, unmanaged windows are -yet?- not synced anyway - setupUnmanagedConnections(u); - emit windowAdded(u->effectWindow()); +{ + // it's never initially ready but has synthetic 50ms delay + connect(u, SIGNAL(windowShown(KWin::Toplevel*)), SLOT(slotUnmanagedShown(KWin::Toplevel*))); } void EffectsHandlerImpl::slotClientShown(KWin::Toplevel *t) @@ -569,6 +569,14 @@ void EffectsHandlerImpl::slotClientShown(KWin::Toplevel *t) emit windowAdded(c->effectWindow()); } +void EffectsHandlerImpl::slotUnmanagedShown(KWin::Toplevel *t) +{ // regardless, unmanaged windows are -yet?- not synced anyway + Q_ASSERT(dynamic_cast(t)); + Unmanaged *u = static_cast(t); + setupUnmanagedConnections(u); + emit windowAdded(u->effectWindow()); +} + void EffectsHandlerImpl::slotDeletedRemoved(KWin::Deleted *d) { emit windowDeleted(d->effectWindow()); diff --git a/effects.h b/effects.h index 17dc4d9002..b641bfbe7d 100644 --- a/effects.h +++ b/effects.h @@ -217,6 +217,7 @@ protected Q_SLOTS: void slotClientAdded(KWin::Client *c); void slotClientShown(KWin::Toplevel*); void slotUnmanagedAdded(KWin::Unmanaged *u); + void slotUnmanagedShown(KWin::Toplevel*); void slotWindowClosed(KWin::Toplevel *c); void slotClientActivated(KWin::Client *c); void slotDeletedRemoved(KWin::Deleted *d); diff --git a/toplevel.h b/toplevel.h index 3ad7563d4f..83b1512c0c 100644 --- a/toplevel.h +++ b/toplevel.h @@ -342,6 +342,7 @@ protected Q_SLOTS: void checkScreen(); void setupCheckScreenConnection(); void removeCheckScreenConnection(); + void setReadyForPainting(); protected: virtual ~Toplevel(); @@ -353,7 +354,6 @@ protected: void addDamageFull(); void getWmClientLeader(); void getWmClientMachine(); - void setReadyForPainting(); /** * @returns Whether there is a compositor and it is active. **/ diff --git a/unmanaged.cpp b/unmanaged.cpp index f782180a87..4583ce076f 100644 --- a/unmanaged.cpp +++ b/unmanaged.cpp @@ -25,6 +25,7 @@ along with this program. If not, see . #include "deleted.h" #include "xcbutils.h" +#include #include #include @@ -35,7 +36,9 @@ namespace KWin Unmanaged::Unmanaged() : Toplevel() { + ready_for_painting = false; connect(this, SIGNAL(geometryShapeChanged(KWin::Toplevel*,QRect)), SIGNAL(geometryChanged())); + QTimer::singleShot(50, this, SLOT(setReadyForPainting())); } Unmanaged::~Unmanaged() From a87e8f5e8e9d548d5c81ea517aab42ff9606fa3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=B6glund?= Date: Thu, 27 Jun 2013 01:05:13 +0200 Subject: [PATCH 027/108] kwin: Drop the xcb_icccm dependency This dependency is causing build problems on a number of systems, and it doesn't make much sense to bring in a whole library for three one-line convenience functions. --- CMakeLists.txt | 1 - group.cpp | 2 +- xcbutils.h | 31 ++++++++++++++++++++----------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 245dd10562..9d9cae32a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -253,7 +253,6 @@ set(kwin_XCB_LIBS ${XCB_RENDER_LIBRARIES} ${XCB_RANDR_LIBRARIES} ${XCB_KEYSYMS_LIBRARIES} - ${XCB_ICCCM_LIBRARIES} ) set(kwin_WAYLAND_LIBS diff --git a/group.cpp b/group.cpp index 7d6f4562ce..26fa419f97 100644 --- a/group.cpp +++ b/group.cpp @@ -816,7 +816,7 @@ xcb_window_t Client::verifyTransientFor(xcb_window_t new_transient_for, bool set new_transient_for = rootWindow(); } if (new_property_value != m_originalTransientForId) - xcb_icccm_set_wm_transient_for(connection(), window(), new_property_value); + Xcb::setTransientFor(window(), new_property_value); return new_transient_for; } diff --git a/xcbutils.h b/xcbutils.h index 92a17f3359..1a4befd751 100644 --- a/xcbutils.h +++ b/xcbutils.h @@ -29,11 +29,6 @@ along with this program. If not, see . #include #include -#define class class_name //HACK: work around a non-C++ safe problem in xcb_iccm.h - //where they put a variable called "class" in function signatures. - //Needed at least for xcb v0.3.8 -#include -#undef class //UNDO HACK namespace KWin { @@ -211,10 +206,15 @@ public: } }; -class TransientFor : public Wrapper +inline xcb_get_property_cookie_t get_transient_for(xcb_connection_t *c, xcb_window_t window) +{ + return xcb_get_property_unchecked(c, 0, window, XCB_ATOM_WM_TRANSIENT_FOR, XCB_ATOM_WINDOW, 0, 1); +} + +class TransientFor : public Wrapper { public: - explicit TransientFor(WindowId window) : Wrapper(window) {} + explicit TransientFor(WindowId window) : Wrapper(window) {} /** * @brief Fill given window pointer with the WM_TRANSIENT_FOR property of a window. @@ -225,10 +225,13 @@ public: if (isNull()) { return false; } - if (xcb_icccm_get_wm_transient_for_from_reply(prop, const_cast(data()))) { - return true; - } - return false; + + const xcb_get_property_reply_t *reply = data(); + if (!reply || reply->type != XCB_ATOM_WINDOW || reply->format != 32 || reply->length == 0) + return false; + + *prop = *reinterpret_cast(xcb_get_property_value(reply)); + return true; } }; @@ -685,6 +688,12 @@ static inline void setInputFocus(xcb_window_t window, uint8_t revertTo, xcb_time xcb_set_input_focus(connection(), revertTo, window, time); } +static inline void setTransientFor(xcb_window_t window, xcb_window_t transient_for_window) +{ + xcb_change_property(connection(), XCB_PROP_MODE_REPLACE, window, XCB_ATOM_WM_TRANSIENT_FOR, + XCB_ATOM_WINDOW, 32, 1, &transient_for_window); +} + } // namespace X11 } // namespace KWin From cc001b9be0c2cac5d51267ad30a863f54e7ac833 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Thu, 4 Jul 2013 03:55:20 +0000 Subject: [PATCH 028/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 ++ tabbox/kwindesktopswitcher.desktop | 1 + tabbox/qml/desktops/informative/metadata.desktop | 1 + tabbox/qml/desktops/previews/metadata.desktop | 1 + 4 files changed, 5 insertions(+) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index 60509b163c..828ebb071d 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -7,6 +7,7 @@ Name[el]=Kscreen Name[es]=Kscreen Name[fi]=KScreen Name[gl]=KScreen +Name[hu]=Kscreen Name[ia]=Kscreen Name[kk]=Kscreen Name[nl]=Kscreen @@ -33,6 +34,7 @@ Comment[de]=Hilfseffekt für KScreen Comment[es]=Efecto auxiliar para KScreen Comment[fi]=Avustajatehoste KScreenille Comment[gl]=Efecto auxiliar para KScreen. +Comment[hu]=Segédeffektus a KScreenhez Comment[ia]=Effecto de adjutante pro KScreen Comment[kk]=KScreen-нің көмек эффекті Comment[nl]=Effect van hulp voor KScreen diff --git a/tabbox/kwindesktopswitcher.desktop b/tabbox/kwindesktopswitcher.desktop index f5497d1efe..618e0f3333 100644 --- a/tabbox/kwindesktopswitcher.desktop +++ b/tabbox/kwindesktopswitcher.desktop @@ -8,6 +8,7 @@ Comment[es]=Esquema del cambiador de escritorios de KWin Comment[fi]=KWinin työpöydänvalitsimen asettelu Comment[fr]=Une disposition du sélecteur de bureaux KWin Comment[gl]=Disposición do selector de escritorios de KWin +Comment[hu]=KWin asztalváltó elrendezés Comment[ia]=Disposition de commutator de scriptorio de KWin Comment[kk]=KWin үстел ауыстырғышының қалыпы Comment[lt]=KWin darbastalio perjungimo išdėstymas diff --git a/tabbox/qml/desktops/informative/metadata.desktop b/tabbox/qml/desktops/informative/metadata.desktop index a2545e77fb..8d2fd9b36b 100644 --- a/tabbox/qml/desktops/informative/metadata.desktop +++ b/tabbox/qml/desktops/informative/metadata.desktop @@ -50,6 +50,7 @@ Comment[es]=Un esquema informativo del cambiador de escritorios Comment[fi]=Informatiivinen työpöydänvalitsimen asettelu Comment[fr]=Une disposition du sélecteur informative de bureaux Comment[gl]=Unha disposición informativa do selector de escritorios +Comment[hu]=Egy informatív asztalváltó elrendezés Comment[ia]=Un disposition de commutator de criptorio informative Comment[kk]=Ақпаратты үстел ауыстырғышының қалыпы Comment[lt]=Informatyvus darbastalio perjungimo išdėstymas diff --git a/tabbox/qml/desktops/previews/metadata.desktop b/tabbox/qml/desktops/previews/metadata.desktop index da166ccef8..32998f92ee 100644 --- a/tabbox/qml/desktops/previews/metadata.desktop +++ b/tabbox/qml/desktops/previews/metadata.desktop @@ -7,6 +7,7 @@ Name[es]=Vistas previas Name[fi]=Esikatselut Name[fr]=Aperçus Name[gl]=Vistas previas +Name[hu]=Előnézetek Name[ia]=Vistas preliminar Name[kk]=Алдын-ала қарау Name[lt]=Peržiūros From 205c557f892f12b3811f54fbcd392f3ce0dbee3c Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Fri, 5 Jul 2013 03:48:50 +0000 Subject: [PATCH 029/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 ++ effects/screenedge/screenedgeeffect.desktop | 2 ++ effects/slideback/slideback.desktop | 1 + kcmkwin/kwincompositing/kwincompositing.desktop | 1 + kcmkwin/kwinoptions/kwinactions.desktop | 1 + kcmkwin/kwinoptions/kwinadvanced.desktop | 1 + kcmkwin/kwinoptions/kwinfocus.desktop | 1 + kcmkwin/kwinscreenedges/kwinscreenedges.desktop | 1 + kwin.notifyrc | 2 ++ tabbox/kwindesktopswitcher.desktop | 1 + tabbox/kwinwindowswitcher.desktop | 2 +- tabbox/qml/clients/big_icons/metadata.desktop | 2 +- tabbox/qml/clients/compact/metadata.desktop | 2 +- tabbox/qml/clients/informative/metadata.desktop | 2 +- tabbox/qml/clients/present_windows/metadata.desktop | 2 +- tabbox/qml/clients/small_icons/metadata.desktop | 2 +- tabbox/qml/clients/text/metadata.desktop | 2 +- tabbox/qml/clients/thumbnails/metadata.desktop | 2 +- tabbox/qml/clients/window_strip/metadata.desktop | 2 +- tabbox/qml/desktops/informative/metadata.desktop | 1 + tabbox/qml/desktops/previews/metadata.desktop | 2 ++ 21 files changed, 25 insertions(+), 9 deletions(-) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index 828ebb071d..e2814450c8 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -9,6 +9,7 @@ Name[fi]=KScreen Name[gl]=KScreen Name[hu]=Kscreen Name[ia]=Kscreen +Name[it]=Kscreen Name[kk]=Kscreen Name[nl]=Kscreen Name[pa]=ਕੇਸਕਰੀਨ @@ -36,6 +37,7 @@ Comment[fi]=Avustajatehoste KScreenille Comment[gl]=Efecto auxiliar para KScreen. Comment[hu]=Segédeffektus a KScreenhez Comment[ia]=Effecto de adjutante pro KScreen +Comment[it]=Effetto di assistenza per KScreen Comment[kk]=KScreen-нің көмек эффекті Comment[nl]=Effect van hulp voor KScreen Comment[pa]=ਕੇਸਕਰੀਨ ਲਈ ਮੱਦਦ ਪ੍ਰਭਾਵ diff --git a/effects/screenedge/screenedgeeffect.desktop b/effects/screenedge/screenedgeeffect.desktop index e750ef6e91..491e3f9382 100644 --- a/effects/screenedge/screenedgeeffect.desktop +++ b/effects/screenedge/screenedgeeffect.desktop @@ -10,6 +10,7 @@ Name[fr]=Bord de l'écran Name[gl]=Beira da pantalla Name[hu]=Képernyőszél Name[ia]=Margines de schermo +Name[it]=Bordo dello schermo Name[kk]=Экран жиегі Name[lt]=Ekrano kraštas Name[mr]=स्क्रीन किनारा @@ -44,6 +45,7 @@ Comment[fr]=Mettre en valeur le bord de l'écran à l'approche Comment[gl]=Realza unha beira da pantalla cando se aproxima Comment[hu]=Kiemeli a képernyő szélét megközelítéskor Comment[ia]=Evidentia un margine de schermo quando on approxima se +Comment[it]=Evidenzia il bordo dello schermo quando ti avvicini Comment[kk]=Экран жиегіне жақындағанда оны бояп белгілеу Comment[lt]=Paryškina ekrano kraštą kai priartėjama Comment[mr]=पोहोचताना स्क्रीन किनारे ठळक करतो diff --git a/effects/slideback/slideback.desktop b/effects/slideback/slideback.desktop index 9f45c8ac66..3bdf439e05 100644 --- a/effects/slideback/slideback.desktop +++ b/effects/slideback/slideback.desktop @@ -76,6 +76,7 @@ Comment[fi]=Ikkunaa nostettaessa liu’uttaa muut ikkunat sen taakse Comment[fr]=Faire glisser en arrière les fenêtres lors de l'apparition d'une autre fenêtre Comment[gl]=Despraza cara atrás as xanelas cando outra se eleva Comment[ia]=Glissa retro fenestras quando un altere fenestra es elevate +Comment[it]=Fai scivolare indietro le altre finestre quando una nuova finestra appare Comment[kk]=Басқа терезе алдына шығарылғанда терезелерді сырғанату. Comment[lt]=Slinkti atgal langus, kai kitas langas yra pakeliamas Comment[nb]=Skyv tilbake vinduer når et annet vindu heves diff --git a/kcmkwin/kwincompositing/kwincompositing.desktop b/kcmkwin/kwincompositing/kwincompositing.desktop index 55c6ce93bd..84764231db 100644 --- a/kcmkwin/kwincompositing/kwincompositing.desktop +++ b/kcmkwin/kwincompositing/kwincompositing.desktop @@ -194,6 +194,7 @@ X-KDE-Keywords[fr]=kwin, fenêtre, gestionnaire, composition, effet, effets 3D, X-KDE-Keywords[gl]=kwin,xanela,xestor,composición,efecto,efectos 3D,efectos 2D,OpenGl,XRender, configuración da imaxe,efectos gráficos, efectos do escritorio, animacións, efectos da xestión das xanelas,troco de xanela,animación,velocidade,controlador, render X-KDE-Keywords[hu]=kwin,ablak,kezelő,kompozitálás,hatás,3D hatás,2D hatás,OpenGL,XRender,videobeállítások,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,animáció sebesség,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 hatás,áttekintő hatás,robbanás hatá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,feladatsáv bélyegképek 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,dobozváltás 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,körvonal hatás,jelenlegi ablakok hatás,ablak átméretezése hatás X-KDE-Keywords[ia]=kwin,fenestra,gerente,componente,effecto,effectos 3D,effectos 2D,OpenGL,XRender,preferentias de video,effectos graphic,effectos de scriptorio,animationes,varie animationes,effectos de gestion de genestra,effecto de commutation de fenestra, effecto de commutation de scriptorio,animationes,velocitate de animation,animationes de scriptorio,drivers, preferentias de driver,rendering,render,effecto de inverter,effecto speculo,effecto aggrandor,effecto de adjuta de photo (snap),effecto de tracia de mus,effecto zoom,effecto indistincte,effecto tabuliero,effecto explosion,effecto discolorate,effect de scriptorio discolorate,effecto de collapsar,effecto glissante, effecto de fenestra evidentiare,effecto de authenticar se,effecto de clauder session ,effecto lampada magic,minimisa effecto de animation,effecto de marca de mus,effecto de scalar,effecto de captura schermo,effecto folio,effecto diapositiva, effecto de popups glissante,effecto de miniatura de barra de carga,effecto de miniatura a parte,translucentia, effecto translucentia,transparentia, effecto de geometria de fenestra, effecto de fenestra tremulante,effecto de retro action, effecto de geniytor de dialogo, effecto inactive obscur, effecto de schermo obscur,effecto de retro glissar,eye candy,candy,monstra effecto FPS,monstra effecto pictura, effecto commuta cassa,effecto de commuta coperturat,effecto cubo de scriptorio,animation de cubo de scriptorio,effecto grillia de scriptorio,effecto flip switch,effecto contorno,effecto de fenestra actual,effect de fenestra redimensionante +X-KDE-Keywords[it]=kwin,finestra,gestore,composizione,effetto,effetti 3D,effetti 2D,OpenGL,XRender,impostazioni video,effetti grefici,effetti desktop,animazioni,animazioni varie, effetti del gestore delle finestre,effetto dello scambiafinestre, effetto dello scambiatore di desktop,animazioni,velocità animazioni,animazioni desktop,driver,impostazioni driver,disegno,rendering,effetto invertito,effetto vetro,effetto lente,effetto snap helper,effetto evidenzia mouse,effetto ingrandimento, effetto sfocatura,effetto quadro degli strumenti,effetto esplosione,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 tracciatura mouse, effetto scalatura,effetto istantanea,effetto foglio,effetto diapositiva,effetto scivolamento,effetto icone 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 padre,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 X-KDE-Keywords[kk]=kwin,window,manager,compositing,effect,3D effects,2D effects,OpenGL,XRender,video settings,graphical effects,desktop effects,animations,various animations,window management effects,window switching effect,desktop switching effect,animations,animation speed,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 X-KDE-Keywords[km]=kwin,window,manager,compositing,effect,3D effects,2D effects,OpenGL,XRender,video settings,graphical effects,desktop effects,animations,various animations,window management effects,window switching effect,desktop switching effect,animations,animation speed,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 X-KDE-Keywords[nb]=kwin,vindusbehandler,sammensetting,effekt,3D-effekter,2D-effekter,OpenGL,XRender,videoinnstillinger,grafiske effekter,skrivebordseffekter,animasjoner,diverse animasjoner,vindusbytteeffekter,effekter ved skrivebordsbytte,animasjoner,animasjonsfart,skrivebordsanimasjoner,drivere,driverinnstillinger,opptegning,opptegner,inverteringseffekt,speileffekt,lupeeffekt,gripehjelpereffekt,musesporeffekt,forstørreeffekt,sløreffekt,kontrollpulteffekt,eksplosjonseffekt,uttoningseffekt,skrivebordtoningseffekt,henfallseffekt,glidereffekt,framhev vindu-effekt,innlogingseffekt,utloggingsefffekt,magisk lampe-effekt, animasjonseffekt ved vindusminimering,musmerkeeffekt,innskalerngseffekt,skjermdumpeffekt,ark-effekt,lysbildeeffekt,glidende oppspretteffekt,effekt for minibilder på oppgavelinja,effekt for minibilder på siden,gjennomskinnelighetseffekt,gjennomsiktighet,vindusgeometri-effekt,skjelvende vinduer-effekt,effekt for oppstartsmelding,effekt for foreldredialog,effekt for mørk inaktiv,effekt for mørk skjerm,gli tilbake-effekt,øyesnop,snop,vis FPS-effekt,vis malingseffekt,boksbytteeffekt,lokkbytteeffekt,skrivebordsterning-effekt,effek for animert skrivebordsterning,effekt for skrivebordsruter,effekt for flipp-bytte,omriss-effekt,effekt for vinduer tilstede,effekt for vinduer som endrer størrelse diff --git a/kcmkwin/kwinoptions/kwinactions.desktop b/kcmkwin/kwinoptions/kwinactions.desktop index 6d6394f4d7..f22638fe39 100644 --- a/kcmkwin/kwinoptions/kwinactions.desktop +++ b/kcmkwin/kwinoptions/kwinactions.desktop @@ -109,6 +109,7 @@ Comment[fi]=Ikkunoiden hiiritoimintojen asetukset Comment[fr]=Configurer les actions de souris pour les fenêtres Comment[gl]=Configura a accións do rato nas xanelas Comment[ia]=Configura actiones de mus sur fenestras +Comment[it]=Configura le azioni del mouse sulla finestra Comment[kk]=Терезелердегі тышқанның әрекеттерін баптау Comment[lt]=Konfigūruoti pelės veiksmus langams Comment[nb]=Sett opp musehandlingeer på vinduer diff --git a/kcmkwin/kwinoptions/kwinadvanced.desktop b/kcmkwin/kwinoptions/kwinadvanced.desktop index 06ed613a13..d4ab647d6e 100644 --- a/kcmkwin/kwinoptions/kwinadvanced.desktop +++ b/kcmkwin/kwinoptions/kwinadvanced.desktop @@ -199,6 +199,7 @@ X-KDE-Keywords[fr]=ombres, bord, survol, bords actifs, mosaïque, onglets, tabul X-KDE-Keywords[gl]=sombra,bordo,beira,pasar,contornos activos,beiras activas,lapelas,agrupar xanelas, situación das xanelas, posicionamento das xanelas,comportamento avanzado das xanelas X-KDE-Keywords[hu]=árnyékolás,szegély,lebegés,aktív szegélyek,csempézés,bejárás,ablakbejárás,ablakcsoportosítás,ablakcsempézés,ablakelhelyezés,ablakok elhelyezése,ablak speciális viselkedése X-KDE-Keywords[ia]=umbrar,margine,planante,margines active,con tegulas,schedas,tabbing,tabbing de fenestra,gruppante fenestra,fenestra con tegulas,placiamento de fenestra,placiamento de fenestras, comportamento avantiate de fenestra +X-KDE-Keywords[it]=ombreggiatura,bordo,sovrapponi,bordi attivi,affiancatura,schede,navigazione schede,finestre a schede,regruppamento finestre,affaincatura finestre,posizionamento finestre,posizionamento delle finestre,comportamento avanzato delle finestre X-KDE-Keywords[kk]=shading,border,hover,active borders,tiling,tabs,tabbing,window tabbing,window grouping,window tiling,window placement,placement of windows,window advanced behavior X-KDE-Keywords[km]=shading,border,hover,active borders,tiling,tabs,tabbing,window tabbing,window grouping,window tiling,window placement,placement of windows,window advanced behavior X-KDE-Keywords[nb]=-gardinrulling,kant,sveve,aktive kanter,flislegging,faner,vindusfaner,vindusgruppering,vindus-flislegging,vindusplassering,plassering av vinduer,avansert vindusoppførsel diff --git a/kcmkwin/kwinoptions/kwinfocus.desktop b/kcmkwin/kwinoptions/kwinfocus.desktop index 000cd99ddb..c97c6a9176 100644 --- a/kcmkwin/kwinoptions/kwinfocus.desktop +++ b/kcmkwin/kwinoptions/kwinfocus.desktop @@ -196,6 +196,7 @@ X-KDE-Keywords[fr]=focus, placement, agrandissement automatique, agrandissement, X-KDE-Keywords[gl]=foco,posicionamento,erguer,teclado,CDE,alt-tab,todo o escritorio,foco segue o rato,prevención do foco,roubar o foco,política de focalización X-KDE-Keywords[hu]=fókusz,elhelyezés,automatikus felemelés,felemelés,kattintásra felemelés,billentyűzet,CDE,alt-tab,összes asztal,egérkövető fókusz,fókuszmegelőzés,fókuszlopás,fókusz házirend,ablakfókusz működése,ablakképernyő működése X-KDE-Keywords[ia]=focus,placiamento,auto raise,raise,click raise,clavierp,CDE,alt-tab,all desktop,focus seque mus,prevention de focus,focus stealing,politica de focus,comportamento de foco de fenestra,comportamento de schermo de fenestra +X-KDE-Keywords[it]=fuoco,posizionamento,avanzamento automatico,avanzamento,avanzamento con clic,tastiera,CDE,alt-tab,tutti i desktop,il fuco segue il mouse,impedisci il fuoco,mantieni il fuoco,regole fuoco,regole fuoco finestra,comportamento finestra X-KDE-Keywords[kk]=focus,placement,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[km]=focus,placement,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[nb]=fokus,plassering,autohev,hev,klikk-hev,tastatur,CDE,alt-tab,alle skrivebord,fokus følger mus,fokushindring,fokus-stjeling,fokuspraksis,fokusoppførsel for vinduer,vindusoppførsel på skjerm diff --git a/kcmkwin/kwinscreenedges/kwinscreenedges.desktop b/kcmkwin/kwinscreenedges/kwinscreenedges.desktop index f9e75a0ecd..240ade70f7 100644 --- a/kcmkwin/kwinscreenedges/kwinscreenedges.desktop +++ b/kcmkwin/kwinscreenedges/kwinscreenedges.desktop @@ -163,6 +163,7 @@ X-KDE-Keywords[fr]=kwin, fenêtre, gestionnaire, effet, bord, bordure, action, b X-KDE-Keywords[gl]=kwin,xanela,xestor,efecto,beira,bordo,contorno,acción,trocar,escritorio,contorno do escritorio,maximizar xanelas,escritorio virtual,esquinas da pantalla X-KDE-Keywords[hu]=kwin,ablak,kezelő,effektus,szél,szegély,művelet,váltás,asztal,kwin képernyőszél,asztalszél,képernyőszél,ablakok maximalizálása,ablakcím,képernyőoldal,képernyő működése,asztalváltás,virtuális asztal,képernyősarkok X-KDE-Keywords[ia]=kwin,fenestra,gerente,effecto,bordo,margine,action,commuta,scriptorio,bordos de schermo de kwin,bordos de scriptorio,bordos de scriptorio,maximisa fenestras,tegula fenestras,parte de schermo, comportamento de schermo,commuta scriptorio,scriptorio virtual,angulos de schermo +X-KDE-Keywords[it]=kwin,finestra,gestore,effetto,bordo,azione,scambiatore,desktop,bordi schermo kwin,bordi desktop,bordi schermo,massimizza finestre,affianca finestre,lato dello schermo,comportamento schermo,scambia desktop,desktop virtuale,angoli dello schermo X-KDE-Keywords[kk]=kwin,window,manager,effect,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 X-KDE-Keywords[km]=kwin,window,manager,effect,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 X-KDE-Keywords[nb]=kwin,vindu,behandler,effekt,kant,ramme,handling,bytte,skrivebord,kwin skjermkanter,skrivebordkanter,skjermkanter,maksimere vinduer,flislegge vinduer,skjermside,skjermoppførsel,bytte skrivebord,virtuelt skrivebord,skjermhjørner diff --git a/kwin.notifyrc b/kwin.notifyrc index 8e103dd7d8..671a91fdfb 100644 --- a/kwin.notifyrc +++ b/kwin.notifyrc @@ -203,6 +203,7 @@ Name[es]=Reinicio gráfico Name[fi]=Grafiikan nollaus Name[gl]=Reinicio dos gráficos Name[ia]=Reinitia Graphic +Name[it]=Azzeramento grafica Name[kk]=Графиканы ысыру Name[lt]=Grafikos atstatymas Name[nl]=Grafische reset @@ -229,6 +230,7 @@ Comment[es]=Ha ocurrido un evento de reinicio gráfico Comment[fi]=Sattui grafiikan nollaustapahtuma Comment[gl]=Aconteceu un reinicio de gráficos Comment[ia]=Il necessita un evento de reinitiar le graphic +Comment[it]=Si è verificato un evento di azzeramento della grafica Comment[kk]=Графиканы ысыру оқиғасы болды Comment[nl]=Een gebeurtenis van een grafische reset deed zich voor Comment[pl]=Nastąpiło zdarzenie resetu grafiki diff --git a/tabbox/kwindesktopswitcher.desktop b/tabbox/kwindesktopswitcher.desktop index 618e0f3333..91b9572766 100644 --- a/tabbox/kwindesktopswitcher.desktop +++ b/tabbox/kwindesktopswitcher.desktop @@ -10,6 +10,7 @@ Comment[fr]=Une disposition du sélecteur de bureaux KWin Comment[gl]=Disposición do selector de escritorios de KWin Comment[hu]=KWin asztalváltó elrendezés Comment[ia]=Disposition de commutator de scriptorio de KWin +Comment[it]=Disposizione scambiatore desktop KWin Comment[kk]=KWin үстел ауыстырғышының қалыпы Comment[lt]=KWin darbastalio perjungimo išdėstymas Comment[nb]=Utforming av KWin skrivebordsbytter diff --git a/tabbox/kwinwindowswitcher.desktop b/tabbox/kwinwindowswitcher.desktop index 5d50dbdfb7..fe208d8a00 100644 --- a/tabbox/kwinwindowswitcher.desktop +++ b/tabbox/kwinwindowswitcher.desktop @@ -16,7 +16,7 @@ Comment[fr]=Disposition du sélecteur de fenêtres de KWin Comment[gl]=Disposición do alternador de xanelas de KWin Comment[hu]=KWin ablakváltó elrendezés Comment[ia]=Disposition de commutator de fenestra de KWin -Comment[it]=Layout scambiafinestre KWin +Comment[it]=Disposizione scambiafinestre KWin Comment[kk]=KWin терезе ауыстырғышының қалыпы Comment[km]=ប្លង់​នៃ​កម្មវិធី​ប្ដូរ​បង្អួច KWin Comment[ko]=KWin 창 전환기 레이아웃 diff --git a/tabbox/qml/clients/big_icons/metadata.desktop b/tabbox/qml/clients/big_icons/metadata.desktop index 1202627bb1..1058787b64 100644 --- a/tabbox/qml/clients/big_icons/metadata.desktop +++ b/tabbox/qml/clients/big_icons/metadata.desktop @@ -57,7 +57,7 @@ Comment[fr]=Un sélecteur de fenêtres utilisant de grandes icônes pour représ Comment[gl]=Unha disposición do alternador de xanelas que usa iconas grandes para representar a xanela Comment[hu]=Egy ablakváltó elrendezés, amely nagy ikonokat használ az ablak ábrázolásához Comment[ia]=Un disposition de commutator de fenestra usante icones grande pro representar le fenestra -Comment[it]=Una disposizione di cambiafinestre che usa icone grandi per rappresentare le finestre +Comment[it]=Una disposizione dello scambiafinestre che usa icone grandi per rappresentare le finestre Comment[kk]=Терезелерді үлкен таңбашалармен белгілейтін терезе ауыстырғышының қалыпы Comment[km]=ប្លង់​កម្មវិធី​ប្ដូរ​បង្អួច ដោយ​ប្រើ​រូបតំណាង​ធំ ដើម្បី​បង្ហាញ​បង្អួច​ឡើងវិញ Comment[ko]=큰 아이콘으로 창을 나타내는 창 전환기 레이아웃 diff --git a/tabbox/qml/clients/compact/metadata.desktop b/tabbox/qml/clients/compact/metadata.desktop index b2e6fd56e1..15d490f668 100644 --- a/tabbox/qml/clients/compact/metadata.desktop +++ b/tabbox/qml/clients/compact/metadata.desktop @@ -57,7 +57,7 @@ Comment[fr]=Une disposition synthétique du sélecteur de fenêtres Comment[gl]=Unha disposición compacta do alternador de xanelas Comment[hu]=Egy kompakt ablakváltó elrendezés Comment[ia]=Un disposition de commutator de fenestra compacte -Comment[it]=Una disposizione compatta di cambiafinestre +Comment[it]=Una disposizione compatta dello scambiafinestre Comment[kk]=Ықшамды терезе ауыстырғышының қалыпы Comment[km]=បង្រួម​ប្លង់​កម្មវិធី​ប្ដូរ​បង្អួច Comment[ko]=소형 창 전환기 레이아웃 diff --git a/tabbox/qml/clients/informative/metadata.desktop b/tabbox/qml/clients/informative/metadata.desktop index 1024f55b79..791294dd2d 100644 --- a/tabbox/qml/clients/informative/metadata.desktop +++ b/tabbox/qml/clients/informative/metadata.desktop @@ -57,7 +57,7 @@ Comment[fr]=Une disposition de sélecteur de fenêtres informative incluant le n Comment[gl]=Unha disposición informativa do alternador de xanelas que inclúe o nome do escritorio Comment[hu]=Egy informatív ablakváltó elrendezés az asztal nevét tartalmazva Comment[ia]=Un disposition de commutator de fenestra informative includente nomine de scriptorio -Comment[it]=Una disposizione informative di cambiafinestre che include il nome del desktop +Comment[it]=Una disposizione informativa dello scambiafinestre che include il nome del desktop Comment[kk]=Мәліметті терезе ауыстырғышының қалыпы Comment[km]=ប្លង់​កម្មវិធី​ប្ដូរ​បង្អួច​ព័ត៌មាន រួមមាន​ឈ្មោះ​ផ្ទៃតុ Comment[ko]=데스크톱 이름을 포함하는 정보를 보여 주는 창 전환기 레이아웃 diff --git a/tabbox/qml/clients/present_windows/metadata.desktop b/tabbox/qml/clients/present_windows/metadata.desktop index adb2fb594b..c338414def 100644 --- a/tabbox/qml/clients/present_windows/metadata.desktop +++ b/tabbox/qml/clients/present_windows/metadata.desktop @@ -58,7 +58,7 @@ Comment[fr]=Une disposition de sélecteur de fenêtres affichant toutes les fen Comment[gl]=Unha disposición do alternador de xanelas que mostra nunha grella miniaturas das xanelas Comment[hu]=Egy ablakváltó elrendezés, amely az összes ablakot rácsban jeleníti meg bélyegképekként Comment[ia]=Un disposition de commutator de fenestra monstrante fenestras como miniaturas in un grillia -Comment[it]=Una disposizione di cambiafinestre che mostra tutte le finestre come miniature in una griglia +Comment[it]=Una disposizione dello scambiafinestre che mostra tutte le finestre come miniature in una griglia Comment[kk]=Бүкіл терезе нобайлары тор құрып көрсететілін терезе ауыстырғышының қалыпы Comment[km]=ប្លង់​កម្មវិធី​ប្ដូរ​បង្អួច ដោយ​បង្ហាញ​បង្អួច​ទាំងអស់​ជា​រូបភាព​តូចៗ​ក្នុង​ក្រឡាចត្រង្គ Comment[ko]=모든 창을 바둑판식으로 미리 보여 주는 창 전환기 레이아웃 diff --git a/tabbox/qml/clients/small_icons/metadata.desktop b/tabbox/qml/clients/small_icons/metadata.desktop index 07178d2096..96e785e49b 100644 --- a/tabbox/qml/clients/small_icons/metadata.desktop +++ b/tabbox/qml/clients/small_icons/metadata.desktop @@ -56,7 +56,7 @@ Comment[fr]=Une disposition de sélecteur de fenêtres utilisant de petites icô Comment[gl]=Unha disposición do alternador de xanelas que usa iconas pequenas para representar a xanela Comment[hu]=Egy ablakváltó elrendezés, amely kis ikonokat használ az ablak ábrázolásához Comment[ia]=Un disposition de commutator de fenestra usante parve icones pro representar le fenestra -Comment[it]=Una disposizione di cambiafinestre che usa icone piccole per rappresentare le finestre +Comment[it]=Una disposizione dello scambiafinestre che usa icone piccole per rappresentare le finestre Comment[kk]=Терезелерді шағын таңбашалармен белгілейтін терезе ауыстырғышының қалыпы Comment[km]=ប្លង់​កម្មវិធី​ប្ដូរ​បង្អួច ដោយ​ប្រើ​រូបតំណាង​តូច ដើម្បី​បង្ហាញ​បង្អួច​ឡើង​វិញ Comment[ko]=작은 아이콘으로 창을 나타내는 창 전환기 레이아웃 diff --git a/tabbox/qml/clients/text/metadata.desktop b/tabbox/qml/clients/text/metadata.desktop index 54c9957180..19e2999ef3 100644 --- a/tabbox/qml/clients/text/metadata.desktop +++ b/tabbox/qml/clients/text/metadata.desktop @@ -56,7 +56,7 @@ Comment[fr]=Une disposition de sélecteur de fenêtres n'affichant que le titre Comment[gl]=Unha disposición do alternador de xanelas que só mostra os títulos das xanelas Comment[hu]=Egy ablakváltó elrendezés, amely csak az ablakfeliratokat jeleníti meg Comment[ia]=Un disposition de commutator de fenestra monstrante solo legendas de fenestra -Comment[it]=Una disposizione di cambiafinestre che mostra solo i titoli delle finestre +Comment[it]=Una disposizione dello scambiafinestre che mostra solo i titoli delle finestre Comment[kk]=Тек атауын көрсететін терезе ауыстырғышының қалыпы Comment[km]=ប្លង់​កម្មវិធី​បង្អួច បង្ហាញ​តែ​ចំណង​ជើង​បង្អួច Comment[ko]=캡션만 보여 주는 창 전환기 diff --git a/tabbox/qml/clients/thumbnails/metadata.desktop b/tabbox/qml/clients/thumbnails/metadata.desktop index 6ea891643f..91637ebea5 100644 --- a/tabbox/qml/clients/thumbnails/metadata.desktop +++ b/tabbox/qml/clients/thumbnails/metadata.desktop @@ -55,7 +55,7 @@ Comment[fr]=Une disposition de sélecteur de fenêtres utilisant des aperçus en Comment[gl]=Unha disposición do alternador de xanelas que usa miniaturas ao vivo Comment[hu]=Egy ablakváltó elrendezés, amely élő bélyegképeket használ Comment[ia]=Un disposition de commutator de fenestra usante miniaturas vive -Comment[it]=Una disposizione di cambiafinestre che usa miniature dinamiche +Comment[it]=Una disposizione dello scambiafinestre che usa miniature dinamiche Comment[kk]="Тірі" нобайларын көрсететілін терезе ауыстырғышының қалыпы Comment[km]=ប្លង់​កម្មវិធី​ប្ដូរ​បង្អួច ដោយ​ប្រើ​រូបភាព​តូចៗ​បន្ត​ផ្ទាល់ Comment[ko]=현재 상태를 보여 주는 미리 보기 그림을 사용하는 창 전환기 diff --git a/tabbox/qml/clients/window_strip/metadata.desktop b/tabbox/qml/clients/window_strip/metadata.desktop index 2b1c90e1ea..72529dbe82 100644 --- a/tabbox/qml/clients/window_strip/metadata.desktop +++ b/tabbox/qml/clients/window_strip/metadata.desktop @@ -54,7 +54,7 @@ Comment[fr]=Disposition du sélecteur de fenêtres pour Plasma Active Comment[gl]=Disposición do alternador de xanelas para Plasma Active Comment[hu]=Ablakváltó elrendezés a Plazma aktívhoz Comment[ia]=Disposition de commutator de fenestra per Plasma Active -Comment[it]=Disposizione di cambiafinestre per Plasma Active +Comment[it]=Disposizione dello scambiafinestre per Plasma Active Comment[kk]=Plasma Activt-тың терезе ауыстырғышының қалыпы Comment[km]=ប្លង់​កម្មវិធី​ប្ដូរ​បង្អួជ​សម្រាប់​ប្លាស្មា​សកម្ម Comment[ko]=Plasma Active 창 전환기 레이아웃 diff --git a/tabbox/qml/desktops/informative/metadata.desktop b/tabbox/qml/desktops/informative/metadata.desktop index 8d2fd9b36b..c263607a6f 100644 --- a/tabbox/qml/desktops/informative/metadata.desktop +++ b/tabbox/qml/desktops/informative/metadata.desktop @@ -52,6 +52,7 @@ Comment[fr]=Une disposition du sélecteur informative de bureaux Comment[gl]=Unha disposición informativa do selector de escritorios Comment[hu]=Egy informatív asztalváltó elrendezés Comment[ia]=Un disposition de commutator de criptorio informative +Comment[it]=Una disposizione informativa dello scambiafinestre Comment[kk]=Ақпаратты үстел ауыстырғышының қалыпы Comment[lt]=Informatyvus darbastalio perjungimo išdėstymas Comment[nb]=En kompakt utforming av skrivebordsbytter diff --git a/tabbox/qml/desktops/previews/metadata.desktop b/tabbox/qml/desktops/previews/metadata.desktop index 32998f92ee..2e51072084 100644 --- a/tabbox/qml/desktops/previews/metadata.desktop +++ b/tabbox/qml/desktops/previews/metadata.desktop @@ -9,6 +9,7 @@ Name[fr]=Aperçus Name[gl]=Vistas previas Name[hu]=Előnézetek Name[ia]=Vistas preliminar +Name[it]=Anteprima Name[kk]=Алдын-ала қарау Name[lt]=Peržiūros Name[nb]=Forhåndsvisninger @@ -38,6 +39,7 @@ Comment[fi]=Työpöydänvalitsimen asettelu, jossa on esikatselut työpöydistä Comment[fr]=Une disposition de sélecteur de bureaux avec des aperçus de bureaux Comment[gl]=Unha disposición do selector de escritorios con vistas previas deles Comment[ia]=Un disposition de commutator de scriptorio con vistas preliminar de scriptorios +Comment[it]=Una disposizione con anteprima dello scambiafinestre Comment[kk]=Үстелдер нобайларын көрсететін үстел ауыстырғышының қалыпы Comment[lt]=Darbastalio perjungimo išdėstymas su darbastalių peržiūromis Comment[nb]=Utforming av KWin skrivebordsbytter med forhåndsvisning av skrivebordene From 4e897f23159e6363b0303bb9dbdf043731d46d7d Mon Sep 17 00:00:00 2001 From: Christoph Feck Date: Mon, 8 Jul 2013 00:22:27 +0200 Subject: [PATCH 030/108] Fix crash after zoom when not using XRender MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit for bug 304435 missed a check for OpenGL. OK'd by Thomas Lübking. BUG: 322073 --- effects/zoom/zoom.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/effects/zoom/zoom.cpp b/effects/zoom/zoom.cpp index 83e7aacb26..f34d7076d0 100644 --- a/effects/zoom/zoom.cpp +++ b/effects/zoom/zoom.cpp @@ -248,7 +248,8 @@ void ZoomEffect::prePaintScreen(ScreenPrePaintData& data, int time) if (zoom == 1.0) { showCursor(); - if (altered) // reset the generic shader to avoid artifacts in plenty other effects + // reset the generic shader to avoid artifacts in plenty other effects + if (altered && effects->isOpenGLCompositing()) ShaderBinder binder(ShaderManager::GenericShader, true); } else { hideCursor(); From 9de4c490ba424359cd19b6097c179ec503586674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=B6glund?= Date: Fri, 28 Jun 2013 20:04:33 +0200 Subject: [PATCH 031/108] kwin: Add GLPlatform::preferBufferSubData() This method returns true when glMapBufferRange() is likely to perform worse than glBufferSubData() when updating an unused range in a buffer object. This is the case with the NVIDIA driver, where glMapBufferRange() will force thread serialization. The driver tracks which ranges of the buffer are in use, so calls to glBufferSubData() should not cause a pipeline stall. --- libkwineffects/kwinglplatform.cpp | 10 +++++++++- libkwineffects/kwinglplatform.h | 9 +++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/libkwineffects/kwinglplatform.cpp b/libkwineffects/kwinglplatform.cpp index b0d20f4545..3783a21273 100644 --- a/libkwineffects/kwinglplatform.cpp +++ b/libkwineffects/kwinglplatform.cpp @@ -602,6 +602,7 @@ void GLPlatform::detect(OpenGLPlatformInterface platformInterface) } m_chipset = "Unknown"; + m_preferBufferSubData = false; // Mesa classic drivers @@ -794,8 +795,10 @@ void GLPlatform::detect(OpenGLPlatformInterface platformInterface) if (m_driver == Driver_NVidia && m_chipClass < NV40) m_supportsGLSL = false; // High likelihood of software emulation - if (m_driver == Driver_NVidia) + if (m_driver == Driver_NVidia) { m_looseBinding = true; + m_preferBufferSubData = true; + } if (m_chipClass < NV20) { m_recommendedCompositor = XRenderCompositing; @@ -1051,6 +1054,11 @@ CompositingType GLPlatform::recommendedCompositor() const return m_recommendedCompositor; } +bool GLPlatform::preferBufferSubData() const +{ + return m_preferBufferSubData; +} + bool GLPlatform::isGLES() const { #ifdef KWIN_HAVE_OPENGLES diff --git a/libkwineffects/kwinglplatform.h b/libkwineffects/kwinglplatform.h index 55e23f6545..36a0e15e16 100644 --- a/libkwineffects/kwinglplatform.h +++ b/libkwineffects/kwinglplatform.h @@ -307,6 +307,14 @@ public: **/ CompositingType recommendedCompositor() const; + /** + * Returns true if glMapBufferRange() is likely to perform worse than glBufferSubData() + * when updating an unused range of a buffer object, and false otherwise. + * + * @since 4.11 + */ + bool preferBufferSubData() const; + /** * @returns a human readable form of the @p version. * @since 4.9 @@ -359,6 +367,7 @@ private: bool m_textureNPOT: 1; bool m_limitedNPOT: 1; bool m_virtualMachine: 1; + bool m_preferBufferSubData: 1; static GLPlatform *s_platform; }; From 4b120288b63356a00df06acebfe20a6d2ae88a66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=B6glund?= Date: Fri, 28 Jun 2013 20:20:45 +0200 Subject: [PATCH 032/108] kwin: Use glBufferSubData() when preferred Use glBufferData() to reallocate the data store, and glBufferSubData() to upload data to unused ranges of vertex buffers. --- libkwineffects/kwinglutils.cpp | 60 ++++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/libkwineffects/kwinglutils.cpp b/libkwineffects/kwinglutils.cpp index 5792d91b38..777755af79 100644 --- a/libkwineffects/kwinglutils.cpp +++ b/libkwineffects/kwinglutils.cpp @@ -1591,6 +1591,7 @@ public: void interleaveArrays(float *array, int dim, const float *vertices, const float *texcoords, int count); void bindArrays(); void unbindArrays(); + void reallocateBuffer(size_t size); GLvoid *mapNextFreeRange(size_t size); GLuint buffer; @@ -1725,6 +1726,17 @@ void GLVertexBufferPrivate::unbindArrays() #endif } +void GLVertexBufferPrivate::reallocateBuffer(size_t size) +{ + // Round the size up to 4 Kb for streaming/dynamic buffers. + const size_t minSize = 32768; // Minimum size for streaming buffers + const size_t alloc = usage != GL_STATIC_DRAW ? align(qMax(size, minSize), 4096) : size; + + glBufferData(GL_ARRAY_BUFFER, alloc, 0, usage); + + bufferSize = alloc; +} + GLvoid *GLVertexBufferPrivate::mapNextFreeRange(size_t size) { GLbitfield access = GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_RANGE_BIT | GL_MAP_UNSYNCHRONIZED_BIT; @@ -1732,13 +1744,7 @@ GLvoid *GLVertexBufferPrivate::mapNextFreeRange(size_t size) if ((nextOffset + size) > bufferSize) { // Reallocate the data store if it's too small. if (size > bufferSize) { - // Round the size up to 4 Kb for streaming/dynamic buffers. - const size_t minSize = 32768; // Minimum size for streaming buffers - const size_t alloc = usage != GL_STATIC_DRAW ? align(qMax(size, minSize), 4096) : size; - - glBufferData(GL_ARRAY_BUFFER, alloc, 0, usage); - - bufferSize = alloc; + reallocateBuffer(size); } else { access |= GL_MAP_INVALIDATE_BUFFER_BIT; access ^= GL_MAP_UNSYNCHRONIZED_BIT; @@ -1796,7 +1802,9 @@ GLvoid *GLVertexBuffer::map(size_t size) if (GLVertexBufferPrivate::supported) glBindBuffer(GL_ARRAY_BUFFER, d->buffer); - if (GLVertexBufferPrivate::hasMapBufferRange) + bool preferBufferSubData = GLPlatform::instance()->preferBufferSubData(); + + if (GLVertexBufferPrivate::hasMapBufferRange && !preferBufferSubData) return (GLvoid *) d->mapNextFreeRange(size); // If we can't map the buffer we allocate local memory to hold the @@ -1810,26 +1818,38 @@ GLvoid *GLVertexBuffer::map(size_t size) void GLVertexBuffer::unmap() { - if (GLVertexBufferPrivate::hasMapBufferRange) { + bool preferBufferSubData = GLPlatform::instance()->preferBufferSubData(); + + if (GLVertexBufferPrivate::hasMapBufferRange && !preferBufferSubData) { glUnmapBuffer(GL_ARRAY_BUFFER); d->baseAddress = d->nextOffset; d->nextOffset += align(d->mappedSize, 16); // Align to 16 bytes for SSE - } else { - if (GLVertexBufferPrivate::supported) { - // Upload the data from local memory to the buffer object - glBufferData(GL_ARRAY_BUFFER, d->mappedSize, d->dataStore.data(), d->usage); + } else if (GLVertexBufferPrivate::supported) { + // Upload the data from local memory to the buffer object + if (preferBufferSubData) { + if ((d->nextOffset + d->mappedSize) > d->bufferSize) { + d->reallocateBuffer(d->mappedSize); + d->nextOffset = 0; + } - // Free the local memory buffer if it's unlikely to be used again - if (d->usage == GL_STATIC_DRAW) - d->dataStore = QByteArray(); + glBufferSubData(GL_ARRAY_BUFFER, d->nextOffset, d->mappedSize, d->dataStore.constData()); - d->baseAddress = 0; + d->baseAddress = d->nextOffset; + d->nextOffset += align(d->mappedSize, 16); // Align to 16 bytes for SSE } else { - // If buffer objects aren't supported we just need to update - // the client memory pointer and we're done. - d->baseAddress = intptr_t(d->dataStore.data()); + glBufferData(GL_ARRAY_BUFFER, d->mappedSize, d->dataStore.data(), d->usage); + d->baseAddress = 0; } + + // Free the local memory buffer if it's unlikely to be used again + if (d->usage == GL_STATIC_DRAW) + d->dataStore = QByteArray(); + + } else { + // If buffer objects aren't supported we just need to update + // the client memory pointer and we're done. + d->baseAddress = intptr_t(d->dataStore.data()); } d->mappedSize = 0; From 93ca1c43962f766bb9ec2180e72fcb0bba83f08a Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Mon, 8 Jul 2013 04:04:09 +0000 Subject: [PATCH 033/108] SVN_SILENT made messages (.desktop file) --- tabbox/qml/clients/text/metadata.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tabbox/qml/clients/text/metadata.desktop b/tabbox/qml/clients/text/metadata.desktop index 19e2999ef3..ef307c3784 100644 --- a/tabbox/qml/clients/text/metadata.desktop +++ b/tabbox/qml/clients/text/metadata.desktop @@ -27,7 +27,7 @@ Name[nl]=Tekstpictogrammen Name[pa]=ਟੈਕਸਟ ਆਈਕਾਨ Name[pl]=Ikony tekstowe Name[pt]=Ícones de Texto -Name[pt_BR]=Ícones de texto +Name[pt_BR]=Texto dos ícones Name[ro]=Pictograme textuale Name[ru]=Текстовые значки Name[sk]=Textové ikony From 71940e879d373d9308ff4fddcc9c4856883e63eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Mon, 8 Jul 2013 08:31:51 +0200 Subject: [PATCH 034/108] Fix modulation in Invert effect Thanks to Kevin for spotting and providing a fix. BUG: 322013 FIXED-IN: 4.11 --- effects/invert/data/1.10/invert.frag | 2 +- effects/invert/data/1.40/invert.frag | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/effects/invert/data/1.10/invert.frag b/effects/invert/data/1.10/invert.frag index a9e1201460..9fe602b654 100644 --- a/effects/invert/data/1.10/invert.frag +++ b/effects/invert/data/1.10/invert.frag @@ -14,8 +14,8 @@ void main() tex.rgb = tex.rgb * vec3( saturation ) + desaturated * vec3( 1.0 - saturation ); } - tex *= modulation; tex.rgb = vec3(1.0) - tex.rgb; + tex *= modulation; tex.rgb *= tex.a; gl_FragColor = tex; diff --git a/effects/invert/data/1.40/invert.frag b/effects/invert/data/1.40/invert.frag index 0b6d21951e..6dee1e60ad 100644 --- a/effects/invert/data/1.40/invert.frag +++ b/effects/invert/data/1.40/invert.frag @@ -17,8 +17,8 @@ void main() tex.rgb = tex.rgb * vec3( saturation ) + desaturated * vec3( 1.0 - saturation ); } - tex *= modulation; tex.rgb = vec3(1.0) - tex.rgb; + tex *= modulation; tex.rgb *= tex.a; fragColor = tex; From 2689bcbec42034fc2c0121026e3390232feabc12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Mon, 8 Jul 2013 08:34:06 +0200 Subject: [PATCH 035/108] ScopedCPointer instead of QScopedPointer --- netinfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netinfo.cpp b/netinfo.cpp index 3c01b45a5c..faf58f75fe 100644 --- a/netinfo.cpp +++ b/netinfo.cpp @@ -45,7 +45,7 @@ RootInfo *RootInfo::create() XCB_COPY_FROM_PARENT, XCB_CW_OVERRIDE_REDIRECT, values); const uint32_t lowerValues[] = { XCB_STACK_MODE_BELOW }; // See usage in layers.cpp // we need to do the lower window with a roundtrip, otherwise NETRootInfo is not functioning - QScopedPointer error(xcb_request_check(connection(), + ScopedCPointer error(xcb_request_check(connection(), xcb_configure_window_checked(connection(), supportWindow, XCB_CONFIG_WINDOW_STACK_MODE, lowerValues))); if (!error.isNull()) { kDebug(1212) << "Error occurred while lowering support window: " << error->error_code; From bcf6c9c319e44ca90cbf57872dd935a89c57626b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sun, 7 Jul 2013 20:09:50 +0200 Subject: [PATCH 036/108] use configured xrender filter that's why it's configured REVIEW: 111428 BUG: 322074 FIXED-IN: 4.11 --- scene_xrender.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scene_xrender.cpp b/scene_xrender.cpp index b61bc76a28..b5c217228c 100644 --- a/scene_xrender.cpp +++ b/scene_xrender.cpp @@ -675,7 +675,7 @@ xcb_render_composite(connection(), XCB_RENDER_PICT_OP_OVER, _PART_, decorationAl if (blitInTempPixmap) { const QRect r = mapToScreen(mask, data, temp_visibleRect); xcb_render_set_picture_transform(connection(), *s_tempPicture, xform); - setPictureFilter(*s_tempPicture, KWin::Scene::ImageFilterGood); + setPictureFilter(*s_tempPicture, filter); xcb_render_composite(connection(), XCB_RENDER_PICT_OP_OVER, *s_tempPicture, XCB_RENDER_PICTURE_NONE, buffer, 0, 0, 0, 0, r.x(), r.y(), r.width(), r.height()); From 9f69a793e890d60e7b5ff8eb1e3b0d801969deb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sun, 7 Jul 2013 21:14:06 +0200 Subject: [PATCH 037/108] fix GL1.2 saturation modulation for non opaques whether a window is ARGB or just not opaque does not matter BUG: 319091 FIXED-IN: 4.11 REVIEW: 111433 --- scene_opengl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scene_opengl.cpp b/scene_opengl.cpp index b19206133c..e62829f33f 100644 --- a/scene_opengl.cpp +++ b/scene_opengl.cpp @@ -1730,7 +1730,7 @@ void SceneOpenGL1Window::prepareStates(TextureType type, qreal opacity, qreal br glColor4f(opacity, opacity, opacity, opacity); tex->bind(); - if (alpha || brightness != 1.0f) { + if (alpha || !opaque || brightness != 1.0f) { glActiveTexture(GL_TEXTURE3); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE); From 3b285ba572db102028054e9ae6c9e085a9116809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Tue, 2 Jul 2013 23:06:06 +0200 Subject: [PATCH 038/108] don't query effects threaded calls sycoca/kconfiggroup... BUG: 321576 FIXED-IN: 4.11 REVIEW: 111374 --- effects.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/effects.cpp b/effects.cpp index 11781d6751..da48338ecb 100644 --- a/effects.cpp +++ b/effects.cpp @@ -305,6 +305,7 @@ void EffectsHandlerImpl::reconfigure() QFutureWatcher *watcher = new QFutureWatcher(this); connect(watcher, SIGNAL(finished()), this, SLOT(slotEffectsQueried())); watcher->setFuture(QtConcurrent::run(KServiceTypeTrader::self(), &KServiceTypeTrader::query, QString("KWin/Effect"), QString())); + watcher->waitForFinished(); // TODO: remove once KConfigGroup is thread safe, bug #321576 } void EffectsHandlerImpl::slotEffectsQueried() From 5cf328fbecfda9ea2cb2d2558410165138f970a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Tue, 2 Jul 2013 12:45:01 +0200 Subject: [PATCH 039/108] ensure to not add NULL effect windows to stacking happens during threaded startup and crashes in blur effect when initially enabled REVIEW: 111360 --- effects.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/effects.cpp b/effects.cpp index da48338ecb..a81dfa1e66 100644 --- a/effects.cpp +++ b/effects.cpp @@ -1045,8 +1045,10 @@ EffectWindowList EffectsHandlerImpl::stackingOrder() const { ToplevelList list = Workspace::self()->xStackingOrder(); EffectWindowList ret; - foreach (Toplevel *w, list) - ret.append(effectWindow(w)); + foreach (Toplevel *t, list) { + if (EffectWindow *w = effectWindow(t)) + ret.append(w); + } return ret; } From 5bd49bfee24152981d8c92a93c862c7be51b7bc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Tue, 2 Jul 2013 12:45:55 +0200 Subject: [PATCH 040/108] update visibleRect when elevating toplevel required to clean eg. the blur cache and because the stacking changes. BUG: 321831 FIXED-IN: 4.11 REVIEW: 111359 --- toplevel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/toplevel.cpp b/toplevel.cpp index 1c172211f2..cfe9e4b1e1 100644 --- a/toplevel.cpp +++ b/toplevel.cpp @@ -462,6 +462,7 @@ void Toplevel::elevate(bool elevate) return; } effectWindow()->elevate(elevate); + addWorkspaceRepaint(visibleRect()); } pid_t Toplevel::pid() const From 3ad47552d020c5f02feb7cc5f3d33ac69dad81bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Mon, 1 Jul 2013 20:38:40 +0200 Subject: [PATCH 041/108] non-empty attrib_list for glXCreateContextAttribsARB empty list is legal but causes bogus context on at least i915 BUG: 321843 REVIEW: 111355 FIXED-IN: 4.11 --- glxbackend.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/glxbackend.cpp b/glxbackend.cpp index 4325f8ed5e..6f1185feed 100644 --- a/glxbackend.cpp +++ b/glxbackend.cpp @@ -169,6 +169,8 @@ bool GlxBackend::initRenderingContext() }; const int attribs_legacy[] = { + GLX_CONTEXT_MAJOR_VERSION_ARB, 1, + GLX_CONTEXT_MINOR_VERSION_ARB, 2, 0 }; From d9215dd4e13eca3fe73e13741f2bcdbe1e4d6cc9 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Tue, 9 Jul 2013 23:40:46 +0000 Subject: [PATCH 042/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 ++ 1 file changed, 2 insertions(+) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index e2814450c8..6d503bed87 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -23,6 +23,7 @@ Name[sr@ijekavian]=К‑екран Name[sr@ijekavianlatin]=K‑ekran Name[sr@latin]=K‑ekran Name[sv]=Kskärm +Name[tr]=Kscreen Name[uk]=Kscreen Name[x-test]=xxKscreenxx Name[zh_CN]=Kscreen @@ -51,6 +52,7 @@ Comment[sr@ijekavian]=Помоћни ефекат за К‑екран Comment[sr@ijekavianlatin]=Pomoćni efekat za K‑ekran Comment[sr@latin]=Pomoćni efekat za K‑ekran Comment[sv]=Hjälpeffekt för Kskärm +Comment[tr]=KScreen için Yardımcı Efekt Comment[uk]=Допоміжний ефект KScreen Comment[x-test]=xxHelper Effect for KScreenxx Comment[zh_CN]=KScreen 的帮助效果 From f203861b12f04dc4bd0f01f12deb2d20e80c6429 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Wed, 10 Jul 2013 02:34:48 +0000 Subject: [PATCH 043/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 ++ 1 file changed, 2 insertions(+) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index e2814450c8..6d503bed87 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -23,6 +23,7 @@ Name[sr@ijekavian]=К‑екран Name[sr@ijekavianlatin]=K‑ekran Name[sr@latin]=K‑ekran Name[sv]=Kskärm +Name[tr]=Kscreen Name[uk]=Kscreen Name[x-test]=xxKscreenxx Name[zh_CN]=Kscreen @@ -51,6 +52,7 @@ Comment[sr@ijekavian]=Помоћни ефекат за К‑екран Comment[sr@ijekavianlatin]=Pomoćni efekat za K‑ekran Comment[sr@latin]=Pomoćni efekat za K‑ekran Comment[sv]=Hjälpeffekt för Kskärm +Comment[tr]=KScreen için Yardımcı Efekt Comment[uk]=Допоміжний ефект KScreen Comment[x-test]=xxHelper Effect for KScreenxx Comment[zh_CN]=KScreen 的帮助效果 From 185d9306d0bdd56bb20c228a7fff76fe5aa747a3 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Fri, 12 Jul 2013 18:25:57 +0200 Subject: [PATCH 044/108] Fix order --- effects/presentwindows/presentwindows.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/effects/presentwindows/presentwindows.cpp b/effects/presentwindows/presentwindows.cpp index 413e3ab993..bb5b1abddb 100755 --- a/effects/presentwindows/presentwindows.cpp +++ b/effects/presentwindows/presentwindows.cpp @@ -61,8 +61,8 @@ PresentWindowsEffect::PresentWindowsEffect() , m_decalOpacity(0.0) , m_hasKeyboardGrab(false) , m_mode(ModeCurrentDesktop) - , m_needInitialSelection(false) , m_managerWindow(NULL) + , m_needInitialSelection(false) , m_highlightedWindow(NULL) , m_filterFrame(NULL) , m_closeView(NULL) From e02722e034f3f76975d4fbb78c1a0726eda22a39 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 13 Jul 2013 03:58:16 +0000 Subject: [PATCH 045/108] SVN_SILENT made messages (.desktop file) --- effects/slideback/slideback.desktop | 1 + 1 file changed, 1 insertion(+) diff --git a/effects/slideback/slideback.desktop b/effects/slideback/slideback.desktop index 3bdf439e05..65861f33a1 100644 --- a/effects/slideback/slideback.desktop +++ b/effects/slideback/slideback.desktop @@ -71,6 +71,7 @@ Name[zh_TW]=往回滑動 Type=Service Comment=Slide back windows when another window is raised Comment[ca]=Llisca enrere les finestres quan s'eleva una altra finestra +Comment[de]=Fenster nach hinten gleiten wenn ein anderes Fenster aktiviert wird. Comment[es]=Desliza las ventanas atrás cuando una ventana pasa a primer plano Comment[fi]=Ikkunaa nostettaessa liu’uttaa muut ikkunat sen taakse Comment[fr]=Faire glisser en arrière les fenêtres lors de l'apparition d'une autre fenêtre From 88e8e01ea72d58f3590fc4a6e6b9d6f55d8ebfbf Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 13 Jul 2013 06:44:24 +0000 Subject: [PATCH 046/108] SVN_SILENT made messages (.desktop file) --- effects/slideback/slideback.desktop | 1 + 1 file changed, 1 insertion(+) diff --git a/effects/slideback/slideback.desktop b/effects/slideback/slideback.desktop index 3bdf439e05..65861f33a1 100644 --- a/effects/slideback/slideback.desktop +++ b/effects/slideback/slideback.desktop @@ -71,6 +71,7 @@ Name[zh_TW]=往回滑動 Type=Service Comment=Slide back windows when another window is raised Comment[ca]=Llisca enrere les finestres quan s'eleva una altra finestra +Comment[de]=Fenster nach hinten gleiten wenn ein anderes Fenster aktiviert wird. Comment[es]=Desliza las ventanas atrás cuando una ventana pasa a primer plano Comment[fi]=Ikkunaa nostettaessa liu’uttaa muut ikkunat sen taakse Comment[fr]=Faire glisser en arrière les fenêtres lors de l'apparition d'une autre fenêtre From 7bd89eb6eec4bf022759272b6e23c8bc0ca44afe Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sun, 14 Jul 2013 04:16:47 +0000 Subject: [PATCH 047/108] SVN_SILENT made messages (.desktop file) --- clients/aurorae/src/kwindecoration.desktop | 1 + clients/aurorae/themes/plastik/package/metadata.desktop | 1 + effects/maximize/package/metadata.desktop | 2 ++ effects/mouseclick/mouseclick.desktop | 2 ++ effects/mouseclick/mouseclick_config.desktop | 1 + 5 files changed, 7 insertions(+) diff --git a/clients/aurorae/src/kwindecoration.desktop b/clients/aurorae/src/kwindecoration.desktop index ae92d76073..aa2017c7b3 100644 --- a/clients/aurorae/src/kwindecoration.desktop +++ b/clients/aurorae/src/kwindecoration.desktop @@ -3,6 +3,7 @@ Type=ServiceType X-KDE-ServiceType=KWin/Decoration Comment=KWin Window Decoration +Comment[bs]=KWin Dekoracije prozora Comment[ca]=Decoració de finestres del KWin Comment[ca@valencia]=Decoració de finestres del KWin Comment[cs]=Dekorace oken KWin diff --git a/clients/aurorae/themes/plastik/package/metadata.desktop b/clients/aurorae/themes/plastik/package/metadata.desktop index 3026512036..26fa04729f 100644 --- a/clients/aurorae/themes/plastik/package/metadata.desktop +++ b/clients/aurorae/themes/plastik/package/metadata.desktop @@ -89,6 +89,7 @@ Name[x-test]=xxPlastikxx Name[zh_CN]=Plastik Name[zh_TW]=Plastik Comment=The classic theme known from KDE 3 +Comment[bs]=Klasična tema iz KDE 3 Comment[ca]=El tema clàssic conegut des del KDE 3 Comment[ca@valencia]=El tema clàssic conegut des del KDE 3 Comment[cs]=Klasický motiv známý z KDE 3 diff --git a/effects/maximize/package/metadata.desktop b/effects/maximize/package/metadata.desktop index 8a23249232..82fb1f339b 100644 --- a/effects/maximize/package/metadata.desktop +++ b/effects/maximize/package/metadata.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Comment=Animation for a window going to maximize/restore from maximize +Comment[bs]=Animacija za prozor koji ide u maksimiziranje/vraćanje iz maksimiziranja Comment[ca]=Animació per una finestra que es maximitza/restaura des de maximització Comment[ca@valencia]=Animació per una finestra que es maximitza/restaura des de maximització Comment[da]=Animation til et vindue der er ved at maksimere/gendanne fra maksimering @@ -39,6 +40,7 @@ Comment[zh_TW]=視窗最大化/回復時的動畫 Encoding=UTF-8 Icon=preferences-system-windows-effect-maximize Name=Maximize +Name[bs]=Maksimiziraj Name[ca]=Maximitza Name[ca@valencia]=Maximitza Name[cs]=Maximalizovat diff --git a/effects/mouseclick/mouseclick.desktop b/effects/mouseclick/mouseclick.desktop index 517d56c3b6..088eb8aff8 100644 --- a/effects/mouseclick/mouseclick.desktop +++ b/effects/mouseclick/mouseclick.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Name=Mouse Click Animation +Name[bs]=Animacija klika mišem Name[ca]=Animació de clic de ratolí Name[ca@valencia]=Animació de clic de ratolí Name[cs]=Animace kliknutí myši @@ -43,6 +44,7 @@ Name[zh_TW]=滑鼠點擊動畫 Icon=preferences-system-windows-effect-mouseclick Comment=Creates an animation whenever a mouse button is clicked. This is useful for screenrecordings/presentations. +Comment[bs]=Kreira animaciju kada se god protosne dugme miša. To je korisno zasnimanje ekrana/prezentacije. Comment[ca]=Crea una animació quan es fa clic amb un botó del ratolí. Això és útil per enregistrar la pantalla o en presentacions. Comment[ca@valencia]=Crea una animació quan es fa clic amb un botó del ratolí. Això és útil per enregistrar la pantalla o en presentacions. Comment[da]=Opretter en animation når der klikkes på en museknap. Dette er nyttigt til skærmoptagelser/præsentationer. diff --git a/effects/mouseclick/mouseclick_config.desktop b/effects/mouseclick/mouseclick_config.desktop index 3515d2e4c1..6a482daaa0 100644 --- a/effects/mouseclick/mouseclick_config.desktop +++ b/effects/mouseclick/mouseclick_config.desktop @@ -7,6 +7,7 @@ X-KDE-ParentComponents=kwin4_effect_mouseclick X-KDE-PluginKeyword=mouseclick Name=Mouse Click Animation +Name[bs]=Animacija klika mišem Name[ca]=Animació de clic de ratolí Name[ca@valencia]=Animació de clic de ratolí Name[cs]=Animace kliknutí myši From 2fc1ae684bc633b3e44d9beda84bc7877f1042c4 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sun, 14 Jul 2013 06:59:57 +0000 Subject: [PATCH 048/108] SVN_SILENT made messages (.desktop file) --- clients/aurorae/src/kwindecoration.desktop | 1 + clients/aurorae/themes/plastik/package/metadata.desktop | 1 + effects/maximize/package/metadata.desktop | 2 ++ effects/mouseclick/mouseclick.desktop | 2 ++ effects/mouseclick/mouseclick_config.desktop | 1 + 5 files changed, 7 insertions(+) diff --git a/clients/aurorae/src/kwindecoration.desktop b/clients/aurorae/src/kwindecoration.desktop index ae92d76073..aa2017c7b3 100644 --- a/clients/aurorae/src/kwindecoration.desktop +++ b/clients/aurorae/src/kwindecoration.desktop @@ -3,6 +3,7 @@ Type=ServiceType X-KDE-ServiceType=KWin/Decoration Comment=KWin Window Decoration +Comment[bs]=KWin Dekoracije prozora Comment[ca]=Decoració de finestres del KWin Comment[ca@valencia]=Decoració de finestres del KWin Comment[cs]=Dekorace oken KWin diff --git a/clients/aurorae/themes/plastik/package/metadata.desktop b/clients/aurorae/themes/plastik/package/metadata.desktop index 3026512036..26fa04729f 100644 --- a/clients/aurorae/themes/plastik/package/metadata.desktop +++ b/clients/aurorae/themes/plastik/package/metadata.desktop @@ -89,6 +89,7 @@ Name[x-test]=xxPlastikxx Name[zh_CN]=Plastik Name[zh_TW]=Plastik Comment=The classic theme known from KDE 3 +Comment[bs]=Klasična tema iz KDE 3 Comment[ca]=El tema clàssic conegut des del KDE 3 Comment[ca@valencia]=El tema clàssic conegut des del KDE 3 Comment[cs]=Klasický motiv známý z KDE 3 diff --git a/effects/maximize/package/metadata.desktop b/effects/maximize/package/metadata.desktop index 8a23249232..82fb1f339b 100644 --- a/effects/maximize/package/metadata.desktop +++ b/effects/maximize/package/metadata.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Comment=Animation for a window going to maximize/restore from maximize +Comment[bs]=Animacija za prozor koji ide u maksimiziranje/vraćanje iz maksimiziranja Comment[ca]=Animació per una finestra que es maximitza/restaura des de maximització Comment[ca@valencia]=Animació per una finestra que es maximitza/restaura des de maximització Comment[da]=Animation til et vindue der er ved at maksimere/gendanne fra maksimering @@ -39,6 +40,7 @@ Comment[zh_TW]=視窗最大化/回復時的動畫 Encoding=UTF-8 Icon=preferences-system-windows-effect-maximize Name=Maximize +Name[bs]=Maksimiziraj Name[ca]=Maximitza Name[ca@valencia]=Maximitza Name[cs]=Maximalizovat diff --git a/effects/mouseclick/mouseclick.desktop b/effects/mouseclick/mouseclick.desktop index 517d56c3b6..088eb8aff8 100644 --- a/effects/mouseclick/mouseclick.desktop +++ b/effects/mouseclick/mouseclick.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Name=Mouse Click Animation +Name[bs]=Animacija klika mišem Name[ca]=Animació de clic de ratolí Name[ca@valencia]=Animació de clic de ratolí Name[cs]=Animace kliknutí myši @@ -43,6 +44,7 @@ Name[zh_TW]=滑鼠點擊動畫 Icon=preferences-system-windows-effect-mouseclick Comment=Creates an animation whenever a mouse button is clicked. This is useful for screenrecordings/presentations. +Comment[bs]=Kreira animaciju kada se god protosne dugme miša. To je korisno zasnimanje ekrana/prezentacije. Comment[ca]=Crea una animació quan es fa clic amb un botó del ratolí. Això és útil per enregistrar la pantalla o en presentacions. Comment[ca@valencia]=Crea una animació quan es fa clic amb un botó del ratolí. Això és útil per enregistrar la pantalla o en presentacions. Comment[da]=Opretter en animation når der klikkes på en museknap. Dette er nyttigt til skærmoptagelser/præsentationer. diff --git a/effects/mouseclick/mouseclick_config.desktop b/effects/mouseclick/mouseclick_config.desktop index 3515d2e4c1..6a482daaa0 100644 --- a/effects/mouseclick/mouseclick_config.desktop +++ b/effects/mouseclick/mouseclick_config.desktop @@ -7,6 +7,7 @@ X-KDE-ParentComponents=kwin4_effect_mouseclick X-KDE-PluginKeyword=mouseclick Name=Mouse Click Animation +Name[bs]=Animacija klika mišem Name[ca]=Animació de clic de ratolí Name[ca@valencia]=Animació de clic de ratolí Name[cs]=Animace kliknutí myši From 4ab0a6a2231d541143fce933844cfa56a822cd05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Thu, 18 Jul 2013 11:03:23 +0200 Subject: [PATCH 049/108] Disable lanczos filter also for SandyBridge on Mesa 9.1 Debian gave me an update to 9.1 and I started feeling the pain... Mesa 9.2 works fine on the same hardware. REVIEW: 111558 --- lanczosfilter.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lanczosfilter.cpp b/lanczosfilter.cpp index 4917d592a9..8a20a47d17 100644 --- a/lanczosfilter.cpp +++ b/lanczosfilter.cpp @@ -77,8 +77,8 @@ void LanczosFilter::init() // The lanczos filter is reported to be broken with the Intel driver prior SandyBridge if (gl->driver() == Driver_Intel && gl->chipClass() < SandyBridge) return; - // Broken on IvyBridge with Mesa 9.1 - BUG 313613 - if (gl->driver() == Driver_Intel && gl->chipClass() == IvyBridge && gl->mesaVersion() >= kVersionNumber(9, 1) && gl->mesaVersion() < kVersionNumber(9, 2)) + // Broken on Intel chips with Mesa 9.1 - BUG 313613 + if (gl->driver() == Driver_Intel && gl->mesaVersion() >= kVersionNumber(9, 1) && gl->mesaVersion() < kVersionNumber(9, 2)) return; // also radeon before R600 has trouble if (gl->isRadeon() && gl->chipClass() < R600) From 13ad458ccac0555044ef1cfc149de2e3ad96c198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Fri, 19 Jul 2013 11:34:01 +0200 Subject: [PATCH 050/108] Use const_iterators for our Effect iterators We never modify the list, so we don't need the mutuable iterator. This ensures that the data doesn't get detached. --- effects.cpp | 44 ++++++++++++++++++++++---------------------- effects.h | 12 +++++++----- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/effects.cpp b/effects.cpp index a81dfa1e66..3577535bd1 100644 --- a/effects.cpp +++ b/effects.cpp @@ -223,7 +223,7 @@ EffectsHandlerImpl::EffectsHandlerImpl(Compositor *compositor, Scene *scene) dbus.registerObject("/Effects", this); dbus.registerService("org.kde.kwin.Effects"); // init is important, otherwise causes crashes when quads are build before the first painting pass start - m_currentBuildQuadsIterator = m_activeEffects.end(); + m_currentBuildQuadsIterator = m_activeEffects.constEnd(); Workspace *ws = Workspace::self(); VirtualDesktopManager *vds = VirtualDesktopManager::self(); @@ -358,7 +358,7 @@ void EffectsHandlerImpl::slotEffectsQueried() // the idea is that effects call this function again which calls the next one void EffectsHandlerImpl::prePaintScreen(ScreenPrePaintData& data, int time) { - if (m_currentPaintScreenIterator != m_activeEffects.end()) { + if (m_currentPaintScreenIterator != m_activeEffects.constEnd()) { (*m_currentPaintScreenIterator++)->prePaintScreen(data, time); --m_currentPaintScreenIterator; } @@ -367,7 +367,7 @@ void EffectsHandlerImpl::prePaintScreen(ScreenPrePaintData& data, int time) void EffectsHandlerImpl::paintScreen(int mask, QRegion region, ScreenPaintData& data) { - if (m_currentPaintScreenIterator != m_activeEffects.end()) { + if (m_currentPaintScreenIterator != m_activeEffects.constEnd()) { (*m_currentPaintScreenIterator++)->paintScreen(mask, region, data); --m_currentPaintScreenIterator; } else @@ -382,8 +382,8 @@ void EffectsHandlerImpl::paintDesktop(int desktop, int mask, QRegion region, Scr m_currentRenderedDesktop = desktop; m_desktopRendering = true; // save the paint screen iterator - QList::iterator savedIterator = m_currentPaintScreenIterator; - m_currentPaintScreenIterator = m_activeEffects.begin(); + EffectsIterator savedIterator = m_currentPaintScreenIterator; + m_currentPaintScreenIterator = m_activeEffects.constBegin(); effects->paintScreen(mask, region, data); // restore the saved iterator m_currentPaintScreenIterator = savedIterator; @@ -392,7 +392,7 @@ void EffectsHandlerImpl::paintDesktop(int desktop, int mask, QRegion region, Scr void EffectsHandlerImpl::postPaintScreen() { - if (m_currentPaintScreenIterator != m_activeEffects.end()) { + if (m_currentPaintScreenIterator != m_activeEffects.constEnd()) { (*m_currentPaintScreenIterator++)->postPaintScreen(); --m_currentPaintScreenIterator; } @@ -401,7 +401,7 @@ void EffectsHandlerImpl::postPaintScreen() void EffectsHandlerImpl::prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time) { - if (m_currentPaintWindowIterator != m_activeEffects.end()) { + if (m_currentPaintWindowIterator != m_activeEffects.constEnd()) { (*m_currentPaintWindowIterator++)->prePaintWindow(w, data, time); --m_currentPaintWindowIterator; } @@ -410,7 +410,7 @@ void EffectsHandlerImpl::prePaintWindow(EffectWindow* w, WindowPrePaintData& dat void EffectsHandlerImpl::paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data) { - if (m_currentPaintWindowIterator != m_activeEffects.end()) { + if (m_currentPaintWindowIterator != m_activeEffects.constEnd()) { (*m_currentPaintWindowIterator++)->paintWindow(w, mask, region, data); --m_currentPaintWindowIterator; } else @@ -419,7 +419,7 @@ void EffectsHandlerImpl::paintWindow(EffectWindow* w, int mask, QRegion region, void EffectsHandlerImpl::paintEffectFrame(EffectFrame* frame, QRegion region, double opacity, double frameOpacity) { - if (m_currentPaintEffectFrameIterator != m_activeEffects.end()) { + if (m_currentPaintEffectFrameIterator != m_activeEffects.constEnd()) { (*m_currentPaintEffectFrameIterator++)->paintEffectFrame(frame, region, opacity, frameOpacity); --m_currentPaintEffectFrameIterator; } else { @@ -430,7 +430,7 @@ void EffectsHandlerImpl::paintEffectFrame(EffectFrame* frame, QRegion region, do void EffectsHandlerImpl::postPaintWindow(EffectWindow* w) { - if (m_currentPaintWindowIterator != m_activeEffects.end()) { + if (m_currentPaintWindowIterator != m_activeEffects.constEnd()) { (*m_currentPaintWindowIterator++)->postPaintWindow(w); --m_currentPaintWindowIterator; } @@ -447,7 +447,7 @@ Effect *EffectsHandlerImpl::provides(Effect::Feature ef) void EffectsHandlerImpl::drawWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data) { - if (m_currentDrawWindowIterator != m_activeEffects.end()) { + if (m_currentDrawWindowIterator != m_activeEffects.constEnd()) { (*m_currentDrawWindowIterator++)->drawWindow(w, mask, region, data); --m_currentDrawWindowIterator; } else @@ -458,14 +458,14 @@ void EffectsHandlerImpl::buildQuads(EffectWindow* w, WindowQuadList& quadList) { static bool initIterator = true; if (initIterator) { - m_currentBuildQuadsIterator = m_activeEffects.begin(); + m_currentBuildQuadsIterator = m_activeEffects.constBegin(); initIterator = false; } - if (m_currentBuildQuadsIterator != m_activeEffects.end()) { + if (m_currentBuildQuadsIterator != m_activeEffects.constEnd()) { (*m_currentBuildQuadsIterator++)->buildQuads(w, quadList); --m_currentBuildQuadsIterator; } - if (m_currentBuildQuadsIterator == m_activeEffects.begin()) + if (m_currentBuildQuadsIterator == m_activeEffects.constBegin()) initIterator = true; } @@ -488,15 +488,15 @@ bool EffectsHandlerImpl::decorationSupportsBlurBehind() const void EffectsHandlerImpl::startPaint() { m_activeEffects.clear(); - for(QVector< KWin::EffectPair >::iterator it = loaded_effects.begin(); it != loaded_effects.end(); ++it) { + for(QVector< KWin::EffectPair >::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) { if (it->second->isActive()) { m_activeEffects << it->second; } } - m_currentDrawWindowIterator = m_activeEffects.begin(); - m_currentPaintWindowIterator = m_activeEffects.begin(); - m_currentPaintScreenIterator = m_activeEffects.begin(); - m_currentPaintEffectFrameIterator = m_activeEffects.begin(); + m_currentDrawWindowIterator = m_activeEffects.constBegin(); + m_currentPaintWindowIterator = m_activeEffects.constBegin(); + m_currentPaintScreenIterator = m_activeEffects.constBegin(); + m_currentPaintEffectFrameIterator = m_activeEffects.constBegin(); } void EffectsHandlerImpl::slotClientMaximized(KWin::Client *c, KDecorationDefines::MaximizeMode maxMode) @@ -752,7 +752,7 @@ void* EffectsHandlerImpl::getProxy(QString name) // All effects start with "kwin4_effect_", prepend it to the name name.prepend("kwin4_effect_"); - for (QVector< EffectPair >::iterator it = loaded_effects.begin(); it != loaded_effects.end(); ++it) + for (QVector< EffectPair >::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) if ((*it).first == name) return (*it).second->proxy(); @@ -1512,7 +1512,7 @@ void EffectsHandlerImpl::unloadEffect(const QString& name) void EffectsHandlerImpl::reconfigureEffect(const QString& name) { - for (QVector< EffectPair >::iterator it = loaded_effects.begin(); it != loaded_effects.end(); ++it) + for (QVector< EffectPair >::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) if ((*it).first == name) { (*it).second->reconfigure(Effect::ReconfigureAll); return; @@ -1531,7 +1531,7 @@ bool EffectsHandlerImpl::isEffectLoaded(const QString& name) const void EffectsHandlerImpl::reloadEffect(Effect *effect) { QString effectName; - for (QVector< EffectPair >::iterator it = loaded_effects.begin(); it != loaded_effects.end(); ++it) { + for (QVector< EffectPair >::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) { if ((*it).second == effect) { effectName = (*it).first; break; diff --git a/effects.h b/effects.h index b641bfbe7d..1850089499 100644 --- a/effects.h +++ b/effects.h @@ -254,11 +254,13 @@ private Q_SLOTS: private: QList< Effect* > m_activeEffects; - QList< Effect* >::iterator m_currentDrawWindowIterator; - QList< Effect* >::iterator m_currentPaintWindowIterator; - QList< Effect* >::iterator m_currentPaintEffectFrameIterator; - QList< Effect* >::iterator m_currentPaintScreenIterator; - QList< Effect* >::iterator m_currentBuildQuadsIterator; + typedef QList< Effect*> EffectsList; + typedef EffectsList::const_iterator EffectsIterator; + EffectsIterator m_currentDrawWindowIterator; + EffectsIterator m_currentPaintWindowIterator; + EffectsIterator m_currentPaintEffectFrameIterator; + EffectsIterator m_currentPaintScreenIterator; + EffectsIterator m_currentBuildQuadsIterator; typedef QHash< QByteArray, QList< Effect*> > PropertyEffectMap; PropertyEffectMap m_propertiesForEffects; QHash m_managedProperties; From 93e2ce4bfd099279d87cf7cfffca864a06099409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Fri, 19 Jul 2013 11:46:42 +0200 Subject: [PATCH 051/108] Use QVector instead of QList for the list of active effects We only append to the list, so the advantage of insertion into QList does not matter. Thanks to Milian Wolff to point this out in his Akademy talk [1] and for pointing me to Marc Mutz blog post [2] discussing this topic and recommending the usage of QVector over QList. [1] http://milianw.de/files/apps-on-speed-akademy2013/index.html [2] http://marcmutz.wordpress.com/effective-qt/containers/ REVIEW: 111597 --- effects.cpp | 2 ++ effects.h | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/effects.cpp b/effects.cpp index 3577535bd1..a4ad2010b5 100644 --- a/effects.cpp +++ b/effects.cpp @@ -488,6 +488,7 @@ bool EffectsHandlerImpl::decorationSupportsBlurBehind() const void EffectsHandlerImpl::startPaint() { m_activeEffects.clear(); + m_activeEffects.reserve(loaded_effects.count()); for(QVector< KWin::EffectPair >::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) { if (it->second->isActive()) { m_activeEffects << it->second; @@ -1552,6 +1553,7 @@ void EffectsHandlerImpl::effectsChanged() // kDebug(1212) << effect.first; loaded_effects.append(effect); } + m_activeEffects.reserve(loaded_effects.count()); } QStringList EffectsHandlerImpl::activeEffects() const diff --git a/effects.h b/effects.h index 1850089499..43f2c14642 100644 --- a/effects.h +++ b/effects.h @@ -253,9 +253,9 @@ private Q_SLOTS: void slotEffectsQueried(); private: - QList< Effect* > m_activeEffects; - typedef QList< Effect*> EffectsList; + typedef QVector< Effect*> EffectsList; typedef EffectsList::const_iterator EffectsIterator; + EffectsList m_activeEffects; EffectsIterator m_currentDrawWindowIterator; EffectsIterator m_currentPaintWindowIterator; EffectsIterator m_currentPaintEffectFrameIterator; From 02ed20662dd7904acfaebd8b7c4b777b7c3dfb07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Thu, 18 Jul 2013 15:59:37 +0200 Subject: [PATCH 052/108] prevent shrinking away titlebar f. bottom corners it's the same condition as shriking away from plain edges (one can resize exclusively in that direction as well) REVIEW: 111573 --- geometry.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/geometry.cpp b/geometry.cpp index 0176abd42a..d17513f30e 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -2874,6 +2874,7 @@ void Client::handleMoveResize(int x, int y, int x_root, int y_root) // we are trying to resize in from the side? bool breakLoop = false; switch(mode) { + case PositionBottomLeft: case PositionTopLeft: case PositionLeft: if (previousMoveResizeGeom.x() >= moveResizeGeom.x()) { @@ -2882,6 +2883,7 @@ void Client::handleMoveResize(int x, int y, int x_root, int y_root) } moveResizeGeom.setLeft(moveResizeGeom.x() - 1); break; + case PositionBottomRight: case PositionTopRight: case PositionRight: if (previousMoveResizeGeom.right() <= moveResizeGeom.right()) { From 0f57c9407a68ccfee6f9d23632f0aabbedf0b143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Thu, 18 Jul 2013 16:22:34 +0200 Subject: [PATCH 053/108] depend titlebar protection dir pref on cap dir when visualPixels is not 0, this means the titlebar does not touch an upper/lower border, thus moving that direction is ok and protection should be sought horizontally BUG: 322507 FIXED-IN: 4.11 REVIEW: 111573 --- geometry.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/geometry.cpp b/geometry.cpp index d17513f30e..9adcb98776 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -56,6 +56,10 @@ along with this program. If not, see . namespace KWin { +static inline int sign(int v) { + return (v > 0) - (v < 0); +} + //******************************************** // Workspace //******************************************** @@ -3009,13 +3013,16 @@ void Client::handleMoveResize(int x, int y, int x_root, int y_root) } } - // Move it (Favour vertically) - if (previousMoveResizeGeom.y() != moveResizeGeom.y()) - moveResizeGeom.translate(0, - previousMoveResizeGeom.y() > moveResizeGeom.y() ? 1 : -1); - else - moveResizeGeom.translate(previousMoveResizeGeom.x() > moveResizeGeom.x() ? 1 : -1, - 0); + int dx = sign(previousMoveResizeGeom.x() - moveResizeGeom.x()), + dy = sign(previousMoveResizeGeom.y() - moveResizeGeom.y()); + if (visiblePixels && dx) // means there's no full width cap -> favor horizontally + dy = 0; + else if (dy) + dx = 0; + + // Move it back + moveResizeGeom.translate(dx, dy); + if (moveResizeGeom == previousMoveResizeGeom) { break; // Prevent lockup } From 287acae1dbd7c52841c880f69bc2be50bef159e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Tue, 16 Jul 2013 20:58:15 +0200 Subject: [PATCH 054/108] handle closebutton arm state inside effect only the enabled/disabled change is a useless distraction implicitly fixes BUG: 321810 FIXED-IN: 4.11 REVIEW: 111538 --- effects/presentwindows/main.qml | 1 - effects/presentwindows/presentwindows.cpp | 13 ++----------- effects/presentwindows/presentwindows.h | 2 -- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/effects/presentwindows/main.qml b/effects/presentwindows/main.qml index e456a48a30..762d804306 100644 --- a/effects/presentwindows/main.qml +++ b/effects/presentwindows/main.qml @@ -24,7 +24,6 @@ Item { Plasma.Button { id: closeButton objectName: "closeButton" - enabled: armed width: 32 height: 32 iconSource: "window-close" diff --git a/effects/presentwindows/presentwindows.cpp b/effects/presentwindows/presentwindows.cpp index 413e3ab993..397bd61d38 100755 --- a/effects/presentwindows/presentwindows.cpp +++ b/effects/presentwindows/presentwindows.cpp @@ -1968,8 +1968,6 @@ CloseWindowView::CloseWindowView(QWidget *parent) kdeclarative.initialize(); kdeclarative.setupBindings(); - rootContext()->setContextProperty("armed", QVariant(false)); - setSource(QUrl(KStandardDirs::locate("data", QLatin1String("kwin/effects/presentwindows/main.qml")))); if (QObject *item = rootObject()->findChild("closeButton")) { connect(item, SIGNAL(clicked()), SIGNAL(close())); @@ -1978,15 +1976,14 @@ CloseWindowView::CloseWindowView(QWidget *parent) // setup the timer - attempt to prevent accidental clicks m_armTimer->setSingleShot(true); m_armTimer->setInterval(350); // 50ms until the window is elevated (seen!) and 300ms more to be "realized" by the user. - connect(m_armTimer, SIGNAL(timeout()), SLOT(arm())); } void CloseWindowView::windowInputMouseEvent(QMouseEvent *e) { - if (m_armTimer->isActive()) - return; if (e->type() == QEvent::MouseMove) { mouseMoveEvent(e); + } else if (m_armTimer->isActive()) { + return; } else if (e->type() == QEvent::MouseButtonPress) { mousePressEvent(e); } else if (e->type() == QEvent::MouseButtonDblClick) { @@ -1996,14 +1993,8 @@ void CloseWindowView::windowInputMouseEvent(QMouseEvent *e) } } -void CloseWindowView::arm() -{ - rootContext()->setContextProperty("armed", QVariant(true)); -} - void CloseWindowView::disarm() { - rootContext()->setContextProperty("armed", QVariant(false)); m_armTimer->start(); } diff --git a/effects/presentwindows/presentwindows.h b/effects/presentwindows/presentwindows.h index cdbc958dcd..3b97d195c4 100644 --- a/effects/presentwindows/presentwindows.h +++ b/effects/presentwindows/presentwindows.h @@ -39,8 +39,6 @@ public: explicit CloseWindowView(QWidget *parent = 0); void windowInputMouseEvent(QMouseEvent* e); void disarm(); -public slots: - void arm(); Q_SIGNALS: void close(); From b6c4f0a7fb9c4f30d9085cfbfe4869668903eda4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Tue, 16 Jul 2013 21:23:32 +0200 Subject: [PATCH 055/108] fake mouse move to unhover close window on hide BUG: 322260 FIXED-IN: 4.11 REVIEW: 111538 --- effects/presentwindows/presentwindows.cpp | 8 ++++++++ effects/presentwindows/presentwindows.h | 3 +++ 2 files changed, 11 insertions(+) diff --git a/effects/presentwindows/presentwindows.cpp b/effects/presentwindows/presentwindows.cpp index 397bd61d38..5ccdfe9ac4 100755 --- a/effects/presentwindows/presentwindows.cpp +++ b/effects/presentwindows/presentwindows.cpp @@ -1998,6 +1998,14 @@ void CloseWindowView::disarm() m_armTimer->start(); } +void CloseWindowView::hideEvent(QHideEvent *event) +{ + const QPoint globalPos = mapToGlobal(QPoint(-1,-1)); + QMouseEvent me(QEvent::MouseMove, QPoint(-1,-1), globalPos, Qt::NoButton, Qt::NoButton, Qt::NoModifier); + mouseMoveEvent(&me); + QDeclarativeView::hideEvent(event); +} + } // namespace #include "presentwindows.moc" diff --git a/effects/presentwindows/presentwindows.h b/effects/presentwindows/presentwindows.h index 3b97d195c4..3e77da1bcd 100644 --- a/effects/presentwindows/presentwindows.h +++ b/effects/presentwindows/presentwindows.h @@ -43,6 +43,9 @@ public: Q_SIGNALS: void close(); +protected: + void hideEvent(QHideEvent *event); + private: QTimer* m_armTimer; }; From 55daad4d6820950191ec7d30078edf9a0545ddec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 17 Jul 2013 16:39:58 +0200 Subject: [PATCH 056/108] sanitize screenedge activation timer logics The logics relied on a static timout to arm the timer: when last successfull activation had been longer ago than 250ms. We now cap the configured reactivation timeout at min 250m guessing that this was somehow supposed as well by this. BUG: 322057 FIXED-IN: 4.11 REVIEW: 111549 --- screenedge.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/screenedge.cpp b/screenedge.cpp index 0133983826..3d04f13d1a 100644 --- a/screenedge.cpp +++ b/screenedge.cpp @@ -47,8 +47,6 @@ along with this program. If not, see . namespace KWin { -// Reset timeout -static const int TRESHOLD_RESET = 250; // Mouse should not move more than this many pixels static const int DISTANCE_RESET = 30; @@ -133,7 +131,7 @@ void Edge::check(const QPoint &cursorPos, const QDateTime &triggerTime, bool for bool directActivate = forceNoPushBack || edges()->cursorPushBackDistance().isNull(); if (directActivate || canActivate(cursorPos, triggerTime)) { m_lastTrigger = triggerTime; - m_lastReset = triggerTime; + m_lastReset = QDateTime(); // invalidate handle(cursorPos); } else { pushCursorBack(cursorPos); @@ -143,7 +141,11 @@ void Edge::check(const QPoint &cursorPos, const QDateTime &triggerTime, bool for bool Edge::canActivate(const QPoint &cursorPos, const QDateTime &triggerTime) { - if (m_lastReset.msecsTo(triggerTime) > TRESHOLD_RESET) { + // we check whether either the timer has explicitly been invalidated (successfull trigger) or is + // bigger than the reactivation threshold (activation "aborted", usually due to moving away the cursor + // from the corner after successfull activation) + // either condition means that "this is the first event in a new attempt" + if (!m_lastReset.isValid() || m_lastReset.msecsTo(triggerTime) > edges()->reActivationThreshold()) { m_lastReset = triggerTime; return false; } From d9b567699c7ffa72425736840c7d6a965c9eebf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 17 Jul 2013 16:51:00 +0200 Subject: [PATCH 057/108] connect shortcut editor changed signal BUG: 322441 FIXED-IN: 4.11 REVIEW: 111550 --- effects/zoom/zoom_config.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/effects/zoom/zoom_config.cpp b/effects/zoom/zoom_config.cpp index 00f6c29902..53cda16f01 100644 --- a/effects/zoom/zoom_config.cpp +++ b/effects/zoom/zoom_config.cpp @@ -53,6 +53,8 @@ ZoomEffectConfig::ZoomEffectConfig(QWidget* parent, const QVariantList& args) : addConfig(ZoomConfig::self(), m_ui); + connect(m_ui->editor, SIGNAL(keyChange()), this, SLOT(changed())); + // Shortcut config. The shortcut belongs to the component "kwin"! KActionCollection *actionCollection = new KActionCollection(this, KComponentData("kwin")); actionCollection->setConfigGroup("Zoom"); From 8406aebda8cfdb5ab4e8ff698ada8e08869f9c16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 17 Jul 2013 21:23:24 +0200 Subject: [PATCH 058/108] trigger quick tiling on edges of maximize area screen area can be inacecssible due to panels BUG: 322493 FIXED-IN: 4.11 REVIEW: 111556 --- events.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/events.cpp b/events.cpp index 0c5d8fcdaa..3fa04f861e 100644 --- a/events.cpp +++ b/events.cpp @@ -1201,10 +1201,10 @@ void Client::checkQuickTilingMaximizationZones(int xroot, int yroot) QuickTileMode mode = QuickTileNone; for (int i=0; icount(); ++i) { - const QRect &area = screens()->geometry(i); - if (!area.contains(QPoint(xroot, yroot))) + if (!screens()->geometry(i).contains(QPoint(xroot, yroot))) continue; + QRect area = workspace()->clientArea(MaximizeArea, QPoint(xroot, yroot), desktop()); if (options->electricBorderTiling()) { if (xroot <= area.x() + 20) mode |= QuickTileLeft; From f97fa509ae8e52bba541ae5b52bd0b91cb79cdca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Thu, 18 Jul 2013 14:05:27 +0200 Subject: [PATCH 059/108] align initial slider and desscription BUG: 322522 FIXED-IN: 4.11 REVIEW: 111565 --- kcmkwin/kwinoptions/focus.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kcmkwin/kwinoptions/focus.ui b/kcmkwin/kwinoptions/focus.ui index 1616024a22..9c27eae79c 100644 --- a/kcmkwin/kwinoptions/focus.ui +++ b/kcmkwin/kwinoptions/focus.ui @@ -56,7 +56,7 @@ - 2 + 0 From 7f858da008def4a0178a5672c48902cc0160adae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 10 Jul 2013 20:48:11 +0200 Subject: [PATCH 060/108] ignore unredirection configuration on intel the only thing it does on these systems is cause users trouble because usually when there's a client where unredirection makes sense, that uses OpenGL - and then things break in the driver. CCBUG: 252817 REVIEW: 111476 --- eglonxbackend.cpp | 2 ++ glxbackend.cpp | 2 ++ options.cpp | 2 ++ 3 files changed, 6 insertions(+) diff --git a/eglonxbackend.cpp b/eglonxbackend.cpp index 331574a46a..cc5df0d2d7 100644 --- a/eglonxbackend.cpp +++ b/eglonxbackend.cpp @@ -72,6 +72,8 @@ void EglOnXBackend::init() } GLPlatform *glPlatform = GLPlatform::instance(); glPlatform->detect(EglPlatformInterface); + if (GLPlatform::instance()->driver() == Driver_Intel) + options->setUnredirectFullscreen(false); // bug #252817 glPlatform->printResults(); initGL(EglPlatformInterface); if (!hasGLExtension("GL_OES_EGL_image")) { diff --git a/glxbackend.cpp b/glxbackend.cpp index 6f1185feed..773bb91886 100644 --- a/glxbackend.cpp +++ b/glxbackend.cpp @@ -95,6 +95,8 @@ void GlxBackend::init() // Initialize OpenGL GLPlatform *glPlatform = GLPlatform::instance(); glPlatform->detect(GlxPlatformInterface); + if (GLPlatform::instance()->driver() == Driver_Intel) + options->setUnredirectFullscreen(false); // bug #252817 glPlatform->printResults(); initGL(GlxPlatformInterface); // Check whether certain features are supported diff --git a/options.cpp b/options.cpp index 03203ef291..cd3931cd8d 100644 --- a/options.cpp +++ b/options.cpp @@ -651,6 +651,8 @@ void Options::setHiddenPreviews(int hiddenPreviews) void Options::setUnredirectFullscreen(bool unredirectFullscreen) { + if (GLPlatform::instance()->driver() == Driver_Intel) + unredirectFullscreen = false; // bug #252817 if (m_unredirectFullscreen == unredirectFullscreen) { return; } From 674a1a051f8d69d94ec7521412751580f5597e8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Fri, 19 Jul 2013 14:19:27 +0200 Subject: [PATCH 061/108] fix logout effect shaderfile locations CCBUG: 322136 REVIEW: 111600 --- effects/logout/CMakeLists.txt | 13 ++++++++++--- effects/logout/data/{ => 1.10}/logout-blur.frag | 0 effects/logout/data/{ => 1.10}/vignetting.frag | 0 .../logout-blur.frag} | 0 .../vignetting.frag} | 0 effects/logout/logout.cpp | 17 +++++++++++------ effects/logout/logout.h | 1 + 7 files changed, 22 insertions(+), 9 deletions(-) rename effects/logout/data/{ => 1.10}/logout-blur.frag (100%) rename effects/logout/data/{ => 1.10}/vignetting.frag (100%) rename effects/logout/data/{logout-blur-140.frag => 1.40/logout-blur.frag} (100%) rename effects/logout/data/{vignetting-140.frag => 1.40/vignetting.frag} (100%) diff --git a/effects/logout/CMakeLists.txt b/effects/logout/CMakeLists.txt index c3316bc21c..aa37fd7b1d 100644 --- a/effects/logout/CMakeLists.txt +++ b/effects/logout/CMakeLists.txt @@ -15,6 +15,13 @@ install( FILES # Data files install( FILES - logout/data/vignetting.frag - logout/data/logout-blur.frag - DESTINATION ${DATA_INSTALL_DIR}/kwin ) + logout/data/1.10/vignetting.frag + logout/data/1.10/logout-blur.frag + DESTINATION ${DATA_INSTALL_DIR}/kwin/shaders/1.10 +) + +install( FILES + logout/data/1.40/vignetting.frag + logout/data/1.40/logout-blur.frag + DESTINATION ${DATA_INSTALL_DIR}/kwin/shaders/1.40 +) diff --git a/effects/logout/data/logout-blur.frag b/effects/logout/data/1.10/logout-blur.frag similarity index 100% rename from effects/logout/data/logout-blur.frag rename to effects/logout/data/1.10/logout-blur.frag diff --git a/effects/logout/data/vignetting.frag b/effects/logout/data/1.10/vignetting.frag similarity index 100% rename from effects/logout/data/vignetting.frag rename to effects/logout/data/1.10/vignetting.frag diff --git a/effects/logout/data/logout-blur-140.frag b/effects/logout/data/1.40/logout-blur.frag similarity index 100% rename from effects/logout/data/logout-blur-140.frag rename to effects/logout/data/1.40/logout-blur.frag diff --git a/effects/logout/data/vignetting-140.frag b/effects/logout/data/1.40/vignetting.frag similarity index 100% rename from effects/logout/data/vignetting-140.frag rename to effects/logout/data/1.40/vignetting.frag diff --git a/effects/logout/logout.cpp b/effects/logout/logout.cpp index 86ccc4e7ea..454bcf5a3e 100644 --- a/effects/logout/logout.cpp +++ b/effects/logout/logout.cpp @@ -50,6 +50,7 @@ LogoutEffect::LogoutEffect() , ignoredWindows() , m_vignettingShader(NULL) , m_blurShader(NULL) + , m_shadersDir("kwin/shaders/1.10/") { // Persistent effect logoutAtom = XInternAtom(display(), "_KDE_LOGGING_OUT", False); @@ -71,6 +72,14 @@ LogoutEffect::LogoutEffect() connect(effects, SIGNAL(windowClosed(KWin::EffectWindow*)), this, SLOT(slotWindowClosed(KWin::EffectWindow*))); connect(effects, SIGNAL(windowDeleted(KWin::EffectWindow*)), this, SLOT(slotWindowDeleted(KWin::EffectWindow*))); connect(effects, SIGNAL(propertyNotify(KWin::EffectWindow*,long)), this, SLOT(slotPropertyNotify(KWin::EffectWindow*,long))); + +#ifdef KWIN_HAVE_OPENGLES + const qint64 coreVersionNumber = kVersionNumber(3, 0); +#else + const qint64 coreVersionNumber = kVersionNumber(1, 40); +#endif + if (GLPlatform::instance()->glslVersion() >= coreVersionNumber) + m_shadersDir = "kwin/shaders/1.40/"; } LogoutEffect::~LogoutEffect() @@ -296,10 +305,8 @@ void LogoutEffect::renderVignetting() return; } if (!m_vignettingShader) { - const char *shader = GLPlatform::instance()->glslVersion() >= kVersionNumber(1, 40) ? - "kwin/vignetting-140.frag" : "kwin/vignetting.frag"; m_vignettingShader = ShaderManager::instance()->loadFragmentShader(KWin::ShaderManager::ColorShader, - KGlobal::dirs()->findResource("data", shader)); + KGlobal::dirs()->findResource("data", m_shadersDir + "vignetting.frag")); if (!m_vignettingShader->isValid()) { kDebug(1212) << "Vignetting Shader failed to load"; return; @@ -378,10 +385,8 @@ void LogoutEffect::renderBlurTexture() return; } if (!m_blurShader) { - const char *shader = GLPlatform::instance()->glslVersion() >= kVersionNumber(1, 40) ? - "kwin/logout-blur-140.frag" : "kwin/logout-blur.frag"; m_blurShader = ShaderManager::instance()->loadFragmentShader(KWin::ShaderManager::SimpleShader, - KGlobal::dirs()->findResource("data", shader)); + KGlobal::dirs()->findResource("data", m_shadersDir + "logout-blur.frag")); if (!m_blurShader->isValid()) { kDebug(1212) << "Logout blur shader failed to load"; } diff --git a/effects/logout/logout.h b/effects/logout/logout.h index 18fe279232..dee53bc992 100644 --- a/effects/logout/logout.h +++ b/effects/logout/logout.h @@ -82,6 +82,7 @@ private: QHash< EffectWindow*, double > windowsOpacities; GLShader *m_vignettingShader; GLShader *m_blurShader; + QString m_shadersDir; }; } // namespace From 04aa9e9531398a334ca808b9e57ae5ce9b09ca95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sun, 7 Jul 2013 13:57:00 +0200 Subject: [PATCH 062/108] rather omit lanczos than capping windows capping shadows is seen as bug (and is ugly and because of the non lanczos transition causes visual flicker) so if the window+shadows extends the buffer, lanczos is simply not possible. BUG: 314838 FIXED-IN: 4.11 REVIEW: 111425 --- lanczosfilter.cpp | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/lanczosfilter.cpp b/lanczosfilter.cpp index 8a20a47d17..4fa09e7dfc 100644 --- a/lanczosfilter.cpp +++ b/lanczosfilter.cpp @@ -184,28 +184,14 @@ void LanczosFilter::performPaint(EffectWindowImpl* w, int mask, QRegion region, init(); const QRect screenRect = Workspace::self()->clientArea(ScreenArea, w->screen(), w->desktop()); // window geometry may not be bigger than screen geometry to fit into the FBO - if (m_shader && w->width() <= screenRect.width() && w->height() <= screenRect.height()) { - double left = 0; - double top = 0; - double right = w->width(); - double bottom = w->height(); - foreach (const WindowQuad & quad, data.quads) { - // we need this loop to include the decoration padding - left = qMin(left, quad.left()); - top = qMin(top, quad.top()); - right = qMax(right, quad.right()); - bottom = qMax(bottom, quad.bottom()); - } - double width = right - left; - double height = bottom - top; - if (width > screenRect.width() || height > screenRect.height()) { - // window with padding does not fit into the framebuffer - // so cut of the shadow - left = 0; - top = 0; - width = w->width(); - height = w->height(); - } + QRect winGeo(w->expandedGeometry()); + if (m_shader && winGeo.width() <= screenRect.width() && winGeo.height() <= screenRect.height()) { + winGeo.translate(-w->geometry().topLeft()); + double left = winGeo.left(); + double top = winGeo.top(); + double width = winGeo.right() - left; + double height = winGeo.bottom() - top; + int tx = data.xTranslation() + w->x() + left * data.xScale(); int ty = data.yTranslation() + w->y() + top * data.yScale(); int tw = width * data.xScale(); From 52461e588543488fd1a8e5af4f9f11746045ab38 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 20 Jul 2013 06:40:25 +0000 Subject: [PATCH 063/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 ++ effects/screenedge/screenedgeeffect.desktop | 2 ++ effects/slideback/slideback.desktop | 1 + kcmkwin/kwinoptions/kwinactions.desktop | 1 + kwin.notifyrc | 2 ++ tabbox/kwindesktopswitcher.desktop | 1 + tabbox/qml/desktops/informative/metadata.desktop | 1 + tabbox/qml/desktops/previews/metadata.desktop | 2 ++ 8 files changed, 12 insertions(+) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index 6d503bed87..4d7a8c15ad 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Name=Kscreen +Name[bs]=KScreen Name[ca]=Kscreen Name[cs]=Kscreen Name[de]=Kscreen @@ -30,6 +31,7 @@ Name[zh_CN]=Kscreen Name[zh_TW]=Kscreen Icon=preferences-system-windows-effect-kscreen Comment=Helper Effect for KScreen +Comment[bs]=Pomoćni efekat za KScreen Comment[ca]=Efecte auxiliar pel KScreen Comment[cs]=Pomocný efekt pro KScreen Comment[de]=Hilfseffekt für KScreen diff --git a/effects/screenedge/screenedgeeffect.desktop b/effects/screenedge/screenedgeeffect.desktop index 491e3f9382..913bd32075 100644 --- a/effects/screenedge/screenedgeeffect.desktop +++ b/effects/screenedge/screenedgeeffect.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Name=Screen Edge +Name[bs]=Ivice ekrana Name[ca]=Vora de la pantalla Name[cs]=Hrana obrazovky Name[de]=Bildschirmkante @@ -35,6 +36,7 @@ Name[zh_CN]=屏幕边缘 Name[zh_TW]=螢幕邊緣 Icon=preferences-system-windows-effect-screenedge Comment=Highlights a screen edge when approaching +Comment[bs]=Označava ivicu ekrana pri približavanju Comment[ca]=Ressalta la vora de la pantalla en aproximar-se Comment[cs]=Zvýrazní hranu obrazovky při přiblížení k ní Comment[de]=Bildschirmkante bei Annäherung hervorheben diff --git a/effects/slideback/slideback.desktop b/effects/slideback/slideback.desktop index 65861f33a1..4da096d5eb 100644 --- a/effects/slideback/slideback.desktop +++ b/effects/slideback/slideback.desktop @@ -70,6 +70,7 @@ Name[zh_TW]=往回滑動 Type=Service Comment=Slide back windows when another window is raised +Comment[bs]=Kliza unazad prozore kada se drugi prozor oslobodi Comment[ca]=Llisca enrere les finestres quan s'eleva una altra finestra Comment[de]=Fenster nach hinten gleiten wenn ein anderes Fenster aktiviert wird. Comment[es]=Desliza las ventanas atrás cuando una ventana pasa a primer plano diff --git a/kcmkwin/kwinoptions/kwinactions.desktop b/kcmkwin/kwinoptions/kwinactions.desktop index f22638fe39..30ff851b1c 100644 --- a/kcmkwin/kwinoptions/kwinactions.desktop +++ b/kcmkwin/kwinoptions/kwinactions.desktop @@ -101,6 +101,7 @@ Name[zh_CN]=动作 Name[zh_TW]=動作 Comment=Configure mouse actions on windows +Comment[bs]=Podešavanje radnji miša pri akcijama nad prozorima Comment[ca]=Configura les accions de ratolí en les finestres Comment[cs]=Nastavení činností myši na oknech Comment[de]=Maus-Aktionen für Fenster einrichten diff --git a/kwin.notifyrc b/kwin.notifyrc index 671a91fdfb..471d55fef4 100644 --- a/kwin.notifyrc +++ b/kwin.notifyrc @@ -197,6 +197,7 @@ Action=Popup [Event/graphicsreset] Name=Graphics Reset +Name[bs]=Reset grafike Name[ca]=Reinici dels gràfics Name[cs]=Resetovat grafiku Name[es]=Reinicio gráfico @@ -225,6 +226,7 @@ Name[x-test]=xxGraphics Resetxx Name[zh_CN]=图形重置 Name[zh_TW]=圖形重置 Comment=A graphics reset event occurred +Comment[bs]=Grafički reset događaj se desio Comment[ca]=Ha ocorregut un esdeveniment de reinici dels gràfics Comment[es]=Ha ocurrido un evento de reinicio gráfico Comment[fi]=Sattui grafiikan nollaustapahtuma diff --git a/tabbox/kwindesktopswitcher.desktop b/tabbox/kwindesktopswitcher.desktop index 91b9572766..9f11e369d4 100644 --- a/tabbox/kwindesktopswitcher.desktop +++ b/tabbox/kwindesktopswitcher.desktop @@ -3,6 +3,7 @@ Type=ServiceType X-KDE-ServiceType=KWin/DesktopSwitcher Comment=KWin Desktop Switcher Layout +Comment[bs]=Izgled KWin prebacivača radnih površina Comment[ca]=Disposició del commutador d'escriptoris del KWin Comment[es]=Esquema del cambiador de escritorios de KWin Comment[fi]=KWinin työpöydänvalitsimen asettelu diff --git a/tabbox/qml/desktops/informative/metadata.desktop b/tabbox/qml/desktops/informative/metadata.desktop index c263607a6f..c393baf1b0 100644 --- a/tabbox/qml/desktops/informative/metadata.desktop +++ b/tabbox/qml/desktops/informative/metadata.desktop @@ -44,6 +44,7 @@ Name[x-test]=xxInformativexx Name[zh_CN]=信息 Name[zh_TW]=資訊提供 Comment=An informative desktop switcher layout +Comment[bs]=Izgled informativnog prebacivača radnih površina Comment[ca]=Una disposició informativa del commutador d'escriptoris Comment[de]=Ein ausführliches Fensterwechsler-Layout Comment[es]=Un esquema informativo del cambiador de escritorios diff --git a/tabbox/qml/desktops/previews/metadata.desktop b/tabbox/qml/desktops/previews/metadata.desktop index 2e51072084..dc329ebbf9 100644 --- a/tabbox/qml/desktops/previews/metadata.desktop +++ b/tabbox/qml/desktops/previews/metadata.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Name=Previews +Name[bs]=Pregledi Name[ca]=Vistes prèvies Name[cs]=Náhledy Name[de]=Vorschauen @@ -32,6 +33,7 @@ Name[x-test]=xxPreviewsxx Name[zh_CN]=预览 Name[zh_TW]=預覽 Comment=A desktop switcher layout with previews of the desktops +Comment[bs]=Raspored preklapanja radnih površina s pregledima radnih površina Comment[ca]=Una disposició del commutador d'escriptori amb vistes prèvies dels escriptoris Comment[de]=Ein Arbeitsflächenwechsler mit Vorschauen der Arbeitsflächen Comment[es]=Un esquema del cambiador de escritorios con vistas previas de los escritorios From 467b772a906922cf6f7a8d8af728087f38ad5ca5 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sun, 21 Jul 2013 04:08:51 +0000 Subject: [PATCH 064/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 -- effects/screenedge/screenedgeeffect.desktop | 2 -- effects/slideback/slideback.desktop | 1 - kcmkwin/kwinoptions/kwinactions.desktop | 1 - kwin.notifyrc | 2 -- tabbox/kwindesktopswitcher.desktop | 1 - tabbox/qml/desktops/informative/metadata.desktop | 1 - tabbox/qml/desktops/previews/metadata.desktop | 2 -- 8 files changed, 12 deletions(-) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index 4d7a8c15ad..6d503bed87 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -1,6 +1,5 @@ [Desktop Entry] Name=Kscreen -Name[bs]=KScreen Name[ca]=Kscreen Name[cs]=Kscreen Name[de]=Kscreen @@ -31,7 +30,6 @@ Name[zh_CN]=Kscreen Name[zh_TW]=Kscreen Icon=preferences-system-windows-effect-kscreen Comment=Helper Effect for KScreen -Comment[bs]=Pomoćni efekat za KScreen Comment[ca]=Efecte auxiliar pel KScreen Comment[cs]=Pomocný efekt pro KScreen Comment[de]=Hilfseffekt für KScreen diff --git a/effects/screenedge/screenedgeeffect.desktop b/effects/screenedge/screenedgeeffect.desktop index 913bd32075..491e3f9382 100644 --- a/effects/screenedge/screenedgeeffect.desktop +++ b/effects/screenedge/screenedgeeffect.desktop @@ -1,6 +1,5 @@ [Desktop Entry] Name=Screen Edge -Name[bs]=Ivice ekrana Name[ca]=Vora de la pantalla Name[cs]=Hrana obrazovky Name[de]=Bildschirmkante @@ -36,7 +35,6 @@ Name[zh_CN]=屏幕边缘 Name[zh_TW]=螢幕邊緣 Icon=preferences-system-windows-effect-screenedge Comment=Highlights a screen edge when approaching -Comment[bs]=Označava ivicu ekrana pri približavanju Comment[ca]=Ressalta la vora de la pantalla en aproximar-se Comment[cs]=Zvýrazní hranu obrazovky při přiblížení k ní Comment[de]=Bildschirmkante bei Annäherung hervorheben diff --git a/effects/slideback/slideback.desktop b/effects/slideback/slideback.desktop index 4da096d5eb..65861f33a1 100644 --- a/effects/slideback/slideback.desktop +++ b/effects/slideback/slideback.desktop @@ -70,7 +70,6 @@ Name[zh_TW]=往回滑動 Type=Service Comment=Slide back windows when another window is raised -Comment[bs]=Kliza unazad prozore kada se drugi prozor oslobodi Comment[ca]=Llisca enrere les finestres quan s'eleva una altra finestra Comment[de]=Fenster nach hinten gleiten wenn ein anderes Fenster aktiviert wird. Comment[es]=Desliza las ventanas atrás cuando una ventana pasa a primer plano diff --git a/kcmkwin/kwinoptions/kwinactions.desktop b/kcmkwin/kwinoptions/kwinactions.desktop index 30ff851b1c..f22638fe39 100644 --- a/kcmkwin/kwinoptions/kwinactions.desktop +++ b/kcmkwin/kwinoptions/kwinactions.desktop @@ -101,7 +101,6 @@ Name[zh_CN]=动作 Name[zh_TW]=動作 Comment=Configure mouse actions on windows -Comment[bs]=Podešavanje radnji miša pri akcijama nad prozorima Comment[ca]=Configura les accions de ratolí en les finestres Comment[cs]=Nastavení činností myši na oknech Comment[de]=Maus-Aktionen für Fenster einrichten diff --git a/kwin.notifyrc b/kwin.notifyrc index 471d55fef4..671a91fdfb 100644 --- a/kwin.notifyrc +++ b/kwin.notifyrc @@ -197,7 +197,6 @@ Action=Popup [Event/graphicsreset] Name=Graphics Reset -Name[bs]=Reset grafike Name[ca]=Reinici dels gràfics Name[cs]=Resetovat grafiku Name[es]=Reinicio gráfico @@ -226,7 +225,6 @@ Name[x-test]=xxGraphics Resetxx Name[zh_CN]=图形重置 Name[zh_TW]=圖形重置 Comment=A graphics reset event occurred -Comment[bs]=Grafički reset događaj se desio Comment[ca]=Ha ocorregut un esdeveniment de reinici dels gràfics Comment[es]=Ha ocurrido un evento de reinicio gráfico Comment[fi]=Sattui grafiikan nollaustapahtuma diff --git a/tabbox/kwindesktopswitcher.desktop b/tabbox/kwindesktopswitcher.desktop index 9f11e369d4..91b9572766 100644 --- a/tabbox/kwindesktopswitcher.desktop +++ b/tabbox/kwindesktopswitcher.desktop @@ -3,7 +3,6 @@ Type=ServiceType X-KDE-ServiceType=KWin/DesktopSwitcher Comment=KWin Desktop Switcher Layout -Comment[bs]=Izgled KWin prebacivača radnih površina Comment[ca]=Disposició del commutador d'escriptoris del KWin Comment[es]=Esquema del cambiador de escritorios de KWin Comment[fi]=KWinin työpöydänvalitsimen asettelu diff --git a/tabbox/qml/desktops/informative/metadata.desktop b/tabbox/qml/desktops/informative/metadata.desktop index c393baf1b0..c263607a6f 100644 --- a/tabbox/qml/desktops/informative/metadata.desktop +++ b/tabbox/qml/desktops/informative/metadata.desktop @@ -44,7 +44,6 @@ Name[x-test]=xxInformativexx Name[zh_CN]=信息 Name[zh_TW]=資訊提供 Comment=An informative desktop switcher layout -Comment[bs]=Izgled informativnog prebacivača radnih površina Comment[ca]=Una disposició informativa del commutador d'escriptoris Comment[de]=Ein ausführliches Fensterwechsler-Layout Comment[es]=Un esquema informativo del cambiador de escritorios diff --git a/tabbox/qml/desktops/previews/metadata.desktop b/tabbox/qml/desktops/previews/metadata.desktop index dc329ebbf9..2e51072084 100644 --- a/tabbox/qml/desktops/previews/metadata.desktop +++ b/tabbox/qml/desktops/previews/metadata.desktop @@ -1,6 +1,5 @@ [Desktop Entry] Name=Previews -Name[bs]=Pregledi Name[ca]=Vistes prèvies Name[cs]=Náhledy Name[de]=Vorschauen @@ -33,7 +32,6 @@ Name[x-test]=xxPreviewsxx Name[zh_CN]=预览 Name[zh_TW]=預覽 Comment=A desktop switcher layout with previews of the desktops -Comment[bs]=Raspored preklapanja radnih površina s pregledima radnih površina Comment[ca]=Una disposició del commutador d'escriptori amb vistes prèvies dels escriptoris Comment[de]=Ein Arbeitsflächenwechsler mit Vorschauen der Arbeitsflächen Comment[es]=Un esquema del cambiador de escritorios con vistas previas de los escritorios From 54ee2bf5649fbe3deefe4f90330f9ef131a03e5f Mon Sep 17 00:00:00 2001 From: Casian Andrei Date: Mon, 24 Jun 2013 23:41:00 +0300 Subject: [PATCH 065/108] Fix many color correction problems with OpenGL ES On GLES, check for OES_texture_3D extension for color correction Remove a block of ugly hack code that was supposedly needed to build with OpenGL ES. Convert the lookup texture data to uint8 on OpenGL ES before sending it via glTexImage3D, because uint16 is not supported. Check if the shaders have been reinitialized successfuly when trying to activate color correction, prevent black screens when there are issues with the shaders. BUG: 315419 REVIEW: 111225 --- libkwineffects/kwinglcolorcorrection.cpp | 54 +++++++++++++----------- libkwineffects/kwinglutils_funcs.cpp | 9 ++++ libkwineffects/kwinglutils_funcs.h | 6 +++ 3 files changed, 44 insertions(+), 25 deletions(-) diff --git a/libkwineffects/kwinglcolorcorrection.cpp b/libkwineffects/kwinglcolorcorrection.cpp index 6e4f778ffe..a389cc67ff 100644 --- a/libkwineffects/kwinglcolorcorrection.cpp +++ b/libkwineffects/kwinglcolorcorrection.cpp @@ -34,27 +34,6 @@ along with this program. If not, see . #include #include -#ifdef KWIN_HAVE_OPENGLES -#define CC_TEXTURE_INTERNAL_FORMAT GL_RGB - -/* - * A bit of ugliness to allow building with OpenGL ES < 3, without - * ifdef's everywhere in the code. These should not actually be used anywhere. - */ -#ifndef GL_TEXTURE_3D -#define GL_TEXTURE_3D 0x806F // From OES_texture_3D extension -#define GL_TEXTURE_WRAP_R 0x8072 // From OES_texture_3D extension -void glTexImage3D(GLenum, int, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *) -{ - Q_ASSERT(false); // Execution must not reach here -} -#endif // defined(GL_TEXTURE_3D) - -#else // KWIN_HAVE_OPENGLES -#define CC_TEXTURE_INTERNAL_FORMAT GL_RGB16 -#endif // KWIN_HAVE_OPENGLES - - namespace KWin { /* @@ -305,11 +284,14 @@ bool ColorCorrection::setEnabled(bool enabled) return false; } +#ifdef KWIN_HAVE_OPENGLES const GLPlatform *gl = GLPlatform::instance(); - if (enabled && gl->isGLES() && (gl->glVersion() >> 32) < 3) { - kError(1212) << "color correction is not supported with OpenGL ES < 3.0"; + if (enabled && gl->isGLES() && glTexImage3D == 0) { + kError(1212) << "color correction is not supported on OpenGL ES without OES_texture_3D"; + d->m_hasError = true; return false; } +#endif // KWIN_HAVE_OPENGLES if (enabled) { // Update all profiles and regions @@ -642,9 +624,22 @@ bool ColorCorrectionPrivate::setupCCTexture(GLuint texture, const Clut& clut) 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, CC_TEXTURE_INTERNAL_FORMAT, +#ifndef KWIN_HAVE_OPENGLES + glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB16, LUT_GRID_POINTS, LUT_GRID_POINTS, LUT_GRID_POINTS, 0, GL_RGB, GL_UNSIGNED_SHORT, clut.data()); +#else + const int textureDataSize = clut.size(); + QVector textureData(textureDataSize); + quint8 *pTextureData = textureData.data(); + const quint16 *pClutData = clut.data(); + for (int i = 0; i < textureDataSize; ++i) + *(pTextureData++) = *(pClutData++) >> 8; + + glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB, + LUT_GRID_POINTS, LUT_GRID_POINTS, LUT_GRID_POINTS, + 0, GL_RGB, GL_UNSIGNED_BYTE, textureData.data()); +#endif // KWIN_HAVE_OPENGLES return !checkGLError("setupCCTexture"); } @@ -667,7 +662,16 @@ void ColorCorrectionPrivate::colorServerUpdateSucceededSlot() // Reload all shaders ShaderManager::cleanup(); - ShaderManager::instance(); + if (!ShaderManager::instance()->isValid()) { + kError(1212) << "Shader reinitialization failed, possible compile problems with the shaders " + "altered for color-correction"; + m_hasError = true; + kDebug(1212) << "Color correction has been disabled due to shader issues"; + m_enabled = false; + GLShader::sColorCorrect = false; + ShaderManager::cleanup(); + ShaderManager::instance(); + } } emit q->changed(); diff --git a/libkwineffects/kwinglutils_funcs.cpp b/libkwineffects/kwinglutils_funcs.cpp index da9ec2ea8d..cb5391e34c 100644 --- a/libkwineffects/kwinglutils_funcs.cpp +++ b/libkwineffects/kwinglutils_funcs.cpp @@ -268,6 +268,9 @@ glMapBuffer_func glMapBuffer; glUnmapBuffer_func glUnmapBuffer; glGetBufferPointerv_func glGetBufferPointerv; +// GL_OES_texture_3D +glTexImage3DOES_func glTexImage3D; + // GL_EXT_map_buffer_range glMapBufferRange_func glMapBufferRange; glFlushMappedBufferRange_func glFlushMappedBufferRange; @@ -731,6 +734,12 @@ void glResolveFunctions(OpenGLPlatformInterface platformInterface) glGetBufferPointerv = NULL; } + if (hasGLExtension("GL_OES_texture_3D")) { + glTexImage3D = (glTexImage3DOES_func)eglGetProcAddress("glTexImage3DOES"); + } else { + glTexImage3D = NULL; + } + if (hasGLExtension("GL_EXT_map_buffer_range")) { // See http://www.khronos.org/registry/gles/extensions/EXT/EXT_map_buffer_range.txt glMapBufferRange = (glMapBufferRange_func) eglGetProcAddress("glMapBufferRangeEXT"); diff --git a/libkwineffects/kwinglutils_funcs.h b/libkwineffects/kwinglutils_funcs.h index 7e79144ae2..d2248e52c5 100644 --- a/libkwineffects/kwinglutils_funcs.h +++ b/libkwineffects/kwinglutils_funcs.h @@ -538,6 +538,8 @@ extern KWIN_EXPORT glCopyBufferSubData_func glCopyBufferSubData; #define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 #define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 #define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_TEXTURE_3D 0x806F +#define GL_TEXTURE_WRAP_R 0x8072 #endif namespace KWin @@ -570,6 +572,10 @@ extern KWIN_EXPORT glMapBuffer_func glMapBuffer; extern KWIN_EXPORT glUnmapBuffer_func glUnmapBuffer; extern KWIN_EXPORT glGetBufferPointerv_func glGetBufferPointerv; +// GL_OES_texture_3D +typedef GLvoid(*glTexImage3DOES_func)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid*); +extern KWIN_EXPORT glTexImage3DOES_func glTexImage3D; + // GL_EXT_map_buffer_range typedef GLvoid *(*glMapBufferRange_func)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); typedef void (*glFlushMappedBufferRange_func)(GLenum target, GLintptr offset, GLsizeiptr length); From 25c88fca9818d85e9707a1484bf5e6eefcf4ff88 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Wed, 24 Jul 2013 04:07:39 +0000 Subject: [PATCH 066/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 ++ kwin.notifyrc | 2 ++ 2 files changed, 4 insertions(+) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index 6d503bed87..63c116fce4 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -6,6 +6,7 @@ Name[de]=Kscreen Name[el]=Kscreen Name[es]=Kscreen Name[fi]=KScreen +Name[fr]=KScreen Name[gl]=KScreen Name[hu]=Kscreen Name[ia]=Kscreen @@ -35,6 +36,7 @@ Comment[cs]=Pomocný efekt pro KScreen Comment[de]=Hilfseffekt für KScreen Comment[es]=Efecto auxiliar para KScreen Comment[fi]=Avustajatehoste KScreenille +Comment[fr]=Effet d'assistance pour KScreen Comment[gl]=Efecto auxiliar para KScreen. Comment[hu]=Segédeffektus a KScreenhez Comment[ia]=Effecto de adjutante pro KScreen diff --git a/kwin.notifyrc b/kwin.notifyrc index 671a91fdfb..4cacee1457 100644 --- a/kwin.notifyrc +++ b/kwin.notifyrc @@ -201,6 +201,7 @@ Name[ca]=Reinici dels gràfics Name[cs]=Resetovat grafiku Name[es]=Reinicio gráfico Name[fi]=Grafiikan nollaus +Name[fr]=Réinitialisation graphique Name[gl]=Reinicio dos gráficos Name[ia]=Reinitia Graphic Name[it]=Azzeramento grafica @@ -228,6 +229,7 @@ Comment=A graphics reset event occurred Comment[ca]=Ha ocorregut un esdeveniment de reinici dels gràfics Comment[es]=Ha ocurrido un evento de reinicio gráfico Comment[fi]=Sattui grafiikan nollaustapahtuma +Comment[fr]=Un évènement de réinitialisation graphique est intervenu Comment[gl]=Aconteceu un reinicio de gráficos Comment[ia]=Il necessita un evento de reinitiar le graphic Comment[it]=Si è verificato un evento di azzeramento della grafica From f433daf0cb3a8e8cf8563bfbde7f7c6ea47a4184 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Wed, 24 Jul 2013 06:42:52 +0000 Subject: [PATCH 067/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 ++ kwin.notifyrc | 2 ++ 2 files changed, 4 insertions(+) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index 4d7a8c15ad..2a63eda885 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -7,6 +7,7 @@ Name[de]=Kscreen Name[el]=Kscreen Name[es]=Kscreen Name[fi]=KScreen +Name[fr]=KScreen Name[gl]=KScreen Name[hu]=Kscreen Name[ia]=Kscreen @@ -37,6 +38,7 @@ Comment[cs]=Pomocný efekt pro KScreen Comment[de]=Hilfseffekt für KScreen Comment[es]=Efecto auxiliar para KScreen Comment[fi]=Avustajatehoste KScreenille +Comment[fr]=Effet d'assistance pour KScreen Comment[gl]=Efecto auxiliar para KScreen. Comment[hu]=Segédeffektus a KScreenhez Comment[ia]=Effecto de adjutante pro KScreen diff --git a/kwin.notifyrc b/kwin.notifyrc index 471d55fef4..b7b9fe5296 100644 --- a/kwin.notifyrc +++ b/kwin.notifyrc @@ -202,6 +202,7 @@ Name[ca]=Reinici dels gràfics Name[cs]=Resetovat grafiku Name[es]=Reinicio gráfico Name[fi]=Grafiikan nollaus +Name[fr]=Réinitialisation graphique Name[gl]=Reinicio dos gráficos Name[ia]=Reinitia Graphic Name[it]=Azzeramento grafica @@ -230,6 +231,7 @@ Comment[bs]=Grafički reset događaj se desio Comment[ca]=Ha ocorregut un esdeveniment de reinici dels gràfics Comment[es]=Ha ocurrido un evento de reinicio gráfico Comment[fi]=Sattui grafiikan nollaustapahtuma +Comment[fr]=Un évènement de réinitialisation graphique est intervenu Comment[gl]=Aconteceu un reinicio de gráficos Comment[ia]=Il necessita un evento de reinitiar le graphic Comment[it]=Si è verificato un evento di azzeramento della grafica From 2a98e58d5e6a8a68dc0a754ec3195c5b3f7424f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 24 Jul 2013 15:11:09 +0200 Subject: [PATCH 068/108] remove mouse polling from cube effect entirely superfluous and causes laggy interaction BUG: 308439 FIXED-IN: 4.11 REVIEW: 111669 --- effects/cube/cube.cpp | 54 ++++++++++++++++--------------------------- effects/cube/cube.h | 3 --- 2 files changed, 20 insertions(+), 37 deletions(-) diff --git a/effects/cube/cube.cpp b/effects/cube/cube.cpp index ce6587c6a5..5e4a8421b7 100644 --- a/effects/cube/cube.cpp +++ b/effects/cube/cube.cpp @@ -52,7 +52,6 @@ KWIN_EFFECT_SUPPORTED(cube, CubeEffect::supported()) CubeEffect::CubeEffect() : activated(false) - , mousePolling(false) , cube_painting(false) , keyboard_grab(false) , schedule_close(false) @@ -122,8 +121,6 @@ CubeEffect::CubeEffect() connect(effects, SIGNAL(tabBoxAdded(int)), this, SLOT(slotTabBoxAdded(int))); connect(effects, SIGNAL(tabBoxClosed()), this, SLOT(slotTabBoxClosed())); connect(effects, SIGNAL(tabBoxUpdated()), this, SLOT(slotTabBoxUpdated())); - connect(effects, SIGNAL(mouseChanged(QPoint,QPoint,Qt::MouseButtons,Qt::MouseButtons,Qt::KeyboardModifiers,Qt::KeyboardModifiers)), - this, SLOT(slotMouseChanged(QPoint,QPoint,Qt::MouseButtons,Qt::MouseButtons,Qt::KeyboardModifiers,Qt::KeyboardModifiers))); reconfigure(ReconfigureAll); } @@ -1900,10 +1897,6 @@ void CubeEffect::setActive(bool active) connect(watcher, SIGNAL(finished()), SLOT(slotWallPaperLoaded())); watcher->setFuture(QtConcurrent::run(this, &CubeEffect::loadWallPaper, wallpaperPath)); } - if (!mousePolling) { - effects->startMousePolling(); - mousePolling = true; - } activated = true; activeScreen = effects->activeScreen(); keyboard_grab = effects->grabKeyboard(this); @@ -1935,18 +1928,13 @@ void CubeEffect::setActive(bool active) m_rotationMatrix.setToIdentity(); effects->addRepaintFull(); } else { - if (mousePolling) { - effects->stopMousePolling(); - mousePolling = false; - } schedule_close = true; // we have to add a repaint, to start the deactivating effects->addRepaintFull(); } } -void CubeEffect::slotMouseChanged(const QPoint& pos, const QPoint& oldpos, Qt::MouseButtons buttons, - Qt::MouseButtons oldbuttons, Qt::KeyboardModifiers, Qt::KeyboardModifiers) +void CubeEffect::windowInputMouseEvent(QEvent* e) { if (!activated) return; @@ -1954,8 +1942,15 @@ void CubeEffect::slotMouseChanged(const QPoint& pos, const QPoint& oldpos, Qt::M return; if (stop) return; - QRect rect = effects->clientArea(FullArea, activeScreen, effects->currentDesktop()); - if (buttons.testFlag(Qt::LeftButton)) { + + QMouseEvent *mouse = dynamic_cast< QMouseEvent* >(e); + if (!mouse) + return; + + static QPoint oldpos; + if (mouse->type() == QEvent::MouseMove && mouse->buttons().testFlag(Qt::LeftButton)) { + const QPoint pos = mouse->pos(); + QRect rect = effects->clientArea(FullArea, activeScreen, effects->currentDesktop()); bool repaint = false; // vertical movement only if there is not a rotation if (!verticalRotating) { @@ -1991,25 +1986,15 @@ void CubeEffect::slotMouseChanged(const QPoint& pos, const QPoint& oldpos, Qt::M rotateCube(); effects->addRepaintFull(); } + oldpos = pos; } - if (!oldbuttons.testFlag(Qt::LeftButton) && buttons.testFlag(Qt::LeftButton)) { - effects->defineCursor(Qt::ClosedHandCursor); - } - if (oldbuttons.testFlag(Qt::LeftButton) && !buttons.testFlag(Qt::LeftButton)) { - effects->defineCursor(Qt::OpenHandCursor); - if (closeOnMouseRelease) - setActive(false); - } - if (oldbuttons.testFlag(Qt::RightButton) && !buttons.testFlag(Qt::RightButton)) { - // end effect on right mouse button - setActive(false); - } -} -void CubeEffect::windowInputMouseEvent(QEvent* e) -{ - QMouseEvent *mouse = dynamic_cast< QMouseEvent* >(e); - if (mouse && mouse->type() == QEvent::MouseButtonRelease) { + else if (mouse->type() == QEvent::MouseButtonPress && mouse->button() == Qt::LeftButton) { + oldpos = mouse->pos(); + } + + else if (mouse->type() == QEvent::MouseButtonRelease) { + effects->defineCursor(Qt::OpenHandCursor); if (mouse->button() == Qt::XButton1) { if (!rotating && !start) { rotating = true; @@ -2026,8 +2011,7 @@ void CubeEffect::windowInputMouseEvent(QEvent* e) } } effects->addRepaintFull(); - } - if (mouse->button() == Qt::XButton2) { + } else if (mouse->button() == Qt::XButton2) { if (!rotating && !start) { rotating = true; if (invertMouse) @@ -2043,6 +2027,8 @@ void CubeEffect::windowInputMouseEvent(QEvent* e) } } effects->addRepaintFull(); + } else if (mouse->button() == Qt::RightButton || (mouse->button() == Qt::LeftButton && closeOnMouseRelease)) { + setActive(false); } } } diff --git a/effects/cube/cube.h b/effects/cube/cube.h index 2de304570a..4fb15adfd2 100644 --- a/effects/cube/cube.h +++ b/effects/cube/cube.h @@ -137,8 +137,6 @@ private slots: void slotTabBoxAdded(int mode); void slotTabBoxUpdated(); void slotTabBoxClosed(); - void slotMouseChanged(const QPoint& pos, const QPoint& oldpos, Qt::MouseButtons buttons, - Qt::MouseButtons oldbuttons, Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers); void slotCubeCapLoaded(); void slotWallPaperLoaded(); private: @@ -171,7 +169,6 @@ private: QImage loadCubeCap(const QString &capPath); QImage loadWallPaper(const QString &file); bool activated; - bool mousePolling; bool cube_painting; bool keyboard_grab; bool schedule_close; From 10e7ef75ba4cc345110efc8c35dbab199771068d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sun, 21 Jul 2013 14:50:30 +0200 Subject: [PATCH 069/108] harmonize combo/lineedit enabling connections BUG: 322650 FIXED-IN: 4.11 REVIEW: 111627 --- kcmkwin/kwinrules/ruleswidget.cpp | 1 - kcmkwin/kwinrules/ruleswidgetbase.ui | 40 +++++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/kcmkwin/kwinrules/ruleswidget.cpp b/kcmkwin/kwinrules/ruleswidget.cpp index 3a59df84e7..b30db54038 100644 --- a/kcmkwin/kwinrules/ruleswidget.cpp +++ b/kcmkwin/kwinrules/ruleswidget.cpp @@ -123,7 +123,6 @@ RulesWidget::RulesWidget(QWidget* parent) SETUP(disableglobalshortcuts, force); SETUP(blockcompositing, force); - connect (machine_match, SIGNAL(currentIndexChanged(int)), SLOT(machineMatchChanged())); connect (shortcut_edit, SIGNAL(clicked()), SLOT(shortcutEditClicked())); edit_reg_wmclass->hide(); diff --git a/kcmkwin/kwinrules/ruleswidgetbase.ui b/kcmkwin/kwinrules/ruleswidgetbase.ui index 70f568753b..a2faad9814 100644 --- a/kcmkwin/kwinrules/ruleswidgetbase.ui +++ b/kcmkwin/kwinrules/ruleswidgetbase.ui @@ -6,7 +6,7 @@ 0 0 - 630 + 486 588 @@ -2597,7 +2597,7 @@ but this may sometimes fail or superact. detectClicked() - 321 + 285 124 @@ -2613,7 +2613,7 @@ but this may sometimes fail or superact. wmclassMatchChanged() - 301 + 297 196 @@ -2629,7 +2629,7 @@ but this may sometimes fail or superact. roleMatchChanged() - 301 + 297 254 @@ -2638,5 +2638,37 @@ but this may sometimes fail or superact. + + title_match + activated(int) + KWin::RulesWidgetBase + titleMatchChanged() + + + 231 + 482 + + + 242 + 293 + + + + + machine_match + activated(int) + KWin::RulesWidgetBase + machineMatchChanged() + + + 194 + 509 + + + 242 + 293 + + + From 3aa2e22b325d30bb011fd1b02a41b8296418aa07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Tue, 23 Jul 2013 22:35:35 +0200 Subject: [PATCH 070/108] fix passive startup feedback BUG: 260727 FIXED-IN: 4.11 REVIEW: 111634 --- effects/startupfeedback/startupfeedback.cpp | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/effects/startupfeedback/startupfeedback.cpp b/effects/startupfeedback/startupfeedback.cpp index e0dc7c4445..ca1964d763 100644 --- a/effects/startupfeedback/startupfeedback.cpp +++ b/effects/startupfeedback/startupfeedback.cpp @@ -164,10 +164,6 @@ void StartupFeedbackEffect::prePaintScreen(ScreenPrePaintData& data, int time) default: break; // nothing } - data.paint.unite(m_dirtyRect); - m_dirtyRect = QRect(); - m_currentGeometry = feedbackRect(); - data.paint.unite(m_currentGeometry); } effects->prePaintScreen(data, time); } @@ -243,18 +239,9 @@ void StartupFeedbackEffect::paintScreen(int mask, QRegion region, ScreenPaintDat void StartupFeedbackEffect::postPaintScreen() { if (m_active) { - switch(m_type) { - case BouncingFeedback: // fall through - case BlinkingFeedback: - // repaint the icon - m_dirtyRect = m_currentGeometry; - effects->addRepaint(m_dirtyRect); - break; - case PassiveFeedback: // fall through - default: - // no need to repaint - no change - break; - } + m_dirtyRect = m_currentGeometry; // ensure the now dirty region is cleaned on the next pass + if (m_type == BlinkingFeedback || m_type == BouncingFeedback) + effects->addRepaint(m_dirtyRect); // we also have to trigger a repaint } effects->postPaintScreen(); } @@ -324,7 +311,7 @@ void StartupFeedbackEffect::start(const QString& icon) iconPixmap = SmallIcon("system-run"); prepareTextures(iconPixmap); m_dirtyRect = m_currentGeometry = feedbackRect(); - effects->addRepaintFull(); + effects->addRepaint(m_dirtyRect); } void StartupFeedbackEffect::stop() From 87a756910071cacdbbf6002dac41d7fca4fbe6ff Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 27 Jul 2013 04:01:18 +0000 Subject: [PATCH 071/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 ++ effects/screenedge/screenedgeeffect.desktop | 2 ++ effects/slideback/slideback.desktop | 1 + kcmkwin/kwinoptions/kwinactions.desktop | 1 + kwin.notifyrc | 2 ++ tabbox/kwindesktopswitcher.desktop | 1 + tabbox/qml/desktops/informative/metadata.desktop | 1 + tabbox/qml/desktops/previews/metadata.desktop | 2 ++ 8 files changed, 12 insertions(+) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index 63c116fce4..2a63eda885 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Name=Kscreen +Name[bs]=KScreen Name[ca]=Kscreen Name[cs]=Kscreen Name[de]=Kscreen @@ -31,6 +32,7 @@ Name[zh_CN]=Kscreen Name[zh_TW]=Kscreen Icon=preferences-system-windows-effect-kscreen Comment=Helper Effect for KScreen +Comment[bs]=Pomoćni efekat za KScreen Comment[ca]=Efecte auxiliar pel KScreen Comment[cs]=Pomocný efekt pro KScreen Comment[de]=Hilfseffekt für KScreen diff --git a/effects/screenedge/screenedgeeffect.desktop b/effects/screenedge/screenedgeeffect.desktop index 491e3f9382..913bd32075 100644 --- a/effects/screenedge/screenedgeeffect.desktop +++ b/effects/screenedge/screenedgeeffect.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Name=Screen Edge +Name[bs]=Ivice ekrana Name[ca]=Vora de la pantalla Name[cs]=Hrana obrazovky Name[de]=Bildschirmkante @@ -35,6 +36,7 @@ Name[zh_CN]=屏幕边缘 Name[zh_TW]=螢幕邊緣 Icon=preferences-system-windows-effect-screenedge Comment=Highlights a screen edge when approaching +Comment[bs]=Označava ivicu ekrana pri približavanju Comment[ca]=Ressalta la vora de la pantalla en aproximar-se Comment[cs]=Zvýrazní hranu obrazovky při přiblížení k ní Comment[de]=Bildschirmkante bei Annäherung hervorheben diff --git a/effects/slideback/slideback.desktop b/effects/slideback/slideback.desktop index 65861f33a1..4da096d5eb 100644 --- a/effects/slideback/slideback.desktop +++ b/effects/slideback/slideback.desktop @@ -70,6 +70,7 @@ Name[zh_TW]=往回滑動 Type=Service Comment=Slide back windows when another window is raised +Comment[bs]=Kliza unazad prozore kada se drugi prozor oslobodi Comment[ca]=Llisca enrere les finestres quan s'eleva una altra finestra Comment[de]=Fenster nach hinten gleiten wenn ein anderes Fenster aktiviert wird. Comment[es]=Desliza las ventanas atrás cuando una ventana pasa a primer plano diff --git a/kcmkwin/kwinoptions/kwinactions.desktop b/kcmkwin/kwinoptions/kwinactions.desktop index f22638fe39..30ff851b1c 100644 --- a/kcmkwin/kwinoptions/kwinactions.desktop +++ b/kcmkwin/kwinoptions/kwinactions.desktop @@ -101,6 +101,7 @@ Name[zh_CN]=动作 Name[zh_TW]=動作 Comment=Configure mouse actions on windows +Comment[bs]=Podešavanje radnji miša pri akcijama nad prozorima Comment[ca]=Configura les accions de ratolí en les finestres Comment[cs]=Nastavení činností myši na oknech Comment[de]=Maus-Aktionen für Fenster einrichten diff --git a/kwin.notifyrc b/kwin.notifyrc index 4cacee1457..b7b9fe5296 100644 --- a/kwin.notifyrc +++ b/kwin.notifyrc @@ -197,6 +197,7 @@ Action=Popup [Event/graphicsreset] Name=Graphics Reset +Name[bs]=Reset grafike Name[ca]=Reinici dels gràfics Name[cs]=Resetovat grafiku Name[es]=Reinicio gráfico @@ -226,6 +227,7 @@ Name[x-test]=xxGraphics Resetxx Name[zh_CN]=图形重置 Name[zh_TW]=圖形重置 Comment=A graphics reset event occurred +Comment[bs]=Grafički reset događaj se desio Comment[ca]=Ha ocorregut un esdeveniment de reinici dels gràfics Comment[es]=Ha ocurrido un evento de reinicio gráfico Comment[fi]=Sattui grafiikan nollaustapahtuma diff --git a/tabbox/kwindesktopswitcher.desktop b/tabbox/kwindesktopswitcher.desktop index 91b9572766..9f11e369d4 100644 --- a/tabbox/kwindesktopswitcher.desktop +++ b/tabbox/kwindesktopswitcher.desktop @@ -3,6 +3,7 @@ Type=ServiceType X-KDE-ServiceType=KWin/DesktopSwitcher Comment=KWin Desktop Switcher Layout +Comment[bs]=Izgled KWin prebacivača radnih površina Comment[ca]=Disposició del commutador d'escriptoris del KWin Comment[es]=Esquema del cambiador de escritorios de KWin Comment[fi]=KWinin työpöydänvalitsimen asettelu diff --git a/tabbox/qml/desktops/informative/metadata.desktop b/tabbox/qml/desktops/informative/metadata.desktop index c263607a6f..c393baf1b0 100644 --- a/tabbox/qml/desktops/informative/metadata.desktop +++ b/tabbox/qml/desktops/informative/metadata.desktop @@ -44,6 +44,7 @@ Name[x-test]=xxInformativexx Name[zh_CN]=信息 Name[zh_TW]=資訊提供 Comment=An informative desktop switcher layout +Comment[bs]=Izgled informativnog prebacivača radnih površina Comment[ca]=Una disposició informativa del commutador d'escriptoris Comment[de]=Ein ausführliches Fensterwechsler-Layout Comment[es]=Un esquema informativo del cambiador de escritorios diff --git a/tabbox/qml/desktops/previews/metadata.desktop b/tabbox/qml/desktops/previews/metadata.desktop index 2e51072084..dc329ebbf9 100644 --- a/tabbox/qml/desktops/previews/metadata.desktop +++ b/tabbox/qml/desktops/previews/metadata.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Name=Previews +Name[bs]=Pregledi Name[ca]=Vistes prèvies Name[cs]=Náhledy Name[de]=Vorschauen @@ -32,6 +33,7 @@ Name[x-test]=xxPreviewsxx Name[zh_CN]=预览 Name[zh_TW]=預覽 Comment=A desktop switcher layout with previews of the desktops +Comment[bs]=Raspored preklapanja radnih površina s pregledima radnih površina Comment[ca]=Una disposició del commutador d'escriptori amb vistes prèvies dels escriptoris Comment[de]=Ein Arbeitsflächenwechsler mit Vorschauen der Arbeitsflächen Comment[es]=Un esquema del cambiador de escritorios con vistas previas de los escritorios From 4d24fe8b30f5fce6fe377e1efb8ffab942530ffb Mon Sep 17 00:00:00 2001 From: Casian Andrei Date: Mon, 24 Jun 2013 23:41:00 +0300 Subject: [PATCH 072/108] Fix many color correction problems with OpenGL ES On GLES, check for OES_texture_3D extension for color correction Remove a block of ugly hack code that was supposedly needed to build with OpenGL ES. Convert the lookup texture data to uint8 on OpenGL ES before sending it via glTexImage3D, because uint16 is not supported. Check if the shaders have been reinitialized successfuly when trying to activate color correction, prevent black screens when there are issues with the shaders. BUG: 315419 REVIEW: 111225 (cherry picked from commit 68c68ee3c2b54f968c4d8275f1e8a2e0ccc90dd7) --- libkwineffects/kwinglcolorcorrection.cpp | 54 +++++++++++++----------- libkwineffects/kwinglutils_funcs.cpp | 9 ++++ libkwineffects/kwinglutils_funcs.h | 6 +++ 3 files changed, 44 insertions(+), 25 deletions(-) diff --git a/libkwineffects/kwinglcolorcorrection.cpp b/libkwineffects/kwinglcolorcorrection.cpp index 6e4f778ffe..a389cc67ff 100644 --- a/libkwineffects/kwinglcolorcorrection.cpp +++ b/libkwineffects/kwinglcolorcorrection.cpp @@ -34,27 +34,6 @@ along with this program. If not, see . #include #include -#ifdef KWIN_HAVE_OPENGLES -#define CC_TEXTURE_INTERNAL_FORMAT GL_RGB - -/* - * A bit of ugliness to allow building with OpenGL ES < 3, without - * ifdef's everywhere in the code. These should not actually be used anywhere. - */ -#ifndef GL_TEXTURE_3D -#define GL_TEXTURE_3D 0x806F // From OES_texture_3D extension -#define GL_TEXTURE_WRAP_R 0x8072 // From OES_texture_3D extension -void glTexImage3D(GLenum, int, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *) -{ - Q_ASSERT(false); // Execution must not reach here -} -#endif // defined(GL_TEXTURE_3D) - -#else // KWIN_HAVE_OPENGLES -#define CC_TEXTURE_INTERNAL_FORMAT GL_RGB16 -#endif // KWIN_HAVE_OPENGLES - - namespace KWin { /* @@ -305,11 +284,14 @@ bool ColorCorrection::setEnabled(bool enabled) return false; } +#ifdef KWIN_HAVE_OPENGLES const GLPlatform *gl = GLPlatform::instance(); - if (enabled && gl->isGLES() && (gl->glVersion() >> 32) < 3) { - kError(1212) << "color correction is not supported with OpenGL ES < 3.0"; + if (enabled && gl->isGLES() && glTexImage3D == 0) { + kError(1212) << "color correction is not supported on OpenGL ES without OES_texture_3D"; + d->m_hasError = true; return false; } +#endif // KWIN_HAVE_OPENGLES if (enabled) { // Update all profiles and regions @@ -642,9 +624,22 @@ bool ColorCorrectionPrivate::setupCCTexture(GLuint texture, const Clut& clut) 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, CC_TEXTURE_INTERNAL_FORMAT, +#ifndef KWIN_HAVE_OPENGLES + glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB16, LUT_GRID_POINTS, LUT_GRID_POINTS, LUT_GRID_POINTS, 0, GL_RGB, GL_UNSIGNED_SHORT, clut.data()); +#else + const int textureDataSize = clut.size(); + QVector textureData(textureDataSize); + quint8 *pTextureData = textureData.data(); + const quint16 *pClutData = clut.data(); + for (int i = 0; i < textureDataSize; ++i) + *(pTextureData++) = *(pClutData++) >> 8; + + glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB, + LUT_GRID_POINTS, LUT_GRID_POINTS, LUT_GRID_POINTS, + 0, GL_RGB, GL_UNSIGNED_BYTE, textureData.data()); +#endif // KWIN_HAVE_OPENGLES return !checkGLError("setupCCTexture"); } @@ -667,7 +662,16 @@ void ColorCorrectionPrivate::colorServerUpdateSucceededSlot() // Reload all shaders ShaderManager::cleanup(); - ShaderManager::instance(); + if (!ShaderManager::instance()->isValid()) { + kError(1212) << "Shader reinitialization failed, possible compile problems with the shaders " + "altered for color-correction"; + m_hasError = true; + kDebug(1212) << "Color correction has been disabled due to shader issues"; + m_enabled = false; + GLShader::sColorCorrect = false; + ShaderManager::cleanup(); + ShaderManager::instance(); + } } emit q->changed(); diff --git a/libkwineffects/kwinglutils_funcs.cpp b/libkwineffects/kwinglutils_funcs.cpp index da9ec2ea8d..cb5391e34c 100644 --- a/libkwineffects/kwinglutils_funcs.cpp +++ b/libkwineffects/kwinglutils_funcs.cpp @@ -268,6 +268,9 @@ glMapBuffer_func glMapBuffer; glUnmapBuffer_func glUnmapBuffer; glGetBufferPointerv_func glGetBufferPointerv; +// GL_OES_texture_3D +glTexImage3DOES_func glTexImage3D; + // GL_EXT_map_buffer_range glMapBufferRange_func glMapBufferRange; glFlushMappedBufferRange_func glFlushMappedBufferRange; @@ -731,6 +734,12 @@ void glResolveFunctions(OpenGLPlatformInterface platformInterface) glGetBufferPointerv = NULL; } + if (hasGLExtension("GL_OES_texture_3D")) { + glTexImage3D = (glTexImage3DOES_func)eglGetProcAddress("glTexImage3DOES"); + } else { + glTexImage3D = NULL; + } + if (hasGLExtension("GL_EXT_map_buffer_range")) { // See http://www.khronos.org/registry/gles/extensions/EXT/EXT_map_buffer_range.txt glMapBufferRange = (glMapBufferRange_func) eglGetProcAddress("glMapBufferRangeEXT"); diff --git a/libkwineffects/kwinglutils_funcs.h b/libkwineffects/kwinglutils_funcs.h index 7e79144ae2..d2248e52c5 100644 --- a/libkwineffects/kwinglutils_funcs.h +++ b/libkwineffects/kwinglutils_funcs.h @@ -538,6 +538,8 @@ extern KWIN_EXPORT glCopyBufferSubData_func glCopyBufferSubData; #define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 #define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 #define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_TEXTURE_3D 0x806F +#define GL_TEXTURE_WRAP_R 0x8072 #endif namespace KWin @@ -570,6 +572,10 @@ extern KWIN_EXPORT glMapBuffer_func glMapBuffer; extern KWIN_EXPORT glUnmapBuffer_func glUnmapBuffer; extern KWIN_EXPORT glGetBufferPointerv_func glGetBufferPointerv; +// GL_OES_texture_3D +typedef GLvoid(*glTexImage3DOES_func)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid*); +extern KWIN_EXPORT glTexImage3DOES_func glTexImage3D; + // GL_EXT_map_buffer_range typedef GLvoid *(*glMapBufferRange_func)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); typedef void (*glFlushMappedBufferRange_func)(GLenum target, GLintptr offset, GLsizeiptr length); From 68bf8072b2100c5106b1df9a02ed6ea0ba70aac2 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Tue, 30 Jul 2013 04:11:51 +0000 Subject: [PATCH 073/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 ++ effects/mouseclick/mouseclick.desktop | 2 +- effects/screenedge/screenedgeeffect.desktop | 2 ++ effects/slideback/slideback.desktop | 1 + kcmkwin/kwinoptions/kwinactions.desktop | 1 + kwin.notifyrc | 6 ++++-- tabbox/kwindesktopswitcher.desktop | 1 + tabbox/qml/desktops/informative/metadata.desktop | 1 + tabbox/qml/desktops/previews/metadata.desktop | 2 ++ 9 files changed, 15 insertions(+), 3 deletions(-) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index 2a63eda885..36483a91d0 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -3,6 +3,7 @@ Name=Kscreen Name[bs]=KScreen Name[ca]=Kscreen Name[cs]=Kscreen +Name[da]=KScreen Name[de]=Kscreen Name[el]=Kscreen Name[es]=Kscreen @@ -35,6 +36,7 @@ Comment=Helper Effect for KScreen Comment[bs]=Pomoćni efekat za KScreen Comment[ca]=Efecte auxiliar pel KScreen Comment[cs]=Pomocný efekt pro KScreen +Comment[da]=Hjælpeeffekt til KScreen Comment[de]=Hilfseffekt für KScreen Comment[es]=Efecto auxiliar para KScreen Comment[fi]=Avustajatehoste KScreenille diff --git a/effects/mouseclick/mouseclick.desktop b/effects/mouseclick/mouseclick.desktop index 088eb8aff8..cce2fb0952 100644 --- a/effects/mouseclick/mouseclick.desktop +++ b/effects/mouseclick/mouseclick.desktop @@ -59,7 +59,7 @@ Comment[hu]=Animációt hoz létre, amikor az egérgombbal kattintanak. Ez haszn Comment[ia]=Crea un animation quando un button de mus es pressate. Isto es util pro registrationes de schermo/presentationes Comment[it]=Crea un'animazione ogni volta che viene premuto un pulsante del mouse. Utile per registrazioni dello schermo o presentazioni. Comment[kk]=Тышқанның батырмасын түрткенде анимацияны жасайды.Экраннан демонстацияны түсіргнде/презентацияны жасағанда ыңғайлы. -Comment[ko]=마우스 단추를 눌렀을 때 애니메이션을 표시합니다. 화면 녹화/프리젠테이션에서 유용합니다. +Comment[ko]=마우스 단추를 눌렀을 때 애니메이션을 표시합니다. 화면 녹화/프레젠테이션에서 유용합니다. Comment[lt]=Kuria animaciją kai pelės mygtukas paspaudžiamas. Tai naudojama ekrano įrašymams / pristatymams. Comment[mr]=जेव्हा माऊस बटन क्लिक केले जाईल तेव्हा ऍनीमेशन करा. स्क्रीन रेकोर्डींग व प्रेझेंटेशनच्या वेळी हे उपयोगी आहे. Comment[nb]=Lager en animasjon hver gang en museknapp trykkes. Dette er nyttig for skjermopptak/presentasjoner. diff --git a/effects/screenedge/screenedgeeffect.desktop b/effects/screenedge/screenedgeeffect.desktop index 913bd32075..fa732f0298 100644 --- a/effects/screenedge/screenedgeeffect.desktop +++ b/effects/screenedge/screenedgeeffect.desktop @@ -3,6 +3,7 @@ Name=Screen Edge Name[bs]=Ivice ekrana Name[ca]=Vora de la pantalla Name[cs]=Hrana obrazovky +Name[da]=Skærmkant Name[de]=Bildschirmkante Name[el]=Άκρο οθόνης Name[es]=Borde de la pantalla @@ -39,6 +40,7 @@ Comment=Highlights a screen edge when approaching Comment[bs]=Označava ivicu ekrana pri približavanju Comment[ca]=Ressalta la vora de la pantalla en aproximar-se Comment[cs]=Zvýrazní hranu obrazovky při přiblížení k ní +Comment[da]=Fremhæver en skærmkant når den nærmer sig Comment[de]=Bildschirmkante bei Annäherung hervorheben Comment[el]=Εμφανίζει τονισμένο το άκρο της οθόνης όταν το πλησιάζετε Comment[es]=Resalta el borde de la pantalla al aproximarse a él diff --git a/effects/slideback/slideback.desktop b/effects/slideback/slideback.desktop index 4da096d5eb..b1fbe41e59 100644 --- a/effects/slideback/slideback.desktop +++ b/effects/slideback/slideback.desktop @@ -72,6 +72,7 @@ Type=Service Comment=Slide back windows when another window is raised Comment[bs]=Kliza unazad prozore kada se drugi prozor oslobodi Comment[ca]=Llisca enrere les finestres quan s'eleva una altra finestra +Comment[da]=Glid vinduer tilbage når et andet vinduet hæves Comment[de]=Fenster nach hinten gleiten wenn ein anderes Fenster aktiviert wird. Comment[es]=Desliza las ventanas atrás cuando una ventana pasa a primer plano Comment[fi]=Ikkunaa nostettaessa liu’uttaa muut ikkunat sen taakse diff --git a/kcmkwin/kwinoptions/kwinactions.desktop b/kcmkwin/kwinoptions/kwinactions.desktop index 30ff851b1c..e96a83130a 100644 --- a/kcmkwin/kwinoptions/kwinactions.desktop +++ b/kcmkwin/kwinoptions/kwinactions.desktop @@ -104,6 +104,7 @@ Comment=Configure mouse actions on windows Comment[bs]=Podešavanje radnji miša pri akcijama nad prozorima Comment[ca]=Configura les accions de ratolí en les finestres Comment[cs]=Nastavení činností myši na oknech +Comment[da]=Indstilling af musehandlinger på vinduer Comment[de]=Maus-Aktionen für Fenster einrichten Comment[es]=Configurar las acciones del ratón sobre las ventanas Comment[fi]=Ikkunoiden hiiritoimintojen asetukset diff --git a/kwin.notifyrc b/kwin.notifyrc index b7b9fe5296..0682c6f05c 100644 --- a/kwin.notifyrc +++ b/kwin.notifyrc @@ -117,7 +117,7 @@ Name[ro]=Compoziționarea a fost suspendată Name[ru]=Графические эффекты были отключены Name[si]=රචනය අත්හිටුවිය Name[sk]=Kompozícia bola pozastavená -Name[sl]=Skladnja 3D je bila začasno zaustavljena +Name[sl]=Skladnja 3D je bila prestavljena v pripravljenost Name[sr]=Слагање је суспендовано Name[sr@ijekavian]=Слагање је суспендовано Name[sr@ijekavianlatin]=Slaganje je suspendovano @@ -179,7 +179,7 @@ Comment[ro]=Altă aplicație a cerut suspendarea compoziționării. Comment[ru]=Одно из приложений отключило графические эффекты Comment[si]=වෙනත් යෙදුමක් මගින් රචනය අත්හිටුවීමට ඉල්ලා ඇත. Comment[sk]=Iná aplikácia si vyžiadala pozastavenie kompozície. -Comment[sl]=Drug program je zahteval začasno zaustavitev skladnje 3D. +Comment[sl]=Drug program je zahteval prestavitev skladnje 3D v pripravljenost. Comment[sr]=Други програм је затражио да се слагање суспендује. Comment[sr@ijekavian]=Други програм је затражио да се слагање суспендује. Comment[sr@ijekavianlatin]=Drugi program je zatražio da se slaganje suspenduje. @@ -200,6 +200,7 @@ Name=Graphics Reset Name[bs]=Reset grafike Name[ca]=Reinici dels gràfics Name[cs]=Resetovat grafiku +Name[da]=Grafiknulstilling Name[es]=Reinicio gráfico Name[fi]=Grafiikan nollaus Name[fr]=Réinitialisation graphique @@ -229,6 +230,7 @@ Name[zh_TW]=圖形重置 Comment=A graphics reset event occurred Comment[bs]=Grafički reset događaj se desio Comment[ca]=Ha ocorregut un esdeveniment de reinici dels gràfics +Comment[da]=En grafiknulstillingshændelse fandt sted Comment[es]=Ha ocurrido un evento de reinicio gráfico Comment[fi]=Sattui grafiikan nollaustapahtuma Comment[fr]=Un évènement de réinitialisation graphique est intervenu diff --git a/tabbox/kwindesktopswitcher.desktop b/tabbox/kwindesktopswitcher.desktop index 9f11e369d4..de5b7ceba2 100644 --- a/tabbox/kwindesktopswitcher.desktop +++ b/tabbox/kwindesktopswitcher.desktop @@ -5,6 +5,7 @@ X-KDE-ServiceType=KWin/DesktopSwitcher Comment=KWin Desktop Switcher Layout Comment[bs]=Izgled KWin prebacivača radnih površina Comment[ca]=Disposició del commutador d'escriptoris del KWin +Comment[da]=Layout til KWins skrivebordsskifter Comment[es]=Esquema del cambiador de escritorios de KWin Comment[fi]=KWinin työpöydänvalitsimen asettelu Comment[fr]=Une disposition du sélecteur de bureaux KWin diff --git a/tabbox/qml/desktops/informative/metadata.desktop b/tabbox/qml/desktops/informative/metadata.desktop index c393baf1b0..e78dbfb165 100644 --- a/tabbox/qml/desktops/informative/metadata.desktop +++ b/tabbox/qml/desktops/informative/metadata.desktop @@ -46,6 +46,7 @@ Name[zh_TW]=資訊提供 Comment=An informative desktop switcher layout Comment[bs]=Izgled informativnog prebacivača radnih površina Comment[ca]=Una disposició informativa del commutador d'escriptoris +Comment[da]=Et informativt layout til skrivebordskift Comment[de]=Ein ausführliches Fensterwechsler-Layout Comment[es]=Un esquema informativo del cambiador de escritorios Comment[fi]=Informatiivinen työpöydänvalitsimen asettelu diff --git a/tabbox/qml/desktops/previews/metadata.desktop b/tabbox/qml/desktops/previews/metadata.desktop index dc329ebbf9..43ec3ded8c 100644 --- a/tabbox/qml/desktops/previews/metadata.desktop +++ b/tabbox/qml/desktops/previews/metadata.desktop @@ -3,6 +3,7 @@ Name=Previews Name[bs]=Pregledi Name[ca]=Vistes prèvies Name[cs]=Náhledy +Name[da]=Forhåndsvisninger Name[de]=Vorschauen Name[es]=Vistas previas Name[fi]=Esikatselut @@ -35,6 +36,7 @@ Name[zh_TW]=預覽 Comment=A desktop switcher layout with previews of the desktops Comment[bs]=Raspored preklapanja radnih površina s pregledima radnih površina Comment[ca]=Una disposició del commutador d'escriptori amb vistes prèvies dels escriptoris +Comment[da]=Et layout til skrivebordsskift med forhåndsvisning af skrivebordene Comment[de]=Ein Arbeitsflächenwechsler mit Vorschauen der Arbeitsflächen Comment[es]=Un esquema del cambiador de escritorios con vistas previas de los escritorios Comment[fi]=Työpöydänvalitsimen asettelu, jossa on esikatselut työpöydistä From 8cae78b2d880fe76d0229eae0d814401c374773b Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Tue, 30 Jul 2013 07:20:00 +0000 Subject: [PATCH 074/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 ++ effects/mouseclick/mouseclick.desktop | 2 +- effects/screenedge/screenedgeeffect.desktop | 2 ++ effects/slideback/slideback.desktop | 1 + kcmkwin/kwinoptions/kwinactions.desktop | 1 + kwin.notifyrc | 6 ++++-- tabbox/kwindesktopswitcher.desktop | 1 + tabbox/qml/desktops/informative/metadata.desktop | 1 + tabbox/qml/desktops/previews/metadata.desktop | 2 ++ 9 files changed, 15 insertions(+), 3 deletions(-) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index 2a63eda885..36483a91d0 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -3,6 +3,7 @@ Name=Kscreen Name[bs]=KScreen Name[ca]=Kscreen Name[cs]=Kscreen +Name[da]=KScreen Name[de]=Kscreen Name[el]=Kscreen Name[es]=Kscreen @@ -35,6 +36,7 @@ Comment=Helper Effect for KScreen Comment[bs]=Pomoćni efekat za KScreen Comment[ca]=Efecte auxiliar pel KScreen Comment[cs]=Pomocný efekt pro KScreen +Comment[da]=Hjælpeeffekt til KScreen Comment[de]=Hilfseffekt für KScreen Comment[es]=Efecto auxiliar para KScreen Comment[fi]=Avustajatehoste KScreenille diff --git a/effects/mouseclick/mouseclick.desktop b/effects/mouseclick/mouseclick.desktop index 088eb8aff8..cce2fb0952 100644 --- a/effects/mouseclick/mouseclick.desktop +++ b/effects/mouseclick/mouseclick.desktop @@ -59,7 +59,7 @@ Comment[hu]=Animációt hoz létre, amikor az egérgombbal kattintanak. Ez haszn Comment[ia]=Crea un animation quando un button de mus es pressate. Isto es util pro registrationes de schermo/presentationes Comment[it]=Crea un'animazione ogni volta che viene premuto un pulsante del mouse. Utile per registrazioni dello schermo o presentazioni. Comment[kk]=Тышқанның батырмасын түрткенде анимацияны жасайды.Экраннан демонстацияны түсіргнде/презентацияны жасағанда ыңғайлы. -Comment[ko]=마우스 단추를 눌렀을 때 애니메이션을 표시합니다. 화면 녹화/프리젠테이션에서 유용합니다. +Comment[ko]=마우스 단추를 눌렀을 때 애니메이션을 표시합니다. 화면 녹화/프레젠테이션에서 유용합니다. Comment[lt]=Kuria animaciją kai pelės mygtukas paspaudžiamas. Tai naudojama ekrano įrašymams / pristatymams. Comment[mr]=जेव्हा माऊस बटन क्लिक केले जाईल तेव्हा ऍनीमेशन करा. स्क्रीन रेकोर्डींग व प्रेझेंटेशनच्या वेळी हे उपयोगी आहे. Comment[nb]=Lager en animasjon hver gang en museknapp trykkes. Dette er nyttig for skjermopptak/presentasjoner. diff --git a/effects/screenedge/screenedgeeffect.desktop b/effects/screenedge/screenedgeeffect.desktop index 913bd32075..fa732f0298 100644 --- a/effects/screenedge/screenedgeeffect.desktop +++ b/effects/screenedge/screenedgeeffect.desktop @@ -3,6 +3,7 @@ Name=Screen Edge Name[bs]=Ivice ekrana Name[ca]=Vora de la pantalla Name[cs]=Hrana obrazovky +Name[da]=Skærmkant Name[de]=Bildschirmkante Name[el]=Άκρο οθόνης Name[es]=Borde de la pantalla @@ -39,6 +40,7 @@ Comment=Highlights a screen edge when approaching Comment[bs]=Označava ivicu ekrana pri približavanju Comment[ca]=Ressalta la vora de la pantalla en aproximar-se Comment[cs]=Zvýrazní hranu obrazovky při přiblížení k ní +Comment[da]=Fremhæver en skærmkant når den nærmer sig Comment[de]=Bildschirmkante bei Annäherung hervorheben Comment[el]=Εμφανίζει τονισμένο το άκρο της οθόνης όταν το πλησιάζετε Comment[es]=Resalta el borde de la pantalla al aproximarse a él diff --git a/effects/slideback/slideback.desktop b/effects/slideback/slideback.desktop index 4da096d5eb..b1fbe41e59 100644 --- a/effects/slideback/slideback.desktop +++ b/effects/slideback/slideback.desktop @@ -72,6 +72,7 @@ Type=Service Comment=Slide back windows when another window is raised Comment[bs]=Kliza unazad prozore kada se drugi prozor oslobodi Comment[ca]=Llisca enrere les finestres quan s'eleva una altra finestra +Comment[da]=Glid vinduer tilbage når et andet vinduet hæves Comment[de]=Fenster nach hinten gleiten wenn ein anderes Fenster aktiviert wird. Comment[es]=Desliza las ventanas atrás cuando una ventana pasa a primer plano Comment[fi]=Ikkunaa nostettaessa liu’uttaa muut ikkunat sen taakse diff --git a/kcmkwin/kwinoptions/kwinactions.desktop b/kcmkwin/kwinoptions/kwinactions.desktop index 30ff851b1c..e96a83130a 100644 --- a/kcmkwin/kwinoptions/kwinactions.desktop +++ b/kcmkwin/kwinoptions/kwinactions.desktop @@ -104,6 +104,7 @@ Comment=Configure mouse actions on windows Comment[bs]=Podešavanje radnji miša pri akcijama nad prozorima Comment[ca]=Configura les accions de ratolí en les finestres Comment[cs]=Nastavení činností myši na oknech +Comment[da]=Indstilling af musehandlinger på vinduer Comment[de]=Maus-Aktionen für Fenster einrichten Comment[es]=Configurar las acciones del ratón sobre las ventanas Comment[fi]=Ikkunoiden hiiritoimintojen asetukset diff --git a/kwin.notifyrc b/kwin.notifyrc index b7b9fe5296..0682c6f05c 100644 --- a/kwin.notifyrc +++ b/kwin.notifyrc @@ -117,7 +117,7 @@ Name[ro]=Compoziționarea a fost suspendată Name[ru]=Графические эффекты были отключены Name[si]=රචනය අත්හිටුවිය Name[sk]=Kompozícia bola pozastavená -Name[sl]=Skladnja 3D je bila začasno zaustavljena +Name[sl]=Skladnja 3D je bila prestavljena v pripravljenost Name[sr]=Слагање је суспендовано Name[sr@ijekavian]=Слагање је суспендовано Name[sr@ijekavianlatin]=Slaganje je suspendovano @@ -179,7 +179,7 @@ Comment[ro]=Altă aplicație a cerut suspendarea compoziționării. Comment[ru]=Одно из приложений отключило графические эффекты Comment[si]=වෙනත් යෙදුමක් මගින් රචනය අත්හිටුවීමට ඉල්ලා ඇත. Comment[sk]=Iná aplikácia si vyžiadala pozastavenie kompozície. -Comment[sl]=Drug program je zahteval začasno zaustavitev skladnje 3D. +Comment[sl]=Drug program je zahteval prestavitev skladnje 3D v pripravljenost. Comment[sr]=Други програм је затражио да се слагање суспендује. Comment[sr@ijekavian]=Други програм је затражио да се слагање суспендује. Comment[sr@ijekavianlatin]=Drugi program je zatražio da se slaganje suspenduje. @@ -200,6 +200,7 @@ Name=Graphics Reset Name[bs]=Reset grafike Name[ca]=Reinici dels gràfics Name[cs]=Resetovat grafiku +Name[da]=Grafiknulstilling Name[es]=Reinicio gráfico Name[fi]=Grafiikan nollaus Name[fr]=Réinitialisation graphique @@ -229,6 +230,7 @@ Name[zh_TW]=圖形重置 Comment=A graphics reset event occurred Comment[bs]=Grafički reset događaj se desio Comment[ca]=Ha ocorregut un esdeveniment de reinici dels gràfics +Comment[da]=En grafiknulstillingshændelse fandt sted Comment[es]=Ha ocurrido un evento de reinicio gráfico Comment[fi]=Sattui grafiikan nollaustapahtuma Comment[fr]=Un évènement de réinitialisation graphique est intervenu diff --git a/tabbox/kwindesktopswitcher.desktop b/tabbox/kwindesktopswitcher.desktop index 9f11e369d4..de5b7ceba2 100644 --- a/tabbox/kwindesktopswitcher.desktop +++ b/tabbox/kwindesktopswitcher.desktop @@ -5,6 +5,7 @@ X-KDE-ServiceType=KWin/DesktopSwitcher Comment=KWin Desktop Switcher Layout Comment[bs]=Izgled KWin prebacivača radnih površina Comment[ca]=Disposició del commutador d'escriptoris del KWin +Comment[da]=Layout til KWins skrivebordsskifter Comment[es]=Esquema del cambiador de escritorios de KWin Comment[fi]=KWinin työpöydänvalitsimen asettelu Comment[fr]=Une disposition du sélecteur de bureaux KWin diff --git a/tabbox/qml/desktops/informative/metadata.desktop b/tabbox/qml/desktops/informative/metadata.desktop index c393baf1b0..e78dbfb165 100644 --- a/tabbox/qml/desktops/informative/metadata.desktop +++ b/tabbox/qml/desktops/informative/metadata.desktop @@ -46,6 +46,7 @@ Name[zh_TW]=資訊提供 Comment=An informative desktop switcher layout Comment[bs]=Izgled informativnog prebacivača radnih površina Comment[ca]=Una disposició informativa del commutador d'escriptoris +Comment[da]=Et informativt layout til skrivebordskift Comment[de]=Ein ausführliches Fensterwechsler-Layout Comment[es]=Un esquema informativo del cambiador de escritorios Comment[fi]=Informatiivinen työpöydänvalitsimen asettelu diff --git a/tabbox/qml/desktops/previews/metadata.desktop b/tabbox/qml/desktops/previews/metadata.desktop index dc329ebbf9..43ec3ded8c 100644 --- a/tabbox/qml/desktops/previews/metadata.desktop +++ b/tabbox/qml/desktops/previews/metadata.desktop @@ -3,6 +3,7 @@ Name=Previews Name[bs]=Pregledi Name[ca]=Vistes prèvies Name[cs]=Náhledy +Name[da]=Forhåndsvisninger Name[de]=Vorschauen Name[es]=Vistas previas Name[fi]=Esikatselut @@ -35,6 +36,7 @@ Name[zh_TW]=預覽 Comment=A desktop switcher layout with previews of the desktops Comment[bs]=Raspored preklapanja radnih površina s pregledima radnih površina Comment[ca]=Una disposició del commutador d'escriptori amb vistes prèvies dels escriptoris +Comment[da]=Et layout til skrivebordsskift med forhåndsvisning af skrivebordene Comment[de]=Ein Arbeitsflächenwechsler mit Vorschauen der Arbeitsflächen Comment[es]=Un esquema del cambiador de escritorios con vistas previas de los escritorios Comment[fi]=Työpöydänvalitsimen asettelu, jossa on esikatselut työpöydistä From 50dfc83d2e85a6ac82d3e674de18d4d3e0c9c051 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Wed, 31 Jul 2013 04:07:19 +0000 Subject: [PATCH 075/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 ++ effects/screenedge/screenedgeeffect.desktop | 2 ++ effects/slideback/slideback.desktop | 1 + kcmkwin/kwinoptions/kwinactions.desktop | 2 ++ kcmkwin/kwinoptions/kwinadvanced.desktop | 1 + kcmkwin/kwinoptions/kwinfocus.desktop | 1 + kcmkwin/kwinscreenedges/kwinscreenedges.desktop | 1 + kwin.notifyrc | 2 ++ tabbox/kwindesktopswitcher.desktop | 1 + tabbox/qml/desktops/informative/metadata.desktop | 1 + tabbox/qml/desktops/previews/metadata.desktop | 2 ++ 11 files changed, 16 insertions(+) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index 36483a91d0..f5127baafe 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -14,6 +14,7 @@ Name[hu]=Kscreen Name[ia]=Kscreen Name[it]=Kscreen Name[kk]=Kscreen +Name[ko]=Kscreen Name[nl]=Kscreen Name[pa]=ਕੇਸਕਰੀਨ Name[pt]=Kscreen @@ -46,6 +47,7 @@ Comment[hu]=Segédeffektus a KScreenhez Comment[ia]=Effecto de adjutante pro KScreen Comment[it]=Effetto di assistenza per KScreen Comment[kk]=KScreen-нің көмек эффекті +Comment[ko]=KScreen 도우미 효과 Comment[nl]=Effect van hulp voor KScreen Comment[pa]=ਕੇਸਕਰੀਨ ਲਈ ਮੱਦਦ ਪ੍ਰਭਾਵ Comment[pt]=Efeito auxiliar do KScreen diff --git a/effects/screenedge/screenedgeeffect.desktop b/effects/screenedge/screenedgeeffect.desktop index fa732f0298..1cd9634585 100644 --- a/effects/screenedge/screenedgeeffect.desktop +++ b/effects/screenedge/screenedgeeffect.desktop @@ -14,6 +14,7 @@ Name[hu]=Képernyőszél Name[ia]=Margines de schermo Name[it]=Bordo dello schermo Name[kk]=Экран жиегі +Name[ko]=화면 경계 Name[lt]=Ekrano kraštas Name[mr]=स्क्रीन किनारा Name[nb]=Skjermkant @@ -51,6 +52,7 @@ Comment[hu]=Kiemeli a képernyő szélét megközelítéskor Comment[ia]=Evidentia un margine de schermo quando on approxima se Comment[it]=Evidenzia il bordo dello schermo quando ti avvicini Comment[kk]=Экран жиегіне жақындағанда оны бояп белгілеу +Comment[ko]=화면 경계에 도달할 때 강조하기 Comment[lt]=Paryškina ekrano kraštą kai priartėjama Comment[mr]=पोहोचताना स्क्रीन किनारे ठळक करतो Comment[nb]=Fremhever en skjermkant når den kommer nær diff --git a/effects/slideback/slideback.desktop b/effects/slideback/slideback.desktop index b1fbe41e59..a9a0530368 100644 --- a/effects/slideback/slideback.desktop +++ b/effects/slideback/slideback.desktop @@ -81,6 +81,7 @@ Comment[gl]=Despraza cara atrás as xanelas cando outra se eleva Comment[ia]=Glissa retro fenestras quando un altere fenestra es elevate Comment[it]=Fai scivolare indietro le altre finestre quando una nuova finestra appare Comment[kk]=Басқа терезе алдына шығарылғанда терезелерді сырғанату. +Comment[ko]=다른 창을 올렸을 때 창 뒤로 밀기 Comment[lt]=Slinkti atgal langus, kai kitas langas yra pakeliamas Comment[nb]=Skyv tilbake vinduer når et annet vindu heves Comment[nl]=Schuif vensters terug wanneer een ander venster omhoog komt diff --git a/kcmkwin/kwinoptions/kwinactions.desktop b/kcmkwin/kwinoptions/kwinactions.desktop index e96a83130a..800c56c666 100644 --- a/kcmkwin/kwinoptions/kwinactions.desktop +++ b/kcmkwin/kwinoptions/kwinactions.desktop @@ -113,6 +113,7 @@ Comment[gl]=Configura a accións do rato nas xanelas Comment[ia]=Configura actiones de mus sur fenestras Comment[it]=Configura le azioni del mouse sulla finestra Comment[kk]=Терезелердегі тышқанның әрекеттерін баптау +Comment[ko]=창 마우스 동작 설정 Comment[lt]=Konfigūruoti pelės veiksmus langams Comment[nb]=Sett opp musehandlingeer på vinduer Comment[nl]=Muisacties op vensters instellen @@ -151,6 +152,7 @@ X-KDE-Keywords[ia]=tinta,maximisa,maximisa,minimisa,minimisa,plus basse,menu de X-KDE-Keywords[it]=ombra,massimizza,minimizza,abbassa,menu operazioni,barra del titolo,ridimensiona X-KDE-Keywords[kk]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize X-KDE-Keywords[km]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize +X-KDE-Keywords[ko]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,최대화,최소화,제목 표시줄,크기 조정 X-KDE-Keywords[nb]=rull,maksimer,minimer,senk,handlinger,meny,tittellinje,endre størrelse X-KDE-Keywords[nl]=verdonkeren,maximaliseren,minimaliseren,naar onderen,bedieningsmenu,titelbalk,grootte wijzigen X-KDE-Keywords[pl]=zwiń,maksymalizuj,minimalizuj,obniż,operacje na menu,pasek tytułu,zmień rozmiar diff --git a/kcmkwin/kwinoptions/kwinadvanced.desktop b/kcmkwin/kwinoptions/kwinadvanced.desktop index d4ab647d6e..7de7542cde 100644 --- a/kcmkwin/kwinoptions/kwinadvanced.desktop +++ b/kcmkwin/kwinoptions/kwinadvanced.desktop @@ -202,6 +202,7 @@ X-KDE-Keywords[ia]=umbrar,margine,planante,margines active,con tegulas,schedas,t X-KDE-Keywords[it]=ombreggiatura,bordo,sovrapponi,bordi attivi,affiancatura,schede,navigazione schede,finestre a schede,regruppamento finestre,affaincatura finestre,posizionamento finestre,posizionamento delle finestre,comportamento avanzato delle finestre X-KDE-Keywords[kk]=shading,border,hover,active borders,tiling,tabs,tabbing,window tabbing,window grouping,window tiling,window placement,placement of windows,window advanced behavior X-KDE-Keywords[km]=shading,border,hover,active borders,tiling,tabs,tabbing,window tabbing,window grouping,window tiling,window placement,placement of windows,window advanced behavior +X-KDE-Keywords[ko]=shading,border,hover,active borders,tiling,tabs,tabbing,window tabbing,window grouping,window tiling,window placement,placement of windows,window advanced behavior,그림자,경계선,호버,지나다니기,타일,탭,창 탭,창 그룹,창 타일,창 위치 X-KDE-Keywords[nb]=-gardinrulling,kant,sveve,aktive kanter,flislegging,faner,vindusfaner,vindusgruppering,vindus-flislegging,vindusplassering,plassering av vinduer,avansert vindusoppførsel X-KDE-Keywords[nl]=verduisteren,rand,overzweven,actieve randen,schuin achter elkaar,tabbladen,met tabbladen werken,venstertabbladen,verstergroepering,vensters schuin achter elkaar,vensterplaatsing,plaatsing van vensters,geavanceerd gedrag van vensters X-KDE-Keywords[pl]=zwijanie,obramowanie,unoszenie,aktywne obramowania,kafelkowanie,karty,tworzenie kart, umieszczanie okien w kartach,grupowanie okien,kafelkowanie okien,umieszczanie okien, zaawansowane zachowania okien diff --git a/kcmkwin/kwinoptions/kwinfocus.desktop b/kcmkwin/kwinoptions/kwinfocus.desktop index c97c6a9176..d5ea0bc48c 100644 --- a/kcmkwin/kwinoptions/kwinfocus.desktop +++ b/kcmkwin/kwinoptions/kwinfocus.desktop @@ -199,6 +199,7 @@ X-KDE-Keywords[ia]=focus,placiamento,auto raise,raise,click raise,clavierp,CDE,a X-KDE-Keywords[it]=fuoco,posizionamento,avanzamento automatico,avanzamento,avanzamento con clic,tastiera,CDE,alt-tab,tutti i desktop,il fuco segue il mouse,impedisci il fuoco,mantieni il fuoco,regole fuoco,regole fuoco finestra,comportamento finestra X-KDE-Keywords[kk]=focus,placement,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[km]=focus,placement,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[ko]=focus,placement,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[nb]=fokus,plassering,autohev,hev,klikk-hev,tastatur,CDE,alt-tab,alle skrivebord,fokus følger mus,fokushindring,fokus-stjeling,fokuspraksis,fokusoppførsel for vinduer,vindusoppførsel på skjerm X-KDE-Keywords[nl]=focus,plaatsing,automatisch omhoog komen,omhoog komen,omhoog komen bij klikken,toetsenbord,CDE,alt-tab,alle bureaubladen,focus volgt muis,voorkomen van focus,focus stelen,focusbeleid,focusgedrag in venster,gedrag van vensterscherm X-KDE-Keywords[pl]=uaktywnienie,umieszczenie,auto wznoszenie,wznoszenie,wznoszenie na kliknięcie,klawiatura,CDE,alt-tab,wszystkie pulpity diff --git a/kcmkwin/kwinscreenedges/kwinscreenedges.desktop b/kcmkwin/kwinscreenedges/kwinscreenedges.desktop index 240ade70f7..e8551674b5 100644 --- a/kcmkwin/kwinscreenedges/kwinscreenedges.desktop +++ b/kcmkwin/kwinscreenedges/kwinscreenedges.desktop @@ -166,6 +166,7 @@ X-KDE-Keywords[ia]=kwin,fenestra,gerente,effecto,bordo,margine,action,commuta,sc X-KDE-Keywords[it]=kwin,finestra,gestore,effetto,bordo,azione,scambiatore,desktop,bordi schermo kwin,bordi desktop,bordi schermo,massimizza finestre,affianca finestre,lato dello schermo,comportamento schermo,scambia desktop,desktop virtuale,angoli dello schermo X-KDE-Keywords[kk]=kwin,window,manager,effect,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 X-KDE-Keywords[km]=kwin,window,manager,effect,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 +X-KDE-Keywords[ko]=kwin,window,manager,effect,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 화면 경계,화면 경계,창 최대화,최대화,바둑판식 배열,화면 행동,데스크톱 전환,가상 데스크톱,화면 모서리 X-KDE-Keywords[nb]=kwin,vindu,behandler,effekt,kant,ramme,handling,bytte,skrivebord,kwin skjermkanter,skrivebordkanter,skjermkanter,maksimere vinduer,flislegge vinduer,skjermside,skjermoppførsel,bytte skrivebord,virtuelt skrivebord,skjermhjørner X-KDE-Keywords[nl]=kwin,venster,beheerder,effect,kant,rand,actie,omschakelen,bureaublad,schermranden van kwin,bureaubladkanten,schermkanten,vensters maximaliseren,venster schuin achter elkaar,zijkant van het scherm,schermgedrag,bureaublad omschakelen,virtueel bureaublad,schermhoeken X-KDE-Keywords[pl]=kwin,okno,menadżer,efekt,krawędź,obramowanie,działanie,przełącz,pulpit, krawędzie ekranu kwin,krawędzie pulpitu,krawędzie ekranu,maksymalizacja okien, kafelkowanie okien,strona ekranu,zachowanie ekranu,przełączanie pulpitu,wirtualny pulpit, krawędzie ekranu diff --git a/kwin.notifyrc b/kwin.notifyrc index 0682c6f05c..5cb2883601 100644 --- a/kwin.notifyrc +++ b/kwin.notifyrc @@ -208,6 +208,7 @@ Name[gl]=Reinicio dos gráficos Name[ia]=Reinitia Graphic Name[it]=Azzeramento grafica Name[kk]=Графиканы ысыру +Name[ko]=그래픽 초기화 Name[lt]=Grafikos atstatymas Name[nl]=Grafische reset Name[pa]=ਗਰਾਫਿਕਸ ਮੁੜ-ਸੈੱਟ @@ -238,6 +239,7 @@ Comment[gl]=Aconteceu un reinicio de gráficos Comment[ia]=Il necessita un evento de reinitiar le graphic Comment[it]=Si è verificato un evento di azzeramento della grafica Comment[kk]=Графиканы ысыру оқиғасы болды +Comment[ko]=그래픽 초기화 이벤트가 발생함 Comment[nl]=Een gebeurtenis van een grafische reset deed zich voor Comment[pl]=Nastąpiło zdarzenie resetu grafiki Comment[pt]=Ocorreu um evento de reinício gráfico diff --git a/tabbox/kwindesktopswitcher.desktop b/tabbox/kwindesktopswitcher.desktop index de5b7ceba2..42cc455d96 100644 --- a/tabbox/kwindesktopswitcher.desktop +++ b/tabbox/kwindesktopswitcher.desktop @@ -14,6 +14,7 @@ Comment[hu]=KWin asztalváltó elrendezés Comment[ia]=Disposition de commutator de scriptorio de KWin Comment[it]=Disposizione scambiatore desktop KWin Comment[kk]=KWin үстел ауыстырғышының қалыпы +Comment[ko]=KWin 데스크톱 전환기 레이아웃 Comment[lt]=KWin darbastalio perjungimo išdėstymas Comment[nb]=Utforming av KWin skrivebordsbytter Comment[nl]=KWin indeling van bureaubladwisselaar diff --git a/tabbox/qml/desktops/informative/metadata.desktop b/tabbox/qml/desktops/informative/metadata.desktop index e78dbfb165..f99da982da 100644 --- a/tabbox/qml/desktops/informative/metadata.desktop +++ b/tabbox/qml/desktops/informative/metadata.desktop @@ -56,6 +56,7 @@ Comment[hu]=Egy informatív asztalváltó elrendezés Comment[ia]=Un disposition de commutator de criptorio informative Comment[it]=Una disposizione informativa dello scambiafinestre Comment[kk]=Ақпаратты үстел ауыстырғышының қалыпы +Comment[ko]=정보가 있는 데스크톱 전환기 레이아웃 Comment[lt]=Informatyvus darbastalio perjungimo išdėstymas Comment[nb]=En kompakt utforming av skrivebordsbytter Comment[nl]=Een informatieve indeling van de bureaubladwisselaar diff --git a/tabbox/qml/desktops/previews/metadata.desktop b/tabbox/qml/desktops/previews/metadata.desktop index 43ec3ded8c..c9e7cf9e09 100644 --- a/tabbox/qml/desktops/previews/metadata.desktop +++ b/tabbox/qml/desktops/previews/metadata.desktop @@ -13,6 +13,7 @@ Name[hu]=Előnézetek Name[ia]=Vistas preliminar Name[it]=Anteprima Name[kk]=Алдын-ала қарау +Name[ko]=미리 보기 Name[lt]=Peržiūros Name[nb]=Forhåndsvisninger Name[nl]=Voorbeelden @@ -45,6 +46,7 @@ Comment[gl]=Unha disposición do selector de escritorios con vistas previas dele Comment[ia]=Un disposition de commutator de scriptorio con vistas preliminar de scriptorios Comment[it]=Una disposizione con anteprima dello scambiafinestre Comment[kk]=Үстелдер нобайларын көрсететін үстел ауыстырғышының қалыпы +Comment[ko]=데스크톱 미리 보기를 제공하는 데스크톱 전환기 레이아웃 Comment[lt]=Darbastalio perjungimo išdėstymas su darbastalių peržiūromis Comment[nb]=Utforming av KWin skrivebordsbytter med forhåndsvisning av skrivebordene Comment[nl]=Een indeling van bureaubladwisselaar met voorbeelden op de bureaubladen From 2f46414ea7a7565dd50980feda8d382e2f07ad92 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Wed, 31 Jul 2013 06:46:21 +0000 Subject: [PATCH 076/108] SVN_SILENT made messages (.desktop file) --- effects/kscreen/kscreen.desktop | 2 ++ effects/screenedge/screenedgeeffect.desktop | 2 ++ effects/slideback/slideback.desktop | 1 + kcmkwin/kwinoptions/kwinactions.desktop | 2 ++ kcmkwin/kwinoptions/kwinadvanced.desktop | 1 + kcmkwin/kwinoptions/kwinfocus.desktop | 1 + kcmkwin/kwinscreenedges/kwinscreenedges.desktop | 1 + kwin.notifyrc | 2 ++ tabbox/kwindesktopswitcher.desktop | 1 + tabbox/qml/desktops/informative/metadata.desktop | 1 + tabbox/qml/desktops/previews/metadata.desktop | 2 ++ 11 files changed, 16 insertions(+) diff --git a/effects/kscreen/kscreen.desktop b/effects/kscreen/kscreen.desktop index 36483a91d0..f5127baafe 100644 --- a/effects/kscreen/kscreen.desktop +++ b/effects/kscreen/kscreen.desktop @@ -14,6 +14,7 @@ Name[hu]=Kscreen Name[ia]=Kscreen Name[it]=Kscreen Name[kk]=Kscreen +Name[ko]=Kscreen Name[nl]=Kscreen Name[pa]=ਕੇਸਕਰੀਨ Name[pt]=Kscreen @@ -46,6 +47,7 @@ Comment[hu]=Segédeffektus a KScreenhez Comment[ia]=Effecto de adjutante pro KScreen Comment[it]=Effetto di assistenza per KScreen Comment[kk]=KScreen-нің көмек эффекті +Comment[ko]=KScreen 도우미 효과 Comment[nl]=Effect van hulp voor KScreen Comment[pa]=ਕੇਸਕਰੀਨ ਲਈ ਮੱਦਦ ਪ੍ਰਭਾਵ Comment[pt]=Efeito auxiliar do KScreen diff --git a/effects/screenedge/screenedgeeffect.desktop b/effects/screenedge/screenedgeeffect.desktop index fa732f0298..1cd9634585 100644 --- a/effects/screenedge/screenedgeeffect.desktop +++ b/effects/screenedge/screenedgeeffect.desktop @@ -14,6 +14,7 @@ Name[hu]=Képernyőszél Name[ia]=Margines de schermo Name[it]=Bordo dello schermo Name[kk]=Экран жиегі +Name[ko]=화면 경계 Name[lt]=Ekrano kraštas Name[mr]=स्क्रीन किनारा Name[nb]=Skjermkant @@ -51,6 +52,7 @@ Comment[hu]=Kiemeli a képernyő szélét megközelítéskor Comment[ia]=Evidentia un margine de schermo quando on approxima se Comment[it]=Evidenzia il bordo dello schermo quando ti avvicini Comment[kk]=Экран жиегіне жақындағанда оны бояп белгілеу +Comment[ko]=화면 경계에 도달할 때 강조하기 Comment[lt]=Paryškina ekrano kraštą kai priartėjama Comment[mr]=पोहोचताना स्क्रीन किनारे ठळक करतो Comment[nb]=Fremhever en skjermkant når den kommer nær diff --git a/effects/slideback/slideback.desktop b/effects/slideback/slideback.desktop index b1fbe41e59..a9a0530368 100644 --- a/effects/slideback/slideback.desktop +++ b/effects/slideback/slideback.desktop @@ -81,6 +81,7 @@ Comment[gl]=Despraza cara atrás as xanelas cando outra se eleva Comment[ia]=Glissa retro fenestras quando un altere fenestra es elevate Comment[it]=Fai scivolare indietro le altre finestre quando una nuova finestra appare Comment[kk]=Басқа терезе алдына шығарылғанда терезелерді сырғанату. +Comment[ko]=다른 창을 올렸을 때 창 뒤로 밀기 Comment[lt]=Slinkti atgal langus, kai kitas langas yra pakeliamas Comment[nb]=Skyv tilbake vinduer når et annet vindu heves Comment[nl]=Schuif vensters terug wanneer een ander venster omhoog komt diff --git a/kcmkwin/kwinoptions/kwinactions.desktop b/kcmkwin/kwinoptions/kwinactions.desktop index e96a83130a..800c56c666 100644 --- a/kcmkwin/kwinoptions/kwinactions.desktop +++ b/kcmkwin/kwinoptions/kwinactions.desktop @@ -113,6 +113,7 @@ Comment[gl]=Configura a accións do rato nas xanelas Comment[ia]=Configura actiones de mus sur fenestras Comment[it]=Configura le azioni del mouse sulla finestra Comment[kk]=Терезелердегі тышқанның әрекеттерін баптау +Comment[ko]=창 마우스 동작 설정 Comment[lt]=Konfigūruoti pelės veiksmus langams Comment[nb]=Sett opp musehandlingeer på vinduer Comment[nl]=Muisacties op vensters instellen @@ -151,6 +152,7 @@ X-KDE-Keywords[ia]=tinta,maximisa,maximisa,minimisa,minimisa,plus basse,menu de X-KDE-Keywords[it]=ombra,massimizza,minimizza,abbassa,menu operazioni,barra del titolo,ridimensiona X-KDE-Keywords[kk]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize X-KDE-Keywords[km]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize +X-KDE-Keywords[ko]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,최대화,최소화,제목 표시줄,크기 조정 X-KDE-Keywords[nb]=rull,maksimer,minimer,senk,handlinger,meny,tittellinje,endre størrelse X-KDE-Keywords[nl]=verdonkeren,maximaliseren,minimaliseren,naar onderen,bedieningsmenu,titelbalk,grootte wijzigen X-KDE-Keywords[pl]=zwiń,maksymalizuj,minimalizuj,obniż,operacje na menu,pasek tytułu,zmień rozmiar diff --git a/kcmkwin/kwinoptions/kwinadvanced.desktop b/kcmkwin/kwinoptions/kwinadvanced.desktop index d4ab647d6e..7de7542cde 100644 --- a/kcmkwin/kwinoptions/kwinadvanced.desktop +++ b/kcmkwin/kwinoptions/kwinadvanced.desktop @@ -202,6 +202,7 @@ X-KDE-Keywords[ia]=umbrar,margine,planante,margines active,con tegulas,schedas,t X-KDE-Keywords[it]=ombreggiatura,bordo,sovrapponi,bordi attivi,affiancatura,schede,navigazione schede,finestre a schede,regruppamento finestre,affaincatura finestre,posizionamento finestre,posizionamento delle finestre,comportamento avanzato delle finestre X-KDE-Keywords[kk]=shading,border,hover,active borders,tiling,tabs,tabbing,window tabbing,window grouping,window tiling,window placement,placement of windows,window advanced behavior X-KDE-Keywords[km]=shading,border,hover,active borders,tiling,tabs,tabbing,window tabbing,window grouping,window tiling,window placement,placement of windows,window advanced behavior +X-KDE-Keywords[ko]=shading,border,hover,active borders,tiling,tabs,tabbing,window tabbing,window grouping,window tiling,window placement,placement of windows,window advanced behavior,그림자,경계선,호버,지나다니기,타일,탭,창 탭,창 그룹,창 타일,창 위치 X-KDE-Keywords[nb]=-gardinrulling,kant,sveve,aktive kanter,flislegging,faner,vindusfaner,vindusgruppering,vindus-flislegging,vindusplassering,plassering av vinduer,avansert vindusoppførsel X-KDE-Keywords[nl]=verduisteren,rand,overzweven,actieve randen,schuin achter elkaar,tabbladen,met tabbladen werken,venstertabbladen,verstergroepering,vensters schuin achter elkaar,vensterplaatsing,plaatsing van vensters,geavanceerd gedrag van vensters X-KDE-Keywords[pl]=zwijanie,obramowanie,unoszenie,aktywne obramowania,kafelkowanie,karty,tworzenie kart, umieszczanie okien w kartach,grupowanie okien,kafelkowanie okien,umieszczanie okien, zaawansowane zachowania okien diff --git a/kcmkwin/kwinoptions/kwinfocus.desktop b/kcmkwin/kwinoptions/kwinfocus.desktop index c97c6a9176..d5ea0bc48c 100644 --- a/kcmkwin/kwinoptions/kwinfocus.desktop +++ b/kcmkwin/kwinoptions/kwinfocus.desktop @@ -199,6 +199,7 @@ X-KDE-Keywords[ia]=focus,placiamento,auto raise,raise,click raise,clavierp,CDE,a X-KDE-Keywords[it]=fuoco,posizionamento,avanzamento automatico,avanzamento,avanzamento con clic,tastiera,CDE,alt-tab,tutti i desktop,il fuco segue il mouse,impedisci il fuoco,mantieni il fuoco,regole fuoco,regole fuoco finestra,comportamento finestra X-KDE-Keywords[kk]=focus,placement,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[km]=focus,placement,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[ko]=focus,placement,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[nb]=fokus,plassering,autohev,hev,klikk-hev,tastatur,CDE,alt-tab,alle skrivebord,fokus følger mus,fokushindring,fokus-stjeling,fokuspraksis,fokusoppførsel for vinduer,vindusoppførsel på skjerm X-KDE-Keywords[nl]=focus,plaatsing,automatisch omhoog komen,omhoog komen,omhoog komen bij klikken,toetsenbord,CDE,alt-tab,alle bureaubladen,focus volgt muis,voorkomen van focus,focus stelen,focusbeleid,focusgedrag in venster,gedrag van vensterscherm X-KDE-Keywords[pl]=uaktywnienie,umieszczenie,auto wznoszenie,wznoszenie,wznoszenie na kliknięcie,klawiatura,CDE,alt-tab,wszystkie pulpity diff --git a/kcmkwin/kwinscreenedges/kwinscreenedges.desktop b/kcmkwin/kwinscreenedges/kwinscreenedges.desktop index 240ade70f7..e8551674b5 100644 --- a/kcmkwin/kwinscreenedges/kwinscreenedges.desktop +++ b/kcmkwin/kwinscreenedges/kwinscreenedges.desktop @@ -166,6 +166,7 @@ X-KDE-Keywords[ia]=kwin,fenestra,gerente,effecto,bordo,margine,action,commuta,sc X-KDE-Keywords[it]=kwin,finestra,gestore,effetto,bordo,azione,scambiatore,desktop,bordi schermo kwin,bordi desktop,bordi schermo,massimizza finestre,affianca finestre,lato dello schermo,comportamento schermo,scambia desktop,desktop virtuale,angoli dello schermo X-KDE-Keywords[kk]=kwin,window,manager,effect,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 X-KDE-Keywords[km]=kwin,window,manager,effect,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 +X-KDE-Keywords[ko]=kwin,window,manager,effect,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 화면 경계,화면 경계,창 최대화,최대화,바둑판식 배열,화면 행동,데스크톱 전환,가상 데스크톱,화면 모서리 X-KDE-Keywords[nb]=kwin,vindu,behandler,effekt,kant,ramme,handling,bytte,skrivebord,kwin skjermkanter,skrivebordkanter,skjermkanter,maksimere vinduer,flislegge vinduer,skjermside,skjermoppførsel,bytte skrivebord,virtuelt skrivebord,skjermhjørner X-KDE-Keywords[nl]=kwin,venster,beheerder,effect,kant,rand,actie,omschakelen,bureaublad,schermranden van kwin,bureaubladkanten,schermkanten,vensters maximaliseren,venster schuin achter elkaar,zijkant van het scherm,schermgedrag,bureaublad omschakelen,virtueel bureaublad,schermhoeken X-KDE-Keywords[pl]=kwin,okno,menadżer,efekt,krawędź,obramowanie,działanie,przełącz,pulpit, krawędzie ekranu kwin,krawędzie pulpitu,krawędzie ekranu,maksymalizacja okien, kafelkowanie okien,strona ekranu,zachowanie ekranu,przełączanie pulpitu,wirtualny pulpit, krawędzie ekranu diff --git a/kwin.notifyrc b/kwin.notifyrc index 0682c6f05c..5cb2883601 100644 --- a/kwin.notifyrc +++ b/kwin.notifyrc @@ -208,6 +208,7 @@ Name[gl]=Reinicio dos gráficos Name[ia]=Reinitia Graphic Name[it]=Azzeramento grafica Name[kk]=Графиканы ысыру +Name[ko]=그래픽 초기화 Name[lt]=Grafikos atstatymas Name[nl]=Grafische reset Name[pa]=ਗਰਾਫਿਕਸ ਮੁੜ-ਸੈੱਟ @@ -238,6 +239,7 @@ Comment[gl]=Aconteceu un reinicio de gráficos Comment[ia]=Il necessita un evento de reinitiar le graphic Comment[it]=Si è verificato un evento di azzeramento della grafica Comment[kk]=Графиканы ысыру оқиғасы болды +Comment[ko]=그래픽 초기화 이벤트가 발생함 Comment[nl]=Een gebeurtenis van een grafische reset deed zich voor Comment[pl]=Nastąpiło zdarzenie resetu grafiki Comment[pt]=Ocorreu um evento de reinício gráfico diff --git a/tabbox/kwindesktopswitcher.desktop b/tabbox/kwindesktopswitcher.desktop index de5b7ceba2..42cc455d96 100644 --- a/tabbox/kwindesktopswitcher.desktop +++ b/tabbox/kwindesktopswitcher.desktop @@ -14,6 +14,7 @@ Comment[hu]=KWin asztalváltó elrendezés Comment[ia]=Disposition de commutator de scriptorio de KWin Comment[it]=Disposizione scambiatore desktop KWin Comment[kk]=KWin үстел ауыстырғышының қалыпы +Comment[ko]=KWin 데스크톱 전환기 레이아웃 Comment[lt]=KWin darbastalio perjungimo išdėstymas Comment[nb]=Utforming av KWin skrivebordsbytter Comment[nl]=KWin indeling van bureaubladwisselaar diff --git a/tabbox/qml/desktops/informative/metadata.desktop b/tabbox/qml/desktops/informative/metadata.desktop index e78dbfb165..f99da982da 100644 --- a/tabbox/qml/desktops/informative/metadata.desktop +++ b/tabbox/qml/desktops/informative/metadata.desktop @@ -56,6 +56,7 @@ Comment[hu]=Egy informatív asztalváltó elrendezés Comment[ia]=Un disposition de commutator de criptorio informative Comment[it]=Una disposizione informativa dello scambiafinestre Comment[kk]=Ақпаратты үстел ауыстырғышының қалыпы +Comment[ko]=정보가 있는 데스크톱 전환기 레이아웃 Comment[lt]=Informatyvus darbastalio perjungimo išdėstymas Comment[nb]=En kompakt utforming av skrivebordsbytter Comment[nl]=Een informatieve indeling van de bureaubladwisselaar diff --git a/tabbox/qml/desktops/previews/metadata.desktop b/tabbox/qml/desktops/previews/metadata.desktop index 43ec3ded8c..c9e7cf9e09 100644 --- a/tabbox/qml/desktops/previews/metadata.desktop +++ b/tabbox/qml/desktops/previews/metadata.desktop @@ -13,6 +13,7 @@ Name[hu]=Előnézetek Name[ia]=Vistas preliminar Name[it]=Anteprima Name[kk]=Алдын-ала қарау +Name[ko]=미리 보기 Name[lt]=Peržiūros Name[nb]=Forhåndsvisninger Name[nl]=Voorbeelden @@ -45,6 +46,7 @@ Comment[gl]=Unha disposición do selector de escritorios con vistas previas dele Comment[ia]=Un disposition de commutator de scriptorio con vistas preliminar de scriptorios Comment[it]=Una disposizione con anteprima dello scambiafinestre Comment[kk]=Үстелдер нобайларын көрсететін үстел ауыстырғышының қалыпы +Comment[ko]=데스크톱 미리 보기를 제공하는 데스크톱 전환기 레이아웃 Comment[lt]=Darbastalio perjungimo išdėstymas su darbastalių peržiūromis Comment[nb]=Utforming av KWin skrivebordsbytter med forhåndsvisning av skrivebordene Comment[nl]=Een indeling van bureaubladwisselaar met voorbeelden op de bureaubladen From 57485cfefce6905ff307d203d5778a94a34a37ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Thu, 25 Jul 2013 19:12:30 +0200 Subject: [PATCH 077/108] fix magnifier effect exit precision is usually enough to end on exactly "1.0" so the effect was "hidden" but the mouse still polled. --- effects/magnifier/magnifier.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/effects/magnifier/magnifier.cpp b/effects/magnifier/magnifier.cpp index 22b9994a87..ad8d51a155 100644 --- a/effects/magnifier/magnifier.cpp +++ b/effects/magnifier/magnifier.cpp @@ -266,7 +266,7 @@ void MagnifierEffect::zoomIn() void MagnifierEffect::zoomOut() { target_zoom /= 1.2; - if (target_zoom < 1) { + if (target_zoom <= 1) { target_zoom = 1; if (polling) { polling = false; From bac8dc095fbcff59c0e6bdeecd4ee1c261519324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Thu, 25 Jul 2013 19:13:51 +0200 Subject: [PATCH 078/108] fix rendertarget warning on xrender accidental GL call in non GL compositing --- effects/magnifier/magnifier.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/effects/magnifier/magnifier.cpp b/effects/magnifier/magnifier.cpp index ad8d51a155..5ef9420aa1 100644 --- a/effects/magnifier/magnifier.cpp +++ b/effects/magnifier/magnifier.cpp @@ -255,7 +255,7 @@ void MagnifierEffect::zoomIn() polling = true; effects->startMousePolling(); } - if (!m_texture) { + if (effects->isOpenGLCompositing() && !m_texture) { m_texture = new GLTexture(magnifier_size.width(), magnifier_size.height()); m_texture->setYInverted(false); m_fbo = new GLRenderTarget(*m_texture); @@ -293,7 +293,7 @@ void MagnifierEffect::toggle() polling = true; effects->startMousePolling(); } - if (!m_texture) { + if (effects->isOpenGLCompositing() && !m_texture) { m_texture = new GLTexture(magnifier_size.width(), magnifier_size.height()); m_texture->setYInverted(false); m_fbo = new GLRenderTarget(*m_texture); From 50e3e909dadf37ffaa5cbe75b528ba458af207cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Tue, 23 Jul 2013 22:34:41 +0200 Subject: [PATCH 079/108] prevent yield/swap cpu overhead on nvidia CCBUG: 322060 REVIEW: 111663 --- eglonxbackend.cpp | 12 ++++++++++++ glxbackend.cpp | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/eglonxbackend.cpp b/eglonxbackend.cpp index cc5df0d2d7..86c763eb08 100644 --- a/eglonxbackend.cpp +++ b/eglonxbackend.cpp @@ -277,6 +277,18 @@ void EglOnXBackend::present() eglWaitGL(); if (char result = m_swapProfiler.end()) { gs_tripleBufferUndetected = gs_tripleBufferNeedsDetection = false; + if (result == 'd' && GLPlatform::instance()->driver() == Driver_NVidia) { + // TODO this is a workaround, we should get __GL_YIELD set before libGL checks it + if (qstrcmp(qgetenv("__GL_YIELD"), "USLEEP")) { + options->setGlPreferBufferSwap(0); + eglSwapInterval(dpy, 0); + kWarning(1212) << "\nIt seems you are using the nvidia driver without triple buffering\n" + "You must export __GL_YIELD=\"USLEEP\" to prevent large CPU overhead on synced swaps\n" + "Preferably, enable the TripleBuffer Option in the xorg.conf Device\n" + "For this reason, the tearing prevention has been disabled.\n" + "See https://bugs.kde.org/show_bug.cgi?id=322060\n"; + } + } setBlocksForRetrace(result == 'd'); } } diff --git a/glxbackend.cpp b/glxbackend.cpp index 773bb91886..7f2449cfe4 100644 --- a/glxbackend.cpp +++ b/glxbackend.cpp @@ -432,6 +432,18 @@ void GlxBackend::present() glXWaitGL(); if (char result = m_swapProfiler.end()) { gs_tripleBufferUndetected = gs_tripleBufferNeedsDetection = false; + if (result == 'd' && GLPlatform::instance()->driver() == Driver_NVidia) { + // TODO this is a workaround, we should get __GL_YIELD set before libGL checks it + if (qstrcmp(qgetenv("__GL_YIELD"), "USLEEP")) { + options->setGlPreferBufferSwap(0); + setSwapInterval(0); + kWarning(1212) << "\nIt seems you are using the nvidia driver without triple buffering\n" + "You must export __GL_YIELD=\"USLEEP\" to prevent large CPU overhead on synced swaps\n" + "Preferably, enable the TripleBuffer Option in the xorg.conf Device\n" + "For this reason, the tearing prevention has been disabled.\n" + "See https://bugs.kde.org/show_bug.cgi?id=322060\n"; + } + } setBlocksForRetrace(result == 'd'); } } From f4827fbac9e3ef2f2c63553943af6d29d89b6143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Fri, 19 Jul 2013 16:28:05 +0200 Subject: [PATCH 080/108] update packing logics to honor activities and tabs at the same time using MaximizeArea instead MoveArea ratio: movearea allows to pack windows under panels and while one can expect users of packing to know alt+lmb, we usually do not allow to loose the titlebar Moreover this relies on packing against dock windows what fails with "virtual" struts as input shaping panels (eg. cairo-dock?) might use (ie. we we would also have packed against plasma panel shadows - back then ;-) BUG: 180084 REVIEW: 111603 FIXED-IN: 4.11 --- placement.cpp | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/placement.cpp b/placement.cpp index b23dc37d62..55fcb34e87 100644 --- a/placement.cpp +++ b/placement.cpp @@ -140,7 +140,7 @@ void Placement::placeAtRandom(Client* c, const QRect& area, Policy /*next*/) } // TODO: one day, there'll be C++11 ... -static inline bool isIrrelevant(Client *client, Client *regarding, int desktop) +static inline bool isIrrelevant(const Client *client, const Client *regarding, int desktop) { if (!client) return true; @@ -810,16 +810,14 @@ void Workspace::slotWindowQuickTileBottomRight() int Workspace::packPositionLeft(const Client* cl, int oldx, bool left_edge) const { - int newx = clientArea(MovementArea, cl).left(); + int newx = clientArea(MaximizeArea, cl).left(); if (oldx <= newx) // try another Xinerama screen - newx = clientArea(MovementArea, + newx = clientArea(MaximizeArea, QPoint(cl->geometry().left() - 1, cl->geometry().center().y()), cl->desktop()).left(); if (oldx <= newx) return oldx; - for (ClientList::ConstIterator it = clients.constBegin(); - it != clients.constEnd(); - ++it) { - if (!(*it)->isShown(false) || !(*it)->isOnDesktop(active_client->desktop())) + for (ClientList::ConstIterator it = clients.constBegin(), end = clients.constEnd(); it != end; ++it) { + if (isIrrelevant(*it, cl, cl->desktop())) continue; int x = left_edge ? (*it)->geometry().right() + 1 : (*it)->geometry().left() - 1; if (x > newx && x < oldx @@ -832,16 +830,14 @@ int Workspace::packPositionLeft(const Client* cl, int oldx, bool left_edge) cons int Workspace::packPositionRight(const Client* cl, int oldx, bool right_edge) const { - int newx = clientArea(MovementArea, cl).right(); + int newx = clientArea(MaximizeArea, cl).right(); if (oldx >= newx) // try another Xinerama screen - newx = clientArea(MovementArea, + newx = clientArea(MaximizeArea, QPoint(cl->geometry().right() + 1, cl->geometry().center().y()), cl->desktop()).right(); if (oldx >= newx) return oldx; - for (ClientList::ConstIterator it = clients.constBegin(); - it != clients.constEnd(); - ++it) { - if (!(*it)->isShown(false) || !(*it)->isOnDesktop(cl->desktop())) + for (ClientList::ConstIterator it = clients.constBegin(), end = clients.constEnd(); it != end; ++it) { + if (isIrrelevant(*it, cl, cl->desktop())) continue; int x = right_edge ? (*it)->geometry().left() - 1 : (*it)->geometry().right() + 1; if (x < newx && x > oldx @@ -854,16 +850,14 @@ int Workspace::packPositionRight(const Client* cl, int oldx, bool right_edge) co int Workspace::packPositionUp(const Client* cl, int oldy, bool top_edge) const { - int newy = clientArea(MovementArea, cl).top(); + int newy = clientArea(MaximizeArea, cl).top(); if (oldy <= newy) // try another Xinerama screen - newy = clientArea(MovementArea, + newy = clientArea(MaximizeArea, QPoint(cl->geometry().center().x(), cl->geometry().top() - 1), cl->desktop()).top(); if (oldy <= newy) return oldy; - for (ClientList::ConstIterator it = clients.constBegin(); - it != clients.constEnd(); - ++it) { - if (!(*it)->isShown(false) || !(*it)->isOnDesktop(cl->desktop())) + for (ClientList::ConstIterator it = clients.constBegin(), end = clients.constEnd(); it != end; ++it) { + if (isIrrelevant(*it, cl, cl->desktop())) continue; int y = top_edge ? (*it)->geometry().bottom() + 1 : (*it)->geometry().top() - 1; if (y > newy && y < oldy @@ -876,16 +870,14 @@ int Workspace::packPositionUp(const Client* cl, int oldy, bool top_edge) const int Workspace::packPositionDown(const Client* cl, int oldy, bool bottom_edge) const { - int newy = clientArea(MovementArea, cl).bottom(); + int newy = clientArea(MaximizeArea, cl).bottom(); if (oldy >= newy) // try another Xinerama screen - newy = clientArea(MovementArea, + newy = clientArea(MaximizeArea, QPoint(cl->geometry().center().x(), cl->geometry().bottom() + 1), cl->desktop()).bottom(); if (oldy >= newy) return oldy; - for (ClientList::ConstIterator it = clients.constBegin(); - it != clients.constEnd(); - ++it) { - if (!(*it)->isShown(false) || !(*it)->isOnDesktop(cl->desktop())) + for (ClientList::ConstIterator it = clients.constBegin(), end = clients.constEnd(); it != end; ++it) { + if (isIrrelevant(*it, cl, cl->desktop())) continue; int y = bottom_edge ? (*it)->geometry().top() - 1 : (*it)->geometry().bottom() + 1; if (y < newy && y > oldy From bc80d2417afb486806b021c58c723df2283fb4a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Fri, 26 Jul 2013 14:09:06 +0200 Subject: [PATCH 081/108] re-fix bouncing startup feedback BUG: 304253 FIXED-IN: 4.11 REVIEW: 111729 --- effects/startupfeedback/startupfeedback.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/effects/startupfeedback/startupfeedback.cpp b/effects/startupfeedback/startupfeedback.cpp index ca1964d763..063d9879f8 100644 --- a/effects/startupfeedback/startupfeedback.cpp +++ b/effects/startupfeedback/startupfeedback.cpp @@ -155,7 +155,9 @@ void StartupFeedbackEffect::prePaintScreen(ScreenPrePaintData& data, int time) switch(m_type) { case BouncingFeedback: m_progress = (m_progress + time) % BOUNCE_DURATION; - m_frame = qRound((qreal)m_progress / (qreal)BOUNCE_FRAME_DURATION) % BOUNCE_FRAMES;; + m_frame = qRound((qreal)m_progress / (qreal)BOUNCE_FRAME_DURATION) % BOUNCE_FRAMES; + m_currentGeometry = feedbackRect(); // bounce alters geometry with m_frame + data.paint.unite(m_currentGeometry); break; case BlinkingFeedback: m_progress = (m_progress + time) % BLINKING_DURATION; From 2f5ceb15e4f51d00e0c7f9a04ae34826e9544a7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Fri, 26 Jul 2013 17:16:19 +0200 Subject: [PATCH 082/108] exit cube on doubleclick more natural than (preserved) rmb exit and also for single touch devices REVIEW: 111730 --- effects/cube/cube.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/effects/cube/cube.cpp b/effects/cube/cube.cpp index 5e4a8421b7..df01d7c5bb 100644 --- a/effects/cube/cube.cpp +++ b/effects/cube/cube.cpp @@ -30,6 +30,7 @@ along with this program. If not, see . #include #include +#include #include #include #include @@ -1948,6 +1949,8 @@ void CubeEffect::windowInputMouseEvent(QEvent* e) return; static QPoint oldpos; + static QElapsedTimer dblClckTime; + static int dblClckCounter(0); if (mouse->type() == QEvent::MouseMove && mouse->buttons().testFlag(Qt::LeftButton)) { const QPoint pos = mouse->pos(); QRect rect = effects->clientArea(FullArea, activeScreen, effects->currentDesktop()); @@ -1991,11 +1994,22 @@ void CubeEffect::windowInputMouseEvent(QEvent* e) else if (mouse->type() == QEvent::MouseButtonPress && mouse->button() == Qt::LeftButton) { oldpos = mouse->pos(); + if (dblClckTime.elapsed() > QApplication::doubleClickInterval()) + dblClckCounter = 0; + if (!dblClckCounter) + dblClckTime.start(); } else if (mouse->type() == QEvent::MouseButtonRelease) { effects->defineCursor(Qt::OpenHandCursor); - if (mouse->button() == Qt::XButton1) { + if (mouse->button() == Qt::LeftButton && ++dblClckCounter == 2) { + dblClckCounter = 0; + if (dblClckTime.elapsed() < QApplication::doubleClickInterval()) { + setActive(false); + return; + } + } + else if (mouse->button() == Qt::XButton1) { if (!rotating && !start) { rotating = true; if (invertMouse) From ac32664dc1356189d6a40923ecb2a6c392b0d9b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 17 Jul 2013 15:44:42 +0200 Subject: [PATCH 083/108] keep buffer swap pref automatic until GPU detected enforce to "e" (cheap) when driver is still unknown after detection must be assumed to have run, so a sane value is available when the context is up BUG: 322355 FIXED-IN: 4.11 REVIEW: 111548 --- eglonxbackend.cpp | 3 +++ glxbackend.cpp | 3 +++ options.cpp | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/eglonxbackend.cpp b/eglonxbackend.cpp index 86c763eb08..9af3c0d507 100644 --- a/eglonxbackend.cpp +++ b/eglonxbackend.cpp @@ -74,6 +74,9 @@ void EglOnXBackend::init() glPlatform->detect(EglPlatformInterface); if (GLPlatform::instance()->driver() == Driver_Intel) options->setUnredirectFullscreen(false); // bug #252817 + options->setGlPreferBufferSwap(options->glPreferBufferSwap()); // resolve autosetting + if (options->glPreferBufferSwap() == Options::AutoSwapStrategy) + options->setGlPreferBufferSwap('e'); // for unknown drivers - should not happen glPlatform->printResults(); initGL(EglPlatformInterface); if (!hasGLExtension("GL_OES_EGL_image")) { diff --git a/glxbackend.cpp b/glxbackend.cpp index 7f2449cfe4..11f7017bf5 100644 --- a/glxbackend.cpp +++ b/glxbackend.cpp @@ -97,6 +97,9 @@ void GlxBackend::init() glPlatform->detect(GlxPlatformInterface); if (GLPlatform::instance()->driver() == Driver_Intel) options->setUnredirectFullscreen(false); // bug #252817 + options->setGlPreferBufferSwap(options->glPreferBufferSwap()); // resolve autosetting + if (options->glPreferBufferSwap() == Options::AutoSwapStrategy) + options->setGlPreferBufferSwap('e'); // for unknown drivers - should not happen glPlatform->printResults(); initGL(GlxPlatformInterface); // Check whether certain features are supported diff --git a/options.cpp b/options.cpp index cd3931cd8d..8f6a21f474 100644 --- a/options.cpp +++ b/options.cpp @@ -767,7 +767,7 @@ void Options::setGlPreferBufferSwap(char glPreferBufferSwap) // see http://www.x.org/releases/X11R7.7/doc/dri2proto/dri2proto.txt, item 2.5 if (GLPlatform::instance()->driver() == Driver_NVidia) glPreferBufferSwap = CopyFrontBuffer; - else + else if (GLPlatform::instance()->driver() != Driver_Unknown) // undetected, finally resolved when context is initialized glPreferBufferSwap = ExtendDamage; } if (m_glPreferBufferSwap == (GlSwapStrategy)glPreferBufferSwap) { From 6c420f2b11c4631f8be05ab185e5af554161ebd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sat, 27 Jul 2013 13:09:07 +0200 Subject: [PATCH 084/108] don't require geometry changes for quick max/tile the present check can break quick everything depending on screen snapping settings. It so far. only worked for quick maximization due to horizontal "judder" and failed whenever that judder was not possible (due to screen snapping on left and/or right edge) BUG: 322852 FIXED-IN: 4.11 REVIEW: 111740 --- events.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/events.cpp b/events.cpp index 3fa04f861e..904811864b 100644 --- a/events.cpp +++ b/events.cpp @@ -1256,15 +1256,15 @@ bool Client::motionNotifyEvent(xcb_window_t w, int state, int x, int y, int x_ro if (!waitingMotionEvent()) { QRect oldGeo = geometry(); handleMoveResize(x, y, x_root, y_root); - if (!isFullScreen() && isMove() && oldGeo != geometry()) { - if (quick_tile_mode != QuickTileNone) { + if (!isFullScreen() && isMove()) { + if (quick_tile_mode != QuickTileNone && oldGeo != geometry()) { GeometryUpdatesBlocker blocker(this); setQuickTileMode(QuickTileNone); moveOffset = QPoint(double(moveOffset.x()) / double(oldGeo.width()) * double(geom_restore.width()), double(moveOffset.y()) / double(oldGeo.height()) * double(geom_restore.height())); moveResizeGeom = geom_restore; handleMoveResize(x, y, x_root, y_root); // fix position - } else if (isResizable()) { + } else if (quick_tile_mode == QuickTileNone && isResizable()) { checkQuickTilingMaximizationZones(x_root, y_root); } } From 90615561e4571e968dfcb87fdba4694bf0d75c13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 31 Jul 2013 12:14:13 +0200 Subject: [PATCH 085/108] desk-grid: bind sc editor keyChange to kcm changed BUG: 316177 FIXED-IN: 4.11 REVIEW: 111812 --- effects/desktopgrid/desktopgrid_config.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/effects/desktopgrid/desktopgrid_config.cpp b/effects/desktopgrid/desktopgrid_config.cpp index 45fd205fd9..a3ba77a0ee 100644 --- a/effects/desktopgrid/desktopgrid_config.cpp +++ b/effects/desktopgrid/desktopgrid_config.cpp @@ -77,6 +77,7 @@ DesktopGridEffectConfig::DesktopGridEffectConfig(QWidget* parent, const QVariant addConfig(DesktopGridConfig::self(), m_ui); connect(m_ui->kcfg_LayoutMode, SIGNAL(currentIndexChanged(int)), this, SLOT(layoutSelectionChanged())); connect(m_ui->desktopNameAlignmentCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changed())); + connect(m_ui->shortcutEditor, SIGNAL(keyChange()), this, SLOT(changed())); load(); layoutSelectionChanged(); From ca6b7653c0cf71c833ea919b9998e80f49473ee5 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 3 Aug 2013 04:00:09 +0000 Subject: [PATCH 086/108] SVN_SILENT made messages (.desktop file) --- effects/coverswitch/coverswitch.desktop | 2 +- effects/coverswitch/coverswitch_config.desktop | 2 +- effects/flipswitch/flipswitch.desktop | 2 +- effects/flipswitch/flipswitch_config.desktop | 2 +- effects/resize/resize.desktop | 4 ++-- effects/resize/resize_config.desktop | 2 +- effects/windowgeometry/windowgeometry.desktop | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/effects/coverswitch/coverswitch.desktop b/effects/coverswitch/coverswitch.desktop index ca01e16781..4d7a44db2e 100644 --- a/effects/coverswitch/coverswitch.desktop +++ b/effects/coverswitch/coverswitch.desktop @@ -20,7 +20,7 @@ Name[fi]=Levykansivaihtaja Name[fr]=Défilement circulaire Name[fy]=Foarplaat wiksel Name[ga]=Cover Switch -Name[gl]=Mudanza en capas +Name[gl]=Cambio en capas Name[gu]=ફેરફાર ઢાંકો Name[he]=מחליף דפדוף בין תקליטים Name[hi]=कवर स्विच diff --git a/effects/coverswitch/coverswitch_config.desktop b/effects/coverswitch/coverswitch_config.desktop index 80ed9c62ec..c6bb6f904d 100644 --- a/effects/coverswitch/coverswitch_config.desktop +++ b/effects/coverswitch/coverswitch_config.desktop @@ -27,7 +27,7 @@ Name[fi]=Levykansivaihtaja Name[fr]=Défilement circulaire Name[fy]=Foarplaat wiksel Name[ga]=Cover Switch -Name[gl]=Mudanza en capas +Name[gl]=Cambio en capas Name[gu]=ફેરફાર ઢાંકો Name[he]=מחליף דפדוף בין תקליטים Name[hi]=कवर स्विच diff --git a/effects/flipswitch/flipswitch.desktop b/effects/flipswitch/flipswitch.desktop index d863ccc02e..ace583bbf7 100644 --- a/effects/flipswitch/flipswitch.desktop +++ b/effects/flipswitch/flipswitch.desktop @@ -19,7 +19,7 @@ Name[fi]=Kääntövaihtaja Name[fr]=Empilement en perspective Name[fy]=Flip wiksel Name[ga]=Flip Switch -Name[gl]=Mudanza en fila +Name[gl]=Cambio en fila Name[gu]=ફ્લિપ સ્વિચ Name[he]=מחליף ערמה Name[hi]=स्विच बदलें diff --git a/effects/flipswitch/flipswitch_config.desktop b/effects/flipswitch/flipswitch_config.desktop index b6835b326e..8238ab4d8f 100644 --- a/effects/flipswitch/flipswitch_config.desktop +++ b/effects/flipswitch/flipswitch_config.desktop @@ -26,7 +26,7 @@ Name[fi]=Kääntövaihtaja Name[fr]=Empilement en perspective Name[fy]=Flip wiksel Name[ga]=Flip Switch -Name[gl]=Mudanza en fila +Name[gl]=Cambio en fila Name[gu]=ફ્લિપ સ્વિચ Name[he]=מחליף ערמה Name[hi]=स्विच बदलें diff --git a/effects/resize/resize.desktop b/effects/resize/resize.desktop index 3a849ad8d6..c75772973e 100644 --- a/effects/resize/resize.desktop +++ b/effects/resize/resize.desktop @@ -21,7 +21,7 @@ Name[fi]=Ikkunan koon muuttaminen Name[fr]=Redimensionner la fenêtre Name[fy]=Finstergrutte feroarje Name[ga]=Athraigh Méid na Fuinneoige -Name[gl]=Mudar o tamaño da xanela +Name[gl]=Cambiar o tamaño da xanela Name[gu]=વિન્ડોનું માપ બદલો Name[he]=שינוי גודל חלון Name[hi]=विंडो आकार बदलें @@ -84,7 +84,7 @@ Comment[et]=Akende suuruse muutmine kiire tekstuuri skaleerimisega sisu uuendami Comment[eu]=Leihoen neurria aldatzen du testura eskalatze azkar batekin edukia eguneratu ordez Comment[fi]=Käyttää ikkunan kokoa muutettaessa nopeaa tekstuurin skaalausta sisällön päivittämisen sijaan Comment[fr]=Redimensionne les fenêtres à l'aide d'une échelle texturée rapide au lieu de mettre à jour les contenus -Comment[gl]=Muda o tamaño das xanelas escalando cunha textura rápida no canto de actualizar o contido +Comment[gl]=Cambia o tamaño das xanelas escalando cunha textura rápida no canto de actualizar o contido Comment[he]=שינוי גודל החלון על־ידי שינוי מהיר של גודל המבנה במקום לעדכן את התוכן Comment[hr]=Mijenja veličinu prozora brzim skaliranjem teksture umjesto ažuriranjem sadržaja Comment[hu]=Gyors textúraskálázással méretezi át az ablakokat a tartalom frissítése helyett diff --git a/effects/resize/resize_config.desktop b/effects/resize/resize_config.desktop index 647e6832e0..6fec3aa08d 100644 --- a/effects/resize/resize_config.desktop +++ b/effects/resize/resize_config.desktop @@ -28,7 +28,7 @@ Name[fi]=Ikkunan koon muuttaminen Name[fr]=Redimensionner la fenêtre Name[fy]=Finstergrutte feroarje Name[ga]=Athraigh Méid na Fuinneoige -Name[gl]=Mudar o tamaño da xanela +Name[gl]=Cambiar o tamaño da xanela Name[gu]=વિન્ડોનું માપ બદલો Name[he]=שינוי גודל חלון Name[hi]=विंडो आकार बदलें diff --git a/effects/windowgeometry/windowgeometry.desktop b/effects/windowgeometry/windowgeometry.desktop index 7c75a7a2e2..2f6fd9e95d 100644 --- a/effects/windowgeometry/windowgeometry.desktop +++ b/effects/windowgeometry/windowgeometry.desktop @@ -69,7 +69,7 @@ Comment[et]=Akende geomeetria kuvamine liigutamisel või suuruse muutmisel Comment[eu]=Bistaratu leiho geometriak mugitu edo neurri aldatzerakoan Comment[fi]=Näytä ikkunan mitat, kun sitä liikutetaan tai sen kokoa muutetaan Comment[fr]=Affiche la géométrie de la fenêtre pendant son déplacement ou son redimensionnement -Comment[gl]=Mostra a xeometría da xanela ao mover ou mudar o tamaño +Comment[gl]=Mostra a xeometría da xanela ao mover ou cambiar o tamaño Comment[he]=מציג גדלי החלון בהזזתו או בשינוי גודלו Comment[hr]=Prikaži geometriju prozora pri micanju i mijenjanju veličine Comment[hu]=Megjeleníti az ablakméretet mozgatás és átméretezés közben From ba0be05c78c0b6c678a6ca8ec1391217b1629611 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sun, 4 Aug 2013 04:29:45 +0000 Subject: [PATCH 087/108] SVN_SILENT made messages (.desktop file) --- effects/logout/logout.desktop | 2 +- effects/magnifier/magnifier.desktop | 2 +- effects/magnifier/magnifier_config.desktop | 2 +- effects/maximize/package/metadata.desktop | 1 + effects/screenedge/screenedgeeffect.desktop | 1 + effects/screenshot/screenshot.desktop | 2 +- kcmkwin/kwincompositing/kwincompositing.desktop | 2 +- scripting/kwinscript.desktop | 1 + tabbox/qml/clients/big_icons/metadata.desktop | 1 + tabbox/qml/clients/compact/metadata.desktop | 1 + tabbox/qml/clients/informative/metadata.desktop | 1 + tabbox/qml/clients/present_windows/metadata.desktop | 1 + tabbox/qml/clients/small_icons/metadata.desktop | 1 + tabbox/qml/clients/thumbnails/metadata.desktop | 1 + tabbox/qml/desktops/informative/metadata.desktop | 1 + tabbox/qml/desktops/previews/metadata.desktop | 1 + 16 files changed, 16 insertions(+), 5 deletions(-) diff --git a/effects/logout/logout.desktop b/effects/logout/logout.desktop index f4620097b3..28df6fa625 100644 --- a/effects/logout/logout.desktop +++ b/effects/logout/logout.desktop @@ -76,7 +76,7 @@ Name[te]=లాగ్అవుట్ Name[tg]=Баромадан Name[th]=ลงบันทึกออกจากระบบ Name[tr]=Çıkış -Name[ug]=تىزىمدىن چىىش +Name[ug]=تىزىمدىن چىقىش Name[uk]=Вихід Name[uz]=Chiqish Name[uz@cyrillic]=Чиқиш diff --git a/effects/magnifier/magnifier.desktop b/effects/magnifier/magnifier.desktop index 9871a331cc..7624e8bbec 100644 --- a/effects/magnifier/magnifier.desktop +++ b/effects/magnifier/magnifier.desktop @@ -74,7 +74,7 @@ Name[te]=మాగ్నిఫైర్ Name[tg]=Увеличитель Name[th]=แว่นขยาย Name[tr]=Büyüteç -Name[ug]=لوپا ئەينەك +Name[ug]=چوڭايتقۇچ Name[uk]=Лупа Name[uz]=Kattalashtiruvchi Name[uz@cyrillic]=Катталаштирувчи diff --git a/effects/magnifier/magnifier_config.desktop b/effects/magnifier/magnifier_config.desktop index cc1517079e..e30a3c6258 100644 --- a/effects/magnifier/magnifier_config.desktop +++ b/effects/magnifier/magnifier_config.desktop @@ -81,7 +81,7 @@ Name[te]=మాగ్నిఫైర్ Name[tg]=Увеличитель Name[th]=แว่นขยาย Name[tr]=Büyüteç -Name[ug]=لوپا ئەينەك +Name[ug]=چوڭايتقۇچ Name[uk]=Лупа Name[uz]=Kattalashtiruvchi Name[uz@cyrillic]=Катталаштирувчи diff --git a/effects/maximize/package/metadata.desktop b/effects/maximize/package/metadata.desktop index 82fb1f339b..e74d6c0f12 100644 --- a/effects/maximize/package/metadata.desktop +++ b/effects/maximize/package/metadata.desktop @@ -78,6 +78,7 @@ Name[sr@ijekavianlatin]=Maksimizovanje Name[sr@latin]=Maksimizovanje Name[sv]=Maximera Name[tr]=Ekranı Kapla +Name[ug]=چوڭايت Name[uk]=Максимізація Name[x-test]=xxMaximizexx Name[zh_CN]=最大化效果 diff --git a/effects/screenedge/screenedgeeffect.desktop b/effects/screenedge/screenedgeeffect.desktop index 1cd9634585..87ebd7f3aa 100644 --- a/effects/screenedge/screenedgeeffect.desktop +++ b/effects/screenedge/screenedgeeffect.desktop @@ -32,6 +32,7 @@ Name[sr@ijekavianlatin]=Ivica ekrana Name[sr@latin]=Ivica ekrana Name[sv]=Skärmkant Name[tr]=Ekran Kenarı +Name[ug]=ئېكران گىرۋىكى Name[uk]=Край екрана Name[x-test]=xxScreen Edgexx Name[zh_CN]=屏幕边缘 diff --git a/effects/screenshot/screenshot.desktop b/effects/screenshot/screenshot.desktop index d1094f9719..06c25caab8 100644 --- a/effects/screenshot/screenshot.desktop +++ b/effects/screenshot/screenshot.desktop @@ -54,7 +54,7 @@ Name[sv]=Skärmbild Name[tg]=Сурати экран Name[th]=จับภาพหน้าจอ Name[tr]=Ekran Görüntüsü -Name[ug]=ئېكران كەسمىسى +Name[ug]=ئېكران كۆرۈنۈشى Name[uk]=Знімок вікна Name[wa]=Waitroûlêye Name[x-test]=xxScreenshotxx diff --git a/kcmkwin/kwincompositing/kwincompositing.desktop b/kcmkwin/kwincompositing/kwincompositing.desktop index 84764231db..7654edfd8c 100644 --- a/kcmkwin/kwincompositing/kwincompositing.desktop +++ b/kcmkwin/kwincompositing/kwincompositing.desktop @@ -87,7 +87,7 @@ Name[te]=డెస్‍క్ టాప్ ప్రభావాలు Name[tg]=Воситаҳои мизи корӣ Name[th]=ลูกเล่นของพื้นที่ทำงาน Name[tr]=Masaüstü Efektleri -Name[ug]=ئۈستەلئۈستى ئۈنۈملەر +Name[ug]=ئۈستەلئۈستى ئۈنۈملىرى Name[uk]=Ефекти стільниці Name[uz]=Ish stoli effektlari Name[uz@cyrillic]=Иш столи эффектлари diff --git a/scripting/kwinscript.desktop b/scripting/kwinscript.desktop index fa0edd7d60..795fc3bcfe 100644 --- a/scripting/kwinscript.desktop +++ b/scripting/kwinscript.desktop @@ -41,6 +41,7 @@ Comment[sr@ijekavianlatin]=KWinova skripta Comment[sr@latin]=KWinova skripta Comment[sv]=Kwin-skript Comment[tr]=KWin Betiği +Comment[ug]=KWin قوليازما Comment[uk]=Скрипт KWin Comment[vi]=Tập lệnh KWin Comment[x-test]=xxKWin Scriptxx diff --git a/tabbox/qml/clients/big_icons/metadata.desktop b/tabbox/qml/clients/big_icons/metadata.desktop index 1058787b64..1f612305e7 100644 --- a/tabbox/qml/clients/big_icons/metadata.desktop +++ b/tabbox/qml/clients/big_icons/metadata.desktop @@ -38,6 +38,7 @@ Name[sr@ijekavianlatin]=Velike ikone Name[sr@latin]=Velike ikone Name[sv]=Stora ikoner Name[tr]=Büyük Simgeler +Name[ug]=چوڭ سىنبەلگە Name[uk]=Великі піктограми Name[vi]=Biểu tượng lớn Name[x-test]=xxLarge Iconsxx diff --git a/tabbox/qml/clients/compact/metadata.desktop b/tabbox/qml/clients/compact/metadata.desktop index 15d490f668..42c237312a 100644 --- a/tabbox/qml/clients/compact/metadata.desktop +++ b/tabbox/qml/clients/compact/metadata.desktop @@ -38,6 +38,7 @@ Name[sr@ijekavianlatin]=Sažeto Name[sr@latin]=Sažeto Name[sv]=Kompakt Name[tr]=Sıkışık +Name[ug]=ئىخچام Name[uk]=Компактне Name[vi]=Gọn Name[x-test]=xxCompactxx diff --git a/tabbox/qml/clients/informative/metadata.desktop b/tabbox/qml/clients/informative/metadata.desktop index 791294dd2d..30bfcb154d 100644 --- a/tabbox/qml/clients/informative/metadata.desktop +++ b/tabbox/qml/clients/informative/metadata.desktop @@ -38,6 +38,7 @@ Name[sr@ijekavianlatin]=Informativno Name[sr@latin]=Informativno Name[sv]=Informativ Name[tr]=Bilgilendirici +Name[ug]=مول ئۇچۇرلۇق Name[uk]=Інформативне Name[vi]=Thông tin Name[x-test]=xxInformativexx diff --git a/tabbox/qml/clients/present_windows/metadata.desktop b/tabbox/qml/clients/present_windows/metadata.desktop index c338414def..60fa982a4a 100644 --- a/tabbox/qml/clients/present_windows/metadata.desktop +++ b/tabbox/qml/clients/present_windows/metadata.desktop @@ -39,6 +39,7 @@ Name[sr@ijekavianlatin]=Mreža Name[sr@latin]=Mreža Name[sv]=Rutnät Name[tr]=Izgara +Name[ug]=سېتكا Name[uk]=Ґратка Name[vi]=Lưới Name[x-test]=xxGridxx diff --git a/tabbox/qml/clients/small_icons/metadata.desktop b/tabbox/qml/clients/small_icons/metadata.desktop index 96e785e49b..04ffe45a83 100644 --- a/tabbox/qml/clients/small_icons/metadata.desktop +++ b/tabbox/qml/clients/small_icons/metadata.desktop @@ -38,6 +38,7 @@ Name[sr@ijekavianlatin]=Male ikone Name[sr@latin]=Male ikone Name[sv]=Små ikoner Name[tr]=Küçük Simgeler +Name[ug]=كىچىك سىنبەلگە Name[uk]=Малі піктограми Name[x-test]=xxSmall Iconsxx Name[zh_CN]=小图标 diff --git a/tabbox/qml/clients/thumbnails/metadata.desktop b/tabbox/qml/clients/thumbnails/metadata.desktop index 91637ebea5..edd42606bc 100644 --- a/tabbox/qml/clients/thumbnails/metadata.desktop +++ b/tabbox/qml/clients/thumbnails/metadata.desktop @@ -37,6 +37,7 @@ Name[sr@ijekavianlatin]=Sličice Name[sr@latin]=Sličice Name[sv]=Miniatyrbilder Name[tr]=Küçük Resimler +Name[ug]=كىچىك سۈرەت Name[uk]=Мініатюри Name[x-test]=xxThumbnailsxx Name[zh_CN]=缩略图 diff --git a/tabbox/qml/desktops/informative/metadata.desktop b/tabbox/qml/desktops/informative/metadata.desktop index f99da982da..cf0548b428 100644 --- a/tabbox/qml/desktops/informative/metadata.desktop +++ b/tabbox/qml/desktops/informative/metadata.desktop @@ -38,6 +38,7 @@ Name[sr@ijekavianlatin]=Informativno Name[sr@latin]=Informativno Name[sv]=Informativ Name[tr]=Bilgilendirici +Name[ug]=مول ئۇچۇرلۇق Name[uk]=Інформативне Name[vi]=Thông tin Name[x-test]=xxInformativexx diff --git a/tabbox/qml/desktops/previews/metadata.desktop b/tabbox/qml/desktops/previews/metadata.desktop index c9e7cf9e09..aec9d78f10 100644 --- a/tabbox/qml/desktops/previews/metadata.desktop +++ b/tabbox/qml/desktops/previews/metadata.desktop @@ -30,6 +30,7 @@ Name[sr@ijekavianlatin]=Pregledi Name[sr@latin]=Pregledi Name[sv]=Förhandsgranskningar Name[tr]=Önizlemeler +Name[ug]=ئالدىن كۆزەت Name[uk]=Ескізи Name[x-test]=xxPreviewsxx Name[zh_CN]=预览 From 30aac961f045ad16e7b7bdd2c256817409e0f416 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Mon, 5 Aug 2013 04:16:04 +0000 Subject: [PATCH 088/108] SVN_SILENT made messages (.desktop file) --- effects/slideback/slideback.desktop | 1 + kcmkwin/kwinoptions/kwinactions.desktop | 1 + kwin.notifyrc | 2 ++ tabbox/qml/desktops/previews/metadata.desktop | 1 + 4 files changed, 5 insertions(+) diff --git a/effects/slideback/slideback.desktop b/effects/slideback/slideback.desktop index a9a0530368..1de2308d9a 100644 --- a/effects/slideback/slideback.desktop +++ b/effects/slideback/slideback.desktop @@ -78,6 +78,7 @@ Comment[es]=Desliza las ventanas atrás cuando una ventana pasa a primer plano Comment[fi]=Ikkunaa nostettaessa liu’uttaa muut ikkunat sen taakse Comment[fr]=Faire glisser en arrière les fenêtres lors de l'apparition d'une autre fenêtre Comment[gl]=Despraza cara atrás as xanelas cando outra se eleva +Comment[hu]=Ablakok visszacsúsztatása másik ablak előtérbe hozásakor Comment[ia]=Glissa retro fenestras quando un altere fenestra es elevate Comment[it]=Fai scivolare indietro le altre finestre quando una nuova finestra appare Comment[kk]=Басқа терезе алдына шығарылғанда терезелерді сырғанату. diff --git a/kcmkwin/kwinoptions/kwinactions.desktop b/kcmkwin/kwinoptions/kwinactions.desktop index 800c56c666..a75df6076a 100644 --- a/kcmkwin/kwinoptions/kwinactions.desktop +++ b/kcmkwin/kwinoptions/kwinactions.desktop @@ -110,6 +110,7 @@ Comment[es]=Configurar las acciones del ratón sobre las ventanas Comment[fi]=Ikkunoiden hiiritoimintojen asetukset Comment[fr]=Configurer les actions de souris pour les fenêtres Comment[gl]=Configura a accións do rato nas xanelas +Comment[hu]=Egérműveletek beállítása az ablakokon Comment[ia]=Configura actiones de mus sur fenestras Comment[it]=Configura le azioni del mouse sulla finestra Comment[kk]=Терезелердегі тышқанның әрекеттерін баптау diff --git a/kwin.notifyrc b/kwin.notifyrc index 5cb2883601..ed56672f68 100644 --- a/kwin.notifyrc +++ b/kwin.notifyrc @@ -205,6 +205,7 @@ Name[es]=Reinicio gráfico Name[fi]=Grafiikan nollaus Name[fr]=Réinitialisation graphique Name[gl]=Reinicio dos gráficos +Name[hu]=Grafikai visszaállítás Name[ia]=Reinitia Graphic Name[it]=Azzeramento grafica Name[kk]=Графиканы ысыру @@ -236,6 +237,7 @@ Comment[es]=Ha ocurrido un evento de reinicio gráfico Comment[fi]=Sattui grafiikan nollaustapahtuma Comment[fr]=Un évènement de réinitialisation graphique est intervenu Comment[gl]=Aconteceu un reinicio de gráficos +Comment[hu]=Egy grafikai visszaállítás esemény történt Comment[ia]=Il necessita un evento de reinitiar le graphic Comment[it]=Si è verificato un evento di azzeramento della grafica Comment[kk]=Графиканы ысыру оқиғасы болды diff --git a/tabbox/qml/desktops/previews/metadata.desktop b/tabbox/qml/desktops/previews/metadata.desktop index aec9d78f10..65af2c9176 100644 --- a/tabbox/qml/desktops/previews/metadata.desktop +++ b/tabbox/qml/desktops/previews/metadata.desktop @@ -44,6 +44,7 @@ Comment[es]=Un esquema del cambiador de escritorios con vistas previas de los es Comment[fi]=Työpöydänvalitsimen asettelu, jossa on esikatselut työpöydistä Comment[fr]=Une disposition de sélecteur de bureaux avec des aperçus de bureaux Comment[gl]=Unha disposición do selector de escritorios con vistas previas deles +Comment[hu]=Egy asztalváltó elrendezés az asztalok előnézetével Comment[ia]=Un disposition de commutator de scriptorio con vistas preliminar de scriptorios Comment[it]=Una disposizione con anteprima dello scambiafinestre Comment[kk]=Үстелдер нобайларын көрсететін үстел ауыстырғышының қалыпы From 71a4814f4c9823b2436de793cd3ffdcd76132b56 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Mon, 5 Aug 2013 06:54:55 +0000 Subject: [PATCH 089/108] SVN_SILENT made messages (.desktop file) --- effects/slideback/slideback.desktop | 1 + kcmkwin/kwinoptions/kwinactions.desktop | 1 + kwin.notifyrc | 2 ++ tabbox/qml/desktops/previews/metadata.desktop | 1 + 4 files changed, 5 insertions(+) diff --git a/effects/slideback/slideback.desktop b/effects/slideback/slideback.desktop index a9a0530368..1de2308d9a 100644 --- a/effects/slideback/slideback.desktop +++ b/effects/slideback/slideback.desktop @@ -78,6 +78,7 @@ Comment[es]=Desliza las ventanas atrás cuando una ventana pasa a primer plano Comment[fi]=Ikkunaa nostettaessa liu’uttaa muut ikkunat sen taakse Comment[fr]=Faire glisser en arrière les fenêtres lors de l'apparition d'une autre fenêtre Comment[gl]=Despraza cara atrás as xanelas cando outra se eleva +Comment[hu]=Ablakok visszacsúsztatása másik ablak előtérbe hozásakor Comment[ia]=Glissa retro fenestras quando un altere fenestra es elevate Comment[it]=Fai scivolare indietro le altre finestre quando una nuova finestra appare Comment[kk]=Басқа терезе алдына шығарылғанда терезелерді сырғанату. diff --git a/kcmkwin/kwinoptions/kwinactions.desktop b/kcmkwin/kwinoptions/kwinactions.desktop index 800c56c666..a75df6076a 100644 --- a/kcmkwin/kwinoptions/kwinactions.desktop +++ b/kcmkwin/kwinoptions/kwinactions.desktop @@ -110,6 +110,7 @@ Comment[es]=Configurar las acciones del ratón sobre las ventanas Comment[fi]=Ikkunoiden hiiritoimintojen asetukset Comment[fr]=Configurer les actions de souris pour les fenêtres Comment[gl]=Configura a accións do rato nas xanelas +Comment[hu]=Egérműveletek beállítása az ablakokon Comment[ia]=Configura actiones de mus sur fenestras Comment[it]=Configura le azioni del mouse sulla finestra Comment[kk]=Терезелердегі тышқанның әрекеттерін баптау diff --git a/kwin.notifyrc b/kwin.notifyrc index 5cb2883601..ed56672f68 100644 --- a/kwin.notifyrc +++ b/kwin.notifyrc @@ -205,6 +205,7 @@ Name[es]=Reinicio gráfico Name[fi]=Grafiikan nollaus Name[fr]=Réinitialisation graphique Name[gl]=Reinicio dos gráficos +Name[hu]=Grafikai visszaállítás Name[ia]=Reinitia Graphic Name[it]=Azzeramento grafica Name[kk]=Графиканы ысыру @@ -236,6 +237,7 @@ Comment[es]=Ha ocurrido un evento de reinicio gráfico Comment[fi]=Sattui grafiikan nollaustapahtuma Comment[fr]=Un évènement de réinitialisation graphique est intervenu Comment[gl]=Aconteceu un reinicio de gráficos +Comment[hu]=Egy grafikai visszaállítás esemény történt Comment[ia]=Il necessita un evento de reinitiar le graphic Comment[it]=Si è verificato un evento di azzeramento della grafica Comment[kk]=Графиканы ысыру оқиғасы болды diff --git a/tabbox/qml/desktops/previews/metadata.desktop b/tabbox/qml/desktops/previews/metadata.desktop index c9e7cf9e09..f96beb02d0 100644 --- a/tabbox/qml/desktops/previews/metadata.desktop +++ b/tabbox/qml/desktops/previews/metadata.desktop @@ -43,6 +43,7 @@ Comment[es]=Un esquema del cambiador de escritorios con vistas previas de los es Comment[fi]=Työpöydänvalitsimen asettelu, jossa on esikatselut työpöydistä Comment[fr]=Une disposition de sélecteur de bureaux avec des aperçus de bureaux Comment[gl]=Unha disposición do selector de escritorios con vistas previas deles +Comment[hu]=Egy asztalváltó elrendezés az asztalok előnézetével Comment[ia]=Un disposition de commutator de scriptorio con vistas preliminar de scriptorios Comment[it]=Una disposizione con anteprima dello scambiafinestre Comment[kk]=Үстелдер нобайларын көрсететін үстел ауыстырғышының қалыпы From 3c593f4357e75c31695baa5ac74d8f9102b9bef4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sat, 3 Aug 2013 16:17:57 +0200 Subject: [PATCH 090/108] remove nvidiahack lib 1. it apparently is ineffective 2. if it was effective, it's current behavior would be not exactly helpful (sets __GL_YIELD to NOTHING, causing busy waits on doublebuffer swapping) 3. it does for sure pollute the doublebuffer/usleep detection (setenv is set to override), ie. the overehad detection code gets a different opinion on __GL_YIELD than libGL REVIEW: 111858 CCBUG: 322060 --- CMakeLists.txt | 14 -------------- nvidiahack.cpp | 52 -------------------------------------------------- 2 files changed, 66 deletions(-) delete mode 100644 nvidiahack.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d9cae32a5..1e78bfcf82 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -313,8 +313,6 @@ if(OPENGL_FOUND) if (DL_LIBRARY) target_link_libraries(kdeinit_kwin ${DL_LIBRARY}) endif() - # must be after opengl, to be initialized first by the linker - target_link_libraries(kdeinit_kwin kwinnvidiahack) elseif(OPENGLES_FOUND) target_link_libraries(kdeinit_kwin ${kwinLibs} kwinglesutils ${OPENGLES_LIBRARIES}) set_target_properties(kdeinit_kwin PROPERTIES COMPILE_FLAGS "-DKWIN_HAVE_OPENGLES") @@ -333,18 +331,6 @@ if(OPENGLES_FOUND) install(TARGETS kwin_gles ${INSTALL_TARGETS_DEFAULT_ARGS} ) endif() -########### next target ############### - -set( kwinnvidiahack_LIB_SRCS - nvidiahack.cpp ) - - -kde4_add_library(kwinnvidiahack SHARED ${kwinnvidiahack_LIB_SRCS}) - -set_target_properties(kwinnvidiahack PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} ) -set_target_properties(kwinnvidiahack PROPERTIES OUTPUT_NAME ${KWIN_NAME}nvidiahack) -install(TARGETS kwinnvidiahack ${INSTALL_TARGETS_DEFAULT_ARGS} LIBRARY NAMELINK_SKIP) - ########### install files ############### install( FILES kwin.kcfg DESTINATION ${KCFG_INSTALL_DIR} RENAME ${KWIN_NAME}.kcfg ) diff --git a/nvidiahack.cpp b/nvidiahack.cpp deleted file mode 100644 index fe5737acda..0000000000 --- a/nvidiahack.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************** - KWin - the KDE window manager - This file is part of the KDE project. - -Copyright (C) 2007 Lubos Lunak - -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 . -*********************************************************************/ - -// krazy:skip - -/* - - The only purpose of this file is to be later in the link order than - (nvidia's) libGL, thus being initialized by the dynamic linker before it, - allowing it to set __GL_YIELD=NOTHING soon enough for libGL to notice it. - -*/ - -#include -#include - -class kwinnvidiahack -{ -public: - kwinnvidiahack(); -}; - -kwinnvidiahack::kwinnvidiahack() -{ - const char* env = getenv("KWIN_NVIDIA_HACK"); -#if 1 // turned on by default - if (env == NULL || env[ 0 ] != '0') - setenv("__GL_YIELD", "NOTHING", true); -#else // turned off by default - if (env != NULL && env[ 0 ] != '0') - setenv("__GL_YIELD", "NOTHING", true); -#endif -} - -kwinnvidiahack kwinnvidiahackinst; From 93ef0226bae8d651d01b34cc1c5057fd9a919145 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sun, 23 Jun 2013 13:43:36 +0200 Subject: [PATCH 091/108] add configRequest rule update REVIEW: 111193 --- data/CMakeLists.txt | 4 ++-- data/kwin_translate_confrequest_rule.sh | 14 ++++++++++++++ data/kwin_translate_confrequest_rule.upd | 2 ++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100755 data/kwin_translate_confrequest_rule.sh create mode 100644 data/kwin_translate_confrequest_rule.upd diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 322c27d750..4a7f97a2e5 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -59,9 +59,9 @@ install( TARGETS kwin_update_settings_411 DESTINATION ${LIB_INSTALL_DIR}/kconf_u install( FILES fsp_workarounds_1.kwinrules DESTINATION ${DATA_INSTALL_DIR}/kwin/default_rules ) install( FILES pop.wav DESTINATION ${SOUND_INSTALL_DIR} ) -install( FILES kwin_fsp_workarounds_1.upd kwin_update_tabbox_settings.upd kwin_remove_effects.upd kwin_update_tabbox_qml_settings.upd kwin_remove_delay_focus.upd kwin_update_49.upd kwin_update_410.upd kwin_translate_activity_rule.upd +install( FILES kwin_fsp_workarounds_1.upd kwin_update_tabbox_settings.upd kwin_remove_effects.upd kwin_update_tabbox_qml_settings.upd kwin_remove_delay_focus.upd kwin_update_49.upd kwin_update_410.upd kwin_translate_activity_rule.upd kwin_translate_confrequest_rule.upd kwin_update_411.upd DESTINATION ${KCONF_UPDATE_INSTALL_DIR} ) -install( PROGRAMS kwin_remove_delay_focus.sh kwin_translate_activity_rule.sh DESTINATION ${KCONF_UPDATE_INSTALL_DIR} ) +install( PROGRAMS kwin_remove_delay_focus.sh kwin_translate_activity_rule.sh kwin_translate_confrequest_rule.sh DESTINATION ${KCONF_UPDATE_INSTALL_DIR} ) install( FILES stripTitle.js DESTINATION ${DATA_INSTALL_DIR}/kwin ) diff --git a/data/kwin_translate_confrequest_rule.sh b/data/kwin_translate_confrequest_rule.sh new file mode 100755 index 0000000000..62587a4e93 --- /dev/null +++ b/data/kwin_translate_confrequest_rule.sh @@ -0,0 +1,14 @@ +#!/bin/sh +COUNT=`kreadconfig --file kwinrulesrc --group General --key count` +if [ -z "$COUNT" ]; then + exit 0 # nothing to do for us +fi + +# can you imaging how *much* faster sed is? +# it's however less reliable (installation, ini config, etc.) + +for i in `seq 1 $COUNT`; do + if [ "`kreadconfig --file kwinrulesrc --group $i --key ignoregeometryrule`" = "2" ]; then + kwriteconfig --file kwinrulesrc --group $i --key ignoregeometryrule "3" + fi +done \ No newline at end of file diff --git a/data/kwin_translate_confrequest_rule.upd b/data/kwin_translate_confrequest_rule.upd new file mode 100644 index 0000000000..edbd271109 --- /dev/null +++ b/data/kwin_translate_confrequest_rule.upd @@ -0,0 +1,2 @@ +Id=Kwin-4.11 +Script=kwin_translate_confrequest_rule.sh \ No newline at end of file From 37279504cbf460ea86c633cf7dfd936e301051a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sat, 3 Aug 2013 22:13:14 +0200 Subject: [PATCH 092/108] bind unredirection change to unredirection update when the option changes, the compositor needs to update the state as it will later not act (in the disabled case) and should to reflect the option change. REVIEW: 111867 BUG: 322633 FIXED-IN: 4.11 --- composite.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/composite.cpp b/composite.cpp index f5de2fb66d..097d08500f 100644 --- a/composite.cpp +++ b/composite.cpp @@ -98,6 +98,7 @@ Compositor::Compositor(QObject* workspace) connect(&unredirectTimer, SIGNAL(timeout()), SLOT(delayedCheckUnredirect())); connect(&compositeResetTimer, SIGNAL(timeout()), SLOT(restart())); connect(workspace, SIGNAL(configChanged()), SLOT(slotConfigChanged())); + connect(options, SIGNAL(unredirectFullscreenChanged()), SLOT(delayedCheckUnredirect())); unredirectTimer.setSingleShot(true); compositeResetTimer.setSingleShot(true); nextPaintReference.invalidate(); // Initialize the timer @@ -705,7 +706,7 @@ void Compositor::checkUnredirect(bool force) void Compositor::delayedCheckUnredirect() { - if (!hasScene() || m_scene->overlayWindow()->window() == None || !options->isUnredirectFullscreen()) + if (!hasScene() || m_scene->overlayWindow()->window() == None || !(options->isUnredirectFullscreen() || sender() == options)) return; ToplevelList list; bool changed = forceUnredirectCheck; @@ -1072,7 +1073,8 @@ void Toplevel::addWorkspaceRepaint(const QRect& r2) bool Toplevel::updateUnredirectedState() { assert(compositing()); - bool should = shouldUnredirect() && !unredirectSuspend && !shape() && !hasAlpha() && opacity() == 1.0 && + bool should = options->isUnredirectFullscreen() && shouldUnredirect() && !unredirectSuspend && + !shape() && !hasAlpha() && opacity() == 1.0 && !static_cast(effects)->activeFullScreenEffect(); if (should == unredirect) return false; From 18f8493dee7aa3399b182c1c344f8fb379ba4e59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sat, 3 Aug 2013 18:52:56 +0200 Subject: [PATCH 093/108] no layer repaints for the window geometry labels insufficient since there can be windows/content on top of the moved window and the labels are painted on top of the scene BUG: 318390 FIXED-IN: 4.11 REVIEW: 111861 --- effects/windowgeometry/windowgeometry.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/effects/windowgeometry/windowgeometry.cpp b/effects/windowgeometry/windowgeometry.cpp index 26a15d142f..fca5bda351 100644 --- a/effects/windowgeometry/windowgeometry.cpp +++ b/effects/windowgeometry/windowgeometry.cpp @@ -145,7 +145,7 @@ void WindowGeometry::slotWindowStepUserMovedResized(EffectWindow *w, const QRect { if (iAmActivated && iAmActive && w == myResizeWindow) { if (myExtraDirtyArea.isValid()) - w->addLayerRepaint(myExtraDirtyArea); + effects->addRepaint(myExtraDirtyArea); myExtraDirtyArea = QRect(); @@ -197,11 +197,9 @@ void WindowGeometry::slotWindowStepUserMovedResized(EffectWindow *w, const QRect myExtraDirtyArea |= myMeasure[1]->geometry(); myExtraDirtyArea |= myMeasure[2]->geometry(); myExtraDirtyArea.adjust(-6,-6,6,6); - if (w->expandedGeometry().contains(myExtraDirtyArea)) - myExtraDirtyArea = QRect(); if (myExtraDirtyArea.isValid()) - w->addLayerRepaint(myExtraDirtyArea); + effects->addRepaint(myExtraDirtyArea); } } From e9e73f113413753331350ad4a1d09ecb715ab4ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sun, 4 Aug 2013 14:50:25 +0200 Subject: [PATCH 094/108] add XRenderPicture(QImage) constructor was implicitly present for QPixmap::toImage REVIEW: 111878 --- libkwineffects/kwinxrenderutils.cpp | 10 +++++++--- libkwineffects/kwinxrenderutils.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/libkwineffects/kwinxrenderutils.cpp b/libkwineffects/kwinxrenderutils.cpp index 85f0d0fd22..cfd3bc5859 100644 --- a/libkwineffects/kwinxrenderutils.cpp +++ b/libkwineffects/kwinxrenderutils.cpp @@ -109,11 +109,15 @@ static xcb_render_picture_t createPicture(xcb_pixmap_t pix, int depth) XRenderPicture::XRenderPicture(const QPixmap &pix) { - if (!Extensions::nonNativePixmaps()) { + if (Extensions::nonNativePixmaps()) { + XRenderPicture(pix.toImage()); + } else { d = new XRenderPictureData(createPicture(pix.handle(), pix.depth())); - return; } - QImage img(pix.toImage()); +} + +XRenderPicture::XRenderPicture(const QImage &img) +{ const int depth = img.depth(); xcb_pixmap_t xpix = xcb_generate_id(connection()); xcb_create_pixmap(connection(), depth, xpix, rootWindow(), img.width(), img.height()); diff --git a/libkwineffects/kwinxrenderutils.h b/libkwineffects/kwinxrenderutils.h index f2ad1c3317..a02028d766 100644 --- a/libkwineffects/kwinxrenderutils.h +++ b/libkwineffects/kwinxrenderutils.h @@ -70,6 +70,7 @@ public: explicit XRenderPicture(xcb_render_picture_t pic = XCB_RENDER_PICTURE_NONE); // TODO: Qt5 - replace QPixmap by QImage to make it more obvious that it uses PutImage explicit XRenderPicture(const QPixmap &pix); + explicit XRenderPicture(const QImage &img); XRenderPicture(xcb_pixmap_t pix, int depth); operator xcb_render_picture_t(); private: From 971fe0107cd783e76fb21ca392f8012d88ff797f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sun, 4 Aug 2013 14:50:38 +0200 Subject: [PATCH 095/108] support fps counter text on xrender BUG: 323006 FIXED-IN: 4.11 REVIEW: 111878 --- effects/showfps/showfps.cpp | 40 +++++++++++++++++++++++-------------- effects/showfps/showfps.h | 2 +- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/effects/showfps/showfps.cpp b/effects/showfps/showfps.cpp index 0439941b23..1ab7d57f6d 100644 --- a/effects/showfps/showfps.cpp +++ b/effects/showfps/showfps.cpp @@ -232,7 +232,18 @@ void ShowFpsEffect::paintGL(int fps) paintDrawSizeGraph(x, y); // Paint FPS numerical value - paintFPSText(fps); + if (fpsTextRect.isValid()) { + delete fpsText; + fpsText = new GLTexture(fpsTextImage(fps)); + fpsText->bind(); + ShaderBinder binder(ShaderManager::SimpleShader); + if (effects->compositingType() == OpenGL2Compositing) { + binder.shader()->setUniform("offset", QVector2D(0, 0)); + } + fpsText->render(QRegion(fpsTextRect), fpsTextRect); + fpsText->unbind(); + effects->addRepaint(fpsTextRect); + } // Paint paint sizes glDisable(GL_BLEND); @@ -284,6 +295,15 @@ void ShowFpsEffect::paintXrender(int fps) // Paint amount of rendered pixels graph paintDrawSizeGraph(x + FPS_WIDTH + MAX_TIME, y); + + // Paint FPS numerical value + if (fpsTextRect.isValid()) { + QImage textImg(fpsTextImage(fps)); + XRenderPicture textPic(textImg); + xcb_render_composite(connection(), XCB_RENDER_PICT_OP_OVER, textPic, XCB_RENDER_PICTURE_NONE, + effects->xrenderBufferPicture(), 0, 0, 0, 0, fpsTextRect.x(), fpsTextRect.y(), textImg.width(), textImg.height()); + effects->addRepaint(fpsTextRect); + } } #endif @@ -450,26 +470,16 @@ void ShowFpsEffect::postPaintScreen() effects->addRepaint(fps_rect); } -void ShowFpsEffect::paintFPSText(int fps) +QImage ShowFpsEffect::fpsTextImage(int fps) { - if (!fpsTextRect.isValid()) - return; QImage im(100, 100, QImage::Format_ARGB32); - im.fill(0); + im.fill(Qt::transparent); QPainter painter(&im); painter.setFont(textFont); painter.setPen(textColor); painter.drawText(QRect(0, 0, 100, 100), textAlign, QString::number(fps)); - delete fpsText; - fpsText = new GLTexture(im); - fpsText->bind(); - ShaderBinder binder(ShaderManager::SimpleShader); - if (effects->compositingType() == OpenGL2Compositing) { - binder.shader()->setUniform("offset", QVector2D(0, 0)); - } - fpsText->render(QRegion(fpsTextRect), fpsTextRect); - fpsText->unbind(); - effects->addRepaint(fpsTextRect); + painter.end(); + return im; } } // namespace diff --git a/effects/showfps/showfps.h b/effects/showfps/showfps.h index 5f46d0c5d5..3c30c39be0 100644 --- a/effects/showfps/showfps.h +++ b/effects/showfps/showfps.h @@ -80,7 +80,7 @@ private: void paintFPSGraph(int x, int y); void paintDrawSizeGraph(int x, int y); void paintGraph(int x, int y, QList values, QList lines, bool colorize); - void paintFPSText(int fps); + QImage fpsTextImage(int fps); QTime t; enum { NUM_PAINTS = 100 }; // remember time needed to paint this many paints int paints[ NUM_PAINTS ]; // time needed to paint From 76f7ee6bffb2a8324a23efc99c3f4f162118154e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sun, 28 Jul 2013 21:44:55 +0200 Subject: [PATCH 096/108] write back unsupported (kwin-intel) unredirection to have a minimal hint on "this does not work" REVIEW: 111772 CCBUG: 252817 --- options.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/options.cpp b/options.cpp index 8f6a21f474..52b082a57e 100644 --- a/options.cpp +++ b/options.cpp @@ -656,6 +656,9 @@ void Options::setUnredirectFullscreen(bool unredirectFullscreen) if (m_unredirectFullscreen == unredirectFullscreen) { return; } + if (GLPlatform::instance()->driver() == Driver_Intel) { // write back the value + KConfigGroup(KGlobal::config(), "Compositing").writeEntry("UnredirectFullscreen", false); + } m_unredirectFullscreen = unredirectFullscreen; emit unredirectFullscreenChanged(); } From fbac18a6359c2f063aff43afe4ef954fce000e48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Mon, 5 Aug 2013 15:12:08 +0200 Subject: [PATCH 097/108] Hotfix GL crossfading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Not correct crossfading Purpose of the hotfix is to manipulate opacities of the "semi-crossfaded™" pixmaps so that on a quick animation and sloppy check it looks somehow believable (instead of bumping the window to full opacity) REVIEW: 111888 --- scene_opengl.cpp | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/scene_opengl.cpp b/scene_opengl.cpp index e62829f33f..e82c50767d 100644 --- a/scene_opengl.cpp +++ b/scene_opengl.cpp @@ -50,7 +50,7 @@ along with this program. If not, see . #include "screens.h" #include "workspace.h" -#include +#include #include #include @@ -1357,26 +1357,33 @@ void SceneOpenGL2Window::setupLeafNodes(LeafNode *nodes, const WindowQuadList *q getDecorationTextures(textures); nodes[LeftRightLeaf].texture = textures[0]; - nodes[LeftRightLeaf].opacity = data.opacity() * data.decorationOpacity(); + nodes[LeftRightLeaf].opacity = data.opacity(); nodes[LeftRightLeaf].hasAlpha = true; nodes[LeftRightLeaf].coordinateType = UnnormalizedCoordinates; nodes[TopBottomLeaf].texture = textures[1]; - nodes[TopBottomLeaf].opacity = data.opacity() * data.decorationOpacity(); + nodes[TopBottomLeaf].opacity = data.opacity(); nodes[TopBottomLeaf].hasAlpha = true; nodes[TopBottomLeaf].coordinateType = UnnormalizedCoordinates; } nodes[ContentLeaf].texture = s_frameTexture; nodes[ContentLeaf].hasAlpha = !isOpaque(); - nodes[ContentLeaf].opacity = data.opacity(); + // TODO: ARGB crsoofading is atm. a hack, playing on opacities for two dumb SrcOver operations + // Should be a shader + if (data.crossFadeProgress() != 1.0 && (data.opacity() < 0.95 || toplevel->hasAlpha())) { + const float opacity = 1.0 - data.crossFadeProgress(); + nodes[ContentLeaf].opacity = data.opacity() * (1 - pow(opacity, 1.0f + 2.0f * data.opacity())); + } else { + nodes[ContentLeaf].opacity = data.opacity(); + } nodes[ContentLeaf].coordinateType = UnnormalizedCoordinates; if (data.crossFadeProgress() != 1.0) { OpenGLWindowPixmap *previous = previousWindowPixmap(); nodes[PreviousContentLeaf].texture = previous ? previous->texture() : NULL; nodes[PreviousContentLeaf].hasAlpha = !isOpaque(); - nodes[PreviousContentLeaf].opacity = 1.0 - data.crossFadeProgress(); + nodes[PreviousContentLeaf].opacity = data.opacity() * (1.0 - data.crossFadeProgress()); nodes[PreviousContentLeaf].coordinateType = NormalizedCoordinates; } } @@ -1607,7 +1614,14 @@ void SceneOpenGL1Window::performPaint(int mask, QRegion region, WindowPaintData OpenGLWindowPixmap *previous = previousWindowPixmap(); const WindowQuadList contentQuads = data.quads.select(WindowQuadContents); if (previous && data.crossFadeProgress() != 1.0) { - paintContent(s_frameTexture, region, mask, data.opacity(), data, contentQuads, false); + // TODO: ARGB crsoofading is atm. a hack, playing on opacities for two dumb SrcOver operations + // Will require a caching texture or sth. else 1.2 compliant + float opacity = data.opacity(); + if (opacity < 0.95f || toplevel->hasAlpha()) { + opacity = 1 - data.crossFadeProgress(); + opacity = data.opacity() * (1 - pow(opacity, 1.0f + 2.0f * data.opacity())); + } + paintContent(s_frameTexture, region, mask, opacity, data, contentQuads, false); previous->texture()->setFilter(filter == Scene::ImageFilterGood ? GL_LINEAR : GL_NEAREST); WindowQuadList oldContents; const QRect &oldGeometry = previous->contentsRect(); @@ -1628,7 +1642,8 @@ void SceneOpenGL1Window::performPaint(int mask, QRegion region, WindowPaintData } oldContents.append(newQuad); } - paintContent(previous->texture(), region, mask, 1.0 - data.crossFadeProgress(), data, oldContents, true); + opacity = data.opacity() * (1.0 - data.crossFadeProgress()); + paintContent(previous->texture(), region, mask, opacity, data, oldContents, true); } else { paintContent(s_frameTexture, region, mask, data.opacity(), data, contentQuads, false); } From b92ebe02aa49c162518b0a6ebd2481d79a1d3843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 3 Jul 2013 21:29:16 +0200 Subject: [PATCH 098/108] add synthetic repaint after crossfade finished prevents glitches after crossfading translucent window REVIEW: 111888 --- libkwineffects/kwinanimationeffect.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libkwineffects/kwinanimationeffect.cpp b/libkwineffects/kwinanimationeffect.cpp index 7b0e780403..5c114af7d2 100644 --- a/libkwineffects/kwinanimationeffect.cpp +++ b/libkwineffects/kwinanimationeffect.cpp @@ -284,6 +284,7 @@ void AnimationEffect::prePaintScreen( ScreenPrePaintData& data, int time ) AniData *aData = &(*anim); if (aData->attribute == KWin::AnimationEffect::CrossFadePrevious) { oldW->unreferencePreviousWindowPixmap(); + effects->addRepaint(oldW->expandedGeometry()); } animationEnded(oldW, anim->attribute, anim->meta); // NOTICE animationEnded is an external call and might have called "::animate" From 127cf45626ddfa7d16a35570cadb97b570d3c3f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Fri, 26 Jul 2013 19:58:42 +0200 Subject: [PATCH 099/108] protect kwin against broken tabbox installation This happens because some distros ship broken installations of KWin and KWinActive, but could also appear to QML hacking users BUG: 322830 FIXED-IN: 4.11 REVIEW: 111732 --- tabbox/declarative.cpp | 2 ++ tabbox/tabboxhandler.cpp | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/tabbox/declarative.cpp b/tabbox/declarative.cpp index 18e0a21d5a..97a89c38fe 100644 --- a/tabbox/declarative.cpp +++ b/tabbox/declarative.cpp @@ -328,6 +328,8 @@ void DeclarativeView::currentIndexChanged(int row) void DeclarativeView::updateQmlSource(bool force) { + if (status() != Ready) + return; if (tabBox->config().tabBoxMode() != m_mode) { return; } diff --git a/tabbox/tabboxhandler.cpp b/tabbox/tabboxhandler.cpp index 169c7bac37..f0e0ffe8cb 100644 --- a/tabbox/tabboxhandler.cpp +++ b/tabbox/tabboxhandler.cpp @@ -33,6 +33,7 @@ along with this program. If not, see . #include // KDE #include +#include #include namespace KWin @@ -216,19 +217,29 @@ void TabBoxHandler::show() d->lastRaisedClient = 0; d->lastRaisedClientSucc = 0; if (d->config.isShowTabBox()) { + DeclarativeView *dv(NULL); if (d->config.tabBoxMode() == TabBoxConfig::ClientTabBox) { // use declarative view if (!d->m_declarativeView) { d->m_declarativeView = new DeclarativeView(d->clientModel(), TabBoxConfig::ClientTabBox); } - d->m_declarativeView->show(); - d->m_declarativeView->setCurrentIndex(d->index, true); + dv = d->m_declarativeView; } else { if (!d->m_declarativeDesktopView) { d->m_declarativeDesktopView = new DeclarativeView(d->desktopModel(), TabBoxConfig::DesktopTabBox); } - d->m_declarativeDesktopView->show(); - d->m_declarativeDesktopView->setCurrentIndex(d->index); + dv = d->m_declarativeDesktopView; + } + if (dv->status() == QDeclarativeView::Ready && dv->rootObject()) { + dv->show(); + dv->setCurrentIndex(d->index, d->config.tabBoxMode() == TabBoxConfig::ClientTabBox); + } else { + QStringList args; + args << "--passivepopup" << /*i18n*/("The Window Switcher installation is broken, resources are missing.\n" + "Contact your distribution about this.") << "20"; + KProcess::startDetached("kdialog", args); + hide(); + return; } } if (d->config.isHighlightWindows()) { From ee45592d85d128200120e05c951542497e47944b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 31 Jul 2013 12:55:00 +0200 Subject: [PATCH 100/108] validate screens w/o direct update largely reverts b164e9912c9b5f9c9ae619bbd79355d317174115 which prevented the crash but due to early screen updating causes issues with scene/overlay update on at least intel chips BUG: 322970 FIXED-IN: 4.11 CCBUG: 322156 REVIEW: https://git.reviewboard.kde.org/r/111811/ --- screens.cpp | 21 +++++---------------- screens.h | 23 +++-------------------- 2 files changed, 8 insertions(+), 36 deletions(-) diff --git a/screens.cpp b/screens.cpp index 3dd2584d79..23caf59352 100644 --- a/screens.cpp +++ b/screens.cpp @@ -37,7 +37,7 @@ Screens::Screens(QObject *parent) , m_count(0) , m_current(0) , m_currentFollowsMouse(false) - , m_changedTimer(new ScreenCountTimer(this)) + , m_changedTimer(new QTimer(this)) { m_changedTimer->setSingleShot(true); m_changedTimer->setInterval(100); @@ -117,19 +117,6 @@ int Screens::current() const return m_current; } -ScreenCountTimer::ScreenCountTimer(QObject * parent) : QTimer(parent) -{ -} - -void ScreenCountTimer::finish() -{ - if (isActive()) { - stop(); - Screens::self()->updateCount(); - QMetaObject::invokeMethod(Screens::self(), "changed", Qt::QueuedConnection); - } -} - DesktopWidgetScreens::DesktopWidgetScreens(QObject *parent) : Screens(parent) , m_desktop(QApplication::desktop()) @@ -145,13 +132,15 @@ DesktopWidgetScreens::~DesktopWidgetScreens() QRect DesktopWidgetScreens::geometry(int screen) const { - finishChangedTimer(); + if (Screens::self()->isChanging()) + const_cast(this)->updateCount(); return m_desktop->screenGeometry(screen); } int DesktopWidgetScreens::number(const QPoint &pos) const { - finishChangedTimer(); + if (Screens::self()->isChanging()) + const_cast(this)->updateCount(); return m_desktop->screenNumber(pos); } diff --git a/screens.h b/screens.h index 6bdc9689b3..f05f818519 100644 --- a/screens.h +++ b/screens.h @@ -35,15 +35,6 @@ namespace KWin { class Client; -class ScreenCountTimer : public QTimer { - public: - ScreenCountTimer(QObject * parent = 0); - /** - * if isActive, stop AND emit timeout() - */ - void finish(); -}; - class Screens : public QObject { Q_OBJECT @@ -75,6 +66,8 @@ public: virtual QRect geometry(int screen) const = 0; virtual int number(const QPoint &pos) const = 0; + inline bool isChanging() { return m_changedTimer->isActive(); } + public Q_SLOTS: void reconfigure(); @@ -85,11 +78,7 @@ Q_SIGNALS: **/ void changed(); -protected: - void finishChangedTimer() const; - protected Q_SLOTS: - friend class ScreenCountTimer; void setCount(int count); void startChangedTimer(); virtual void updateCount() = 0; @@ -98,7 +87,7 @@ private: int m_count; int m_current; bool m_currentFollowsMouse; - ScreenCountTimer *m_changedTimer; + QTimer *m_changedTimer; KSharedConfig::Ptr m_config; KWIN_SINGLETON(Screens) @@ -131,12 +120,6 @@ int Screens::count() const return m_count; } -inline -void Screens::finishChangedTimer() const -{ - const_cast(m_changedTimer)->finish(); -} - inline bool Screens::isCurrentFollowsMouse() const { From bdc1883fcffc447f43f8d0b97225a661086fab5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Tue, 6 Aug 2013 07:50:24 +0200 Subject: [PATCH 101/108] Better activation check in KillWindow If the grab keyboard fails we better do not activate the window killer otherwise we are in an inconsistent state. CCBUG: 323191 REVIEW: 111903 --- killwindow.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/killwindow.cpp b/killwindow.cpp index 92481a7db8..f12cab9c92 100644 --- a/killwindow.cpp +++ b/killwindow.cpp @@ -52,7 +52,6 @@ void KillWindow::start() if (m_active) { return; } - m_active = true; xcb_connection_t *c = connection(); ScopedCPointer grabPointer(xcb_grab_pointer_reply(c, xcb_grab_pointer_unchecked(c, false, rootWindow(), @@ -64,7 +63,11 @@ void KillWindow::start() if (grabPointer.isNull() || grabPointer->status != XCB_GRAB_STATUS_SUCCESS) { return; } - grabXKeyboard(); + m_active = grabXKeyboard(); + if (!m_active) { + xcb_ungrab_pointer(connection(), XCB_TIME_CURRENT_TIME); + return; + } grabXServer(); } From a61009b152d4cbc4a07137e5515ce65e9a13c5c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=B6glund?= Date: Sun, 7 Jul 2013 19:49:51 +0200 Subject: [PATCH 102/108] kwin: Make PaintRedirector work without NPOT texture support BUG: 321865 --- paintredirector.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/paintredirector.cpp b/paintredirector.cpp index c021549c74..982ab6f58b 100644 --- a/paintredirector.cpp +++ b/paintredirector.cpp @@ -348,6 +348,13 @@ void OpenGLPaintRedirector::resizePixmaps(const QRect *rects) size[TopBottom] = QSize(align(qMax(rects[TopPixmap].width(), rects[BottomPixmap].width()), 128), rects[TopPixmap].height() + rects[BottomPixmap].height()); + if (!GLTexture::NPOTTextureSupported()) { + for (int i = 0; i < 2; i++) { + size[i].rwidth() = nearestPowerOfTwo(size[i].width()); + size[i].rheight() = nearestPowerOfTwo(size[i].height()); + } + } + bool fbo_bound = false; for (int i = 0; i < 2; i++) { From ebfd3f58d8cd2a5e4e2be9c7cafb93632fbdaca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 3 Jul 2013 21:30:51 +0200 Subject: [PATCH 103/108] implement crossfading on xrender REVIEW: 111383 --- scene_xrender.cpp | 48 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/scene_xrender.cpp b/scene_xrender.cpp index b5c217228c..8d38a2e2ea 100644 --- a/scene_xrender.cpp +++ b/scene_xrender.cpp @@ -48,6 +48,10 @@ namespace KWin xcb_render_picture_t SceneXrender::buffer = XCB_RENDER_PICTURE_NONE; ScreenPaintData SceneXrender::screen_paint; +#define DOUBLE_TO_FIXED(d) ((xcb_render_fixed_t) ((d) * 65536)) +#define FIXED_TO_DOUBLE(f) ((double) ((f) / 65536.0)) + + static xcb_render_pictformat_t findFormatForVisual(xcb_visualid_t visual) { static QHash s_cache; @@ -445,7 +449,6 @@ void SceneXrender::Window::performPaint(int mask, QRegion region, WindowPaintDat if (toplevel->hasShadow()) transformed_shape |= toplevel->shadow()->shadowRegion(); -#define DOUBLE_TO_FIXED(d) ((xcb_render_fixed_t) ((d) * 65536)) xcb_render_transform_t xform = { DOUBLE_TO_FIXED(1), DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(1), DOUBLE_TO_FIXED(0), @@ -479,7 +482,6 @@ void SceneXrender::Window::performPaint(int mask, QRegion region, WindowPaintDat } transformed_shape.setRects(rects.constData(), rects.count()); } -#undef DOUBLE_TO_FIXED transformed_shape.translate(mapToScreen(mask, data, QPoint(0, 0))); PaintClipper pcreg(region); // clip by the region to paint @@ -495,7 +497,8 @@ void SceneXrender::Window::performPaint(int mask, QRegion region, WindowPaintDat // the window has border // This solves a number of glitches and on top of this // it optimizes painting quite a bit - const bool blitInTempPixmap = xRenderOffscreen() || (scaled && (wantShadow || (client && !client->noBorder()) || (deleted && !deleted->noBorder()))); + const bool blitInTempPixmap = xRenderOffscreen() || (data.crossFadeProgress() < 1.0 && !opaque) || + (scaled && (wantShadow || (client && !client->noBorder()) || (deleted && !deleted->noBorder()))); xcb_render_picture_t renderTarget = buffer; if (blitInTempPixmap) { @@ -630,7 +633,38 @@ xcb_render_composite(connection(), XCB_RENDER_PICT_OP_OVER, m_xrenderShadow->pic if (!opaque) { clientAlpha = xRenderBlendPicture(data.opacity()); } - xcb_render_composite(connection(), clientRenderOp, pic, clientAlpha, renderTarget, cr.x(), cr.y(), 0, 0, dr.x(), dr.y(), dr.width(), dr.height()); + xcb_render_composite(connection(), clientRenderOp, pic, clientAlpha, renderTarget, + cr.x(), cr.y(), 0, 0, dr.x(), dr.y(), dr.width(), dr.height()); + if (data.crossFadeProgress() < 1.0 && data.crossFadeProgress() > 0.0) { + XRenderWindowPixmap *previous = previousWindowPixmap(); + if (previous && previous != pixmap) { + static XRenderPicture cFadeAlpha(XCB_RENDER_PICTURE_NONE); + static xcb_render_color_t cFadeColor = {0, 0, 0, 0}; + cFadeColor.alpha = uint16_t((1.0 - data.crossFadeProgress()) * 0xffff); + if (cFadeAlpha == XCB_RENDER_PICTURE_NONE) { + cFadeAlpha = xRenderFill(cFadeColor); + } else { + xcb_rectangle_t rect = {0, 0, 1, 1}; + xcb_render_fill_rectangles(connection(), XCB_RENDER_PICT_OP_SRC, cFadeAlpha, cFadeColor , 1, &rect); + } + if (previous->size() != pixmap->size()) { + xcb_render_transform_t xform2 = { + DOUBLE_TO_FIXED(FIXED_TO_DOUBLE(xform.matrix11) * previous->size().width() / pixmap->size().width()), DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(0), + DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(FIXED_TO_DOUBLE(xform.matrix22) * previous->size().height() / pixmap->size().height()), DOUBLE_TO_FIXED(0), + DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(1) + }; + xcb_render_set_picture_transform(connection(), previous->picture(), xform2); + } + + xcb_render_composite(connection(), opaque ? XCB_RENDER_PICT_OP_OVER : XCB_RENDER_PICT_OP_ATOP, + previous->picture(), cFadeAlpha, renderTarget, + cr.x(), cr.y(), 0, 0, dr.x(), dr.y(), dr.width(), dr.height()); + + if (previous->size() != pixmap->size()) { + xcb_render_set_picture_transform(connection(), previous->picture(), identity); + } + } + } if (!opaque) transformed_shape = QRegion(); } @@ -926,7 +960,7 @@ void SceneXrender::EffectFrame::renderUnstyled(xcb_render_picture_t pict, const qreal x = roundness;//we start at angle = 0 qreal y = 0; - #define DOUBLE_TO_FIXED(d) ((xcb_render_fixed_t) ((d) * 65536)) + QVector points; xcb_render_pointfix_t point; point.x = DOUBLE_TO_FIXED(roundness); @@ -944,7 +978,6 @@ void SceneXrender::EffectFrame::renderUnstyled(xcb_render_picture_t pict, const XRenderPicture fill = xRenderFill(Qt::black); xcb_render_tri_fan(connection(), XCB_RENDER_PICT_OP_OVER, fill, *s_effectFrameCircle, 0, 0, 0, points.count(), points.constData()); - #undef DOUBLE_TO_FIXED } // TODO: merge alpha mask with SceneXrender::Window::alphaMask // alpha mask @@ -1096,5 +1129,8 @@ xcb_render_picture_t SceneXRenderShadow::picture(Shadow::ShadowElements element) return *m_pictures[element]; } +#undef DOUBLE_TO_FIXED +#undef FIXED_TO_DOUBLE + } // namespace #endif From c2219f973b95284ad04db94e4b9f44ba3a5bbcc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 3 Jul 2013 17:14:25 +0200 Subject: [PATCH 104/108] crossfade for resize effect REVIEW: 111383 --- effects/resize/resize.cpp | 14 +++++++++----- effects/resize/resize.h | 6 +++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/effects/resize/resize.cpp b/effects/resize/resize.cpp index b5c6a65287..a24e1241f7 100644 --- a/effects/resize/resize.cpp +++ b/effects/resize/resize.cpp @@ -37,7 +37,8 @@ namespace KWin KWIN_EFFECT(resize, ResizeEffect) ResizeEffect::ResizeEffect() - : m_active(false) + : AnimationEffect() + , m_active(false) , m_resizeWindow(0) { reconfigure(ReconfigureAll); @@ -55,14 +56,14 @@ void ResizeEffect::prePaintScreen(ScreenPrePaintData& data, int time) if (m_active) { data.mask |= PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS; } - effects->prePaintScreen(data, time); + AnimationEffect::prePaintScreen(data, time); } void ResizeEffect::prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time) { if (m_active && w == m_resizeWindow) data.mask |= PAINT_WINDOW_TRANSFORMED; - effects->prePaintWindow(w, data, time); + AnimationEffect::prePaintWindow(w, data, time); } void ResizeEffect::paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data) @@ -118,8 +119,9 @@ void ResizeEffect::paintWindow(EffectWindow* w, int mask, QRegion region, Window } #endif } - } else - effects->paintWindow(w, mask, region, data); + } else { + AnimationEffect::paintWindow(w, mask, region, data); + } } void ResizeEffect::reconfigure(ReconfigureFlags) @@ -148,6 +150,8 @@ void ResizeEffect::slotWindowFinishUserMovedResized(EffectWindow *w) if (m_active && w == m_resizeWindow) { m_active = false; m_resizeWindow = NULL; + if (m_features & TextureScale) + animate(w, CrossFadePrevious, 0, 150, FPx2(1.0)); effects->addRepaintFull(); } } diff --git a/effects/resize/resize.h b/effects/resize/resize.h index d900ea6adf..5b1610fe06 100644 --- a/effects/resize/resize.h +++ b/effects/resize/resize.h @@ -21,13 +21,13 @@ along with this program. If not, see . #ifndef KWIN_RESIZE_H #define KWIN_RESIZE_H -#include +#include namespace KWin { class ResizeEffect - : public Effect + : public AnimationEffect { Q_OBJECT Q_PROPERTY(bool textureScale READ isTextureScale) @@ -38,7 +38,7 @@ public: virtual inline bool provides(Effect::Feature ef) { return ef == Effect::Resize; } - inline bool isActive() const { return m_active; } + inline bool isActive() const { return m_active || AnimationEffect::isActive(); } virtual void prePaintScreen(ScreenPrePaintData& data, int time); virtual void prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time); virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data); From 3f33d0c2d5c3d5d425fba4d612aced5db5387cf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Tue, 6 Aug 2013 14:36:00 +0200 Subject: [PATCH 105/108] poll mouse at 20Hz required until there's a dynamic poll rate, because 10Hz is too low for magnifiers (lag), mousemark (paints too edgy), mouseclick (often fails because it's easy to cycle the button state within 100ms) - and the bouncing icon lags behind the mouse as well ;-) REVIEW: 111909 --- cursor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cursor.cpp b/cursor.cpp index 8ec8511e2e..5e35a209e7 100644 --- a/cursor.cpp +++ b/cursor.cpp @@ -166,7 +166,7 @@ X11Cursor::X11Cursor(QObject *parent) m_resetTimeStampTimer->setSingleShot(true); connect(m_resetTimeStampTimer, SIGNAL(timeout()), SLOT(resetTimeStamp())); // TODO: How often do we really need to poll? - m_mousePollingTimer->setInterval(100); + m_mousePollingTimer->setInterval(50); connect(m_mousePollingTimer, SIGNAL(timeout()), SLOT(mousePolled())); } From 772486511a177b9bf4b7c2e4680e11329eeb9881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 3 Jul 2013 21:30:51 +0200 Subject: [PATCH 106/108] implement crossfading on xrender REVIEW: 111383 --- scene_xrender.cpp | 48 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/scene_xrender.cpp b/scene_xrender.cpp index b5c217228c..8d38a2e2ea 100644 --- a/scene_xrender.cpp +++ b/scene_xrender.cpp @@ -48,6 +48,10 @@ namespace KWin xcb_render_picture_t SceneXrender::buffer = XCB_RENDER_PICTURE_NONE; ScreenPaintData SceneXrender::screen_paint; +#define DOUBLE_TO_FIXED(d) ((xcb_render_fixed_t) ((d) * 65536)) +#define FIXED_TO_DOUBLE(f) ((double) ((f) / 65536.0)) + + static xcb_render_pictformat_t findFormatForVisual(xcb_visualid_t visual) { static QHash s_cache; @@ -445,7 +449,6 @@ void SceneXrender::Window::performPaint(int mask, QRegion region, WindowPaintDat if (toplevel->hasShadow()) transformed_shape |= toplevel->shadow()->shadowRegion(); -#define DOUBLE_TO_FIXED(d) ((xcb_render_fixed_t) ((d) * 65536)) xcb_render_transform_t xform = { DOUBLE_TO_FIXED(1), DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(1), DOUBLE_TO_FIXED(0), @@ -479,7 +482,6 @@ void SceneXrender::Window::performPaint(int mask, QRegion region, WindowPaintDat } transformed_shape.setRects(rects.constData(), rects.count()); } -#undef DOUBLE_TO_FIXED transformed_shape.translate(mapToScreen(mask, data, QPoint(0, 0))); PaintClipper pcreg(region); // clip by the region to paint @@ -495,7 +497,8 @@ void SceneXrender::Window::performPaint(int mask, QRegion region, WindowPaintDat // the window has border // This solves a number of glitches and on top of this // it optimizes painting quite a bit - const bool blitInTempPixmap = xRenderOffscreen() || (scaled && (wantShadow || (client && !client->noBorder()) || (deleted && !deleted->noBorder()))); + const bool blitInTempPixmap = xRenderOffscreen() || (data.crossFadeProgress() < 1.0 && !opaque) || + (scaled && (wantShadow || (client && !client->noBorder()) || (deleted && !deleted->noBorder()))); xcb_render_picture_t renderTarget = buffer; if (blitInTempPixmap) { @@ -630,7 +633,38 @@ xcb_render_composite(connection(), XCB_RENDER_PICT_OP_OVER, m_xrenderShadow->pic if (!opaque) { clientAlpha = xRenderBlendPicture(data.opacity()); } - xcb_render_composite(connection(), clientRenderOp, pic, clientAlpha, renderTarget, cr.x(), cr.y(), 0, 0, dr.x(), dr.y(), dr.width(), dr.height()); + xcb_render_composite(connection(), clientRenderOp, pic, clientAlpha, renderTarget, + cr.x(), cr.y(), 0, 0, dr.x(), dr.y(), dr.width(), dr.height()); + if (data.crossFadeProgress() < 1.0 && data.crossFadeProgress() > 0.0) { + XRenderWindowPixmap *previous = previousWindowPixmap(); + if (previous && previous != pixmap) { + static XRenderPicture cFadeAlpha(XCB_RENDER_PICTURE_NONE); + static xcb_render_color_t cFadeColor = {0, 0, 0, 0}; + cFadeColor.alpha = uint16_t((1.0 - data.crossFadeProgress()) * 0xffff); + if (cFadeAlpha == XCB_RENDER_PICTURE_NONE) { + cFadeAlpha = xRenderFill(cFadeColor); + } else { + xcb_rectangle_t rect = {0, 0, 1, 1}; + xcb_render_fill_rectangles(connection(), XCB_RENDER_PICT_OP_SRC, cFadeAlpha, cFadeColor , 1, &rect); + } + if (previous->size() != pixmap->size()) { + xcb_render_transform_t xform2 = { + DOUBLE_TO_FIXED(FIXED_TO_DOUBLE(xform.matrix11) * previous->size().width() / pixmap->size().width()), DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(0), + DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(FIXED_TO_DOUBLE(xform.matrix22) * previous->size().height() / pixmap->size().height()), DOUBLE_TO_FIXED(0), + DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(0), DOUBLE_TO_FIXED(1) + }; + xcb_render_set_picture_transform(connection(), previous->picture(), xform2); + } + + xcb_render_composite(connection(), opaque ? XCB_RENDER_PICT_OP_OVER : XCB_RENDER_PICT_OP_ATOP, + previous->picture(), cFadeAlpha, renderTarget, + cr.x(), cr.y(), 0, 0, dr.x(), dr.y(), dr.width(), dr.height()); + + if (previous->size() != pixmap->size()) { + xcb_render_set_picture_transform(connection(), previous->picture(), identity); + } + } + } if (!opaque) transformed_shape = QRegion(); } @@ -926,7 +960,7 @@ void SceneXrender::EffectFrame::renderUnstyled(xcb_render_picture_t pict, const qreal x = roundness;//we start at angle = 0 qreal y = 0; - #define DOUBLE_TO_FIXED(d) ((xcb_render_fixed_t) ((d) * 65536)) + QVector points; xcb_render_pointfix_t point; point.x = DOUBLE_TO_FIXED(roundness); @@ -944,7 +978,6 @@ void SceneXrender::EffectFrame::renderUnstyled(xcb_render_picture_t pict, const XRenderPicture fill = xRenderFill(Qt::black); xcb_render_tri_fan(connection(), XCB_RENDER_PICT_OP_OVER, fill, *s_effectFrameCircle, 0, 0, 0, points.count(), points.constData()); - #undef DOUBLE_TO_FIXED } // TODO: merge alpha mask with SceneXrender::Window::alphaMask // alpha mask @@ -1096,5 +1129,8 @@ xcb_render_picture_t SceneXRenderShadow::picture(Shadow::ShadowElements element) return *m_pictures[element]; } +#undef DOUBLE_TO_FIXED +#undef FIXED_TO_DOUBLE + } // namespace #endif From 65a476d638068cd6dee8f17cb777f7bc459fbea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 3 Jul 2013 17:14:25 +0200 Subject: [PATCH 107/108] crossfade for resize effect REVIEW: 111383 --- effects/resize/resize.cpp | 14 +++++++++----- effects/resize/resize.h | 6 +++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/effects/resize/resize.cpp b/effects/resize/resize.cpp index b5c6a65287..a24e1241f7 100644 --- a/effects/resize/resize.cpp +++ b/effects/resize/resize.cpp @@ -37,7 +37,8 @@ namespace KWin KWIN_EFFECT(resize, ResizeEffect) ResizeEffect::ResizeEffect() - : m_active(false) + : AnimationEffect() + , m_active(false) , m_resizeWindow(0) { reconfigure(ReconfigureAll); @@ -55,14 +56,14 @@ void ResizeEffect::prePaintScreen(ScreenPrePaintData& data, int time) if (m_active) { data.mask |= PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS; } - effects->prePaintScreen(data, time); + AnimationEffect::prePaintScreen(data, time); } void ResizeEffect::prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time) { if (m_active && w == m_resizeWindow) data.mask |= PAINT_WINDOW_TRANSFORMED; - effects->prePaintWindow(w, data, time); + AnimationEffect::prePaintWindow(w, data, time); } void ResizeEffect::paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data) @@ -118,8 +119,9 @@ void ResizeEffect::paintWindow(EffectWindow* w, int mask, QRegion region, Window } #endif } - } else - effects->paintWindow(w, mask, region, data); + } else { + AnimationEffect::paintWindow(w, mask, region, data); + } } void ResizeEffect::reconfigure(ReconfigureFlags) @@ -148,6 +150,8 @@ void ResizeEffect::slotWindowFinishUserMovedResized(EffectWindow *w) if (m_active && w == m_resizeWindow) { m_active = false; m_resizeWindow = NULL; + if (m_features & TextureScale) + animate(w, CrossFadePrevious, 0, 150, FPx2(1.0)); effects->addRepaintFull(); } } diff --git a/effects/resize/resize.h b/effects/resize/resize.h index d900ea6adf..5b1610fe06 100644 --- a/effects/resize/resize.h +++ b/effects/resize/resize.h @@ -21,13 +21,13 @@ along with this program. If not, see . #ifndef KWIN_RESIZE_H #define KWIN_RESIZE_H -#include +#include namespace KWin { class ResizeEffect - : public Effect + : public AnimationEffect { Q_OBJECT Q_PROPERTY(bool textureScale READ isTextureScale) @@ -38,7 +38,7 @@ public: virtual inline bool provides(Effect::Feature ef) { return ef == Effect::Resize; } - inline bool isActive() const { return m_active; } + inline bool isActive() const { return m_active || AnimationEffect::isActive(); } virtual void prePaintScreen(ScreenPrePaintData& data, int time); virtual void prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time); virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data); From 5c207e9a150b230210dbfaa81fff6992f9f11392 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Tue, 6 Aug 2013 14:36:00 +0200 Subject: [PATCH 108/108] poll mouse at 20Hz required until there's a dynamic poll rate, because 10Hz is too low for magnifiers (lag), mousemark (paints too edgy), mouseclick (often fails because it's easy to cycle the button state within 100ms) - and the bouncing icon lags behind the mouse as well ;-) REVIEW: 111909 --- cursor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cursor.cpp b/cursor.cpp index 8ec8511e2e..5e35a209e7 100644 --- a/cursor.cpp +++ b/cursor.cpp @@ -166,7 +166,7 @@ X11Cursor::X11Cursor(QObject *parent) m_resetTimeStampTimer->setSingleShot(true); connect(m_resetTimeStampTimer, SIGNAL(timeout()), SLOT(resetTimeStamp())); // TODO: How often do we really need to poll? - m_mousePollingTimer->setInterval(100); + m_mousePollingTimer->setInterval(50); connect(m_mousePollingTimer, SIGNAL(timeout()), SLOT(mousePolled())); }