Merge branch 'master' into oxygen-shadows

Conflicts:
	kwin/atoms.cpp
	kwin/atoms.h
icc-effect-5.14.5
Martin Gräßlin 2011-04-04 18:09:59 +02:00
commit 320de6abc6
90 changed files with 827 additions and 891 deletions

View File

@ -114,6 +114,9 @@ Atoms::Atoms()
atoms[n] = &net_wm_sync_request;
names[n++] = (char*) "_NET_WM_SYNC_REQUEST";
atoms[n] = &kde_net_wm_block_compositing;
names[n++] = (char*) "_KDE_NET_WM_BLOCK_COMPOSITING";
atoms[n] = &kde_net_wm_shadow;
names[n++] = (char*) "_KDE_NET_WM_SHADOW";

View File

@ -60,6 +60,7 @@ public:
Atom kde_net_wm_frame_strut;
Atom net_wm_sync_request_counter;
Atom net_wm_sync_request;
Atom kde_net_wm_block_compositing;
Atom kde_net_wm_shadow;
};

View File

@ -95,6 +95,7 @@ Client::Client(Workspace* ws)
, transient_for (NULL)
, transient_for_id(None)
, original_transient_for_id(None)
, blocks_compositing(false)
, autoRaiseTimer(NULL)
, shadeHoverTimer(NULL)
, delayedMoveResizeTimer(NULL)
@ -2114,6 +2115,20 @@ void Client::updateCursor()
cursor.handle(), xTime());
}
void Client::updateCompositeBlocking(bool readProperty)
{
const bool usedToBlock = blocks_compositing;
if (readProperty) {
const unsigned long properties[2] = {0, NET::WM2BlockCompositing};
NETWinInfo2 i(QX11Info::display(), window(), rootWindow(), properties, 2);
blocks_compositing = rules()->checkBlockCompositing(i.isBlockingCompositing());
}
else
blocks_compositing = rules()->checkBlockCompositing(blocks_compositing);
if (usedToBlock != blocks_compositing)
workspace()->updateCompositeBlocking(blocks_compositing ? this : 0);
}
Client::Position Client::mousePosition(const QPoint& p) const
{
if (decoration != NULL)

View File

@ -295,6 +295,8 @@ public:
virtual void setupCompositing();
virtual void finishCompositing();
inline bool isBlockingCompositing() { return blocks_compositing; }
void updateCompositeBlocking(bool readProperty = false);
QString caption(bool full = true) const;
void updateCaption();
@ -647,6 +649,7 @@ private:
uint urgency : 1; ///< XWMHints, UrgencyHint
uint ignore_focus_stealing : 1; ///< Don't apply focus stealing prevention to this client
uint demands_attention : 1;
bool blocks_compositing;
WindowRules client_rules;
void getWMHints();
void readIcons();

View File

@ -21,7 +21,7 @@ Name[he]=רצועת לשוניות
Name[hi]=टैबपट्टी
Name[hr]=Kartični prikaz
Name[hu]=Lapsáv
Name[ia]=Banda de Scheda (Tabstrip)
Name[ia]=Banda de scheda (Tabstrip)
Name[id]=Tabstrip
Name[is]=Tabstrip
Name[it]=Linguette

View File

@ -282,6 +282,32 @@ void Workspace::toggleCompositing()
}
}
void Workspace::updateCompositeBlocking(Client *c)
{
if (c) { // if c == 0 we just check if we can resume
if (c->isBlockingCompositing()) {
compositingBlocked = true;
suspendCompositing(true);
}
}
else if (compositingBlocked) { // lost a client and we're blocked - can we resume?
// NOTICE do NOT check for "compositingSuspended" or "!compositing()"
// only "resume" if it was really disabled for a block
bool resume = true;
for (ClientList::ConstIterator it = clients.constBegin(); it != clients.constEnd(); ++it) {
if ((*it)->isBlockingCompositing()) {
resume = false;
break;
}
}
if (resume) { // do NOT attempt to call suspendCompositing(false); from within the eventchain!
compositingBlocked = false;
if (compositingSuspended)
QMetaObject::invokeMethod(this, "slotToggleCompositing", Qt::QueuedConnection);
}
}
}
void Workspace::suspendCompositing()
{
suspendCompositing(true);

View File

@ -37,6 +37,6 @@ install( TARGETS kwin_update_tabbox_settings DESTINATION ${LIB_INSTALL_DIR}/kcon
install( FILES fsp_workarounds_1.kwinrules DESTINATION ${DATA_INSTALL_DIR}/kwin/default_rules )
install( FILES pop.wav DESTINATION ${SOUND_INSTALL_DIR} )
install( FILES kwin.upd kwinsticky.upd kwiniconify.upd kwin3_plugin.upd kwin_focus1.upd kwinupdatewindowsettings.upd kwin_focus2.upd kwin_fsp_workarounds_1.upd kwin_on_off.upd kwin_window_shortcuts.upd kwin_update_tabbox_settings.upd kwin_blacklist.upd DESTINATION ${KCONF_UPDATE_INSTALL_DIR} )
install( PROGRAMS pluginlibFix.pl kwin3_plugin.pl kwin_focus1.sh kwin_focus2.sh on-off_to_true-false.sh kwin_window_shortcuts.sh kwin_blacklist.sh DESTINATION ${KCONF_UPDATE_INSTALL_DIR} )
install( FILES kwin.upd kwinsticky.upd kwiniconify.upd kwin3_plugin.upd kwin_focus1.upd kwinupdatewindowsettings.upd kwin_focus2.upd kwin_fsp_workarounds_1.upd kwin_on_off.upd kwin_window_shortcuts.upd kwin_update_tabbox_settings.upd DESTINATION ${KCONF_UPDATE_INSTALL_DIR} )
install( PROGRAMS pluginlibFix.pl kwin3_plugin.pl kwin_focus1.sh kwin_focus2.sh on-off_to_true-false.sh kwin_window_shortcuts.sh DESTINATION ${KCONF_UPDATE_INSTALL_DIR} )

View File

@ -28,7 +28,7 @@ Description[hne]=(डिफाल्ट) एक्स वी बर फोकस
Description[hr]=(Zadano) Onemogućuje prevenciju oduzimanja fokusa XV-u
Description[hsb]=(Standard) XV zakazać, zo fokus na so storhnje
Description[hu]=(Alapértelmezés) A fókusz elvételét megakadályozó funkció kikapcsolása az XV esetén
Description[ia]=(Predefinite) Dishabilitar le prevention de furto de foco pro XV
Description[ia]=(Predefinite) Dishabilita le prevention de furto de foco pro XV
Description[id]=(Standar) Nonaktifkan pencegahan pencurian fokus untuk XV
Description[is]=(Sjálfgefið) Aftengja vörn gegn fókusþjófnaði fyrir XV
Description[it]=(Predefinita) Disabilita la prevenzione della cattura del fuoco per XV

View File

@ -1,14 +0,0 @@
while read line; do
echo $line
done
echo ""
echo "[Blacklist][Lanczos]"
echo "Intel=GM45 Express Chipset GEM 20100328:-:7.8.2,GM45 Express Chipset GEM 20091221:-:7.7.1,965GM GEM 20100328 2010Q1:-:7.8.2,965GM GEM 20091221 2009Q4:-:7.7.1,Ironlake Mobile GEM 20100328:-:7.8.2"
echo "Advanced Micro Devices=DRI R600:-:7.8.1,DRI R600:-:7.8.2"
echo ""
echo "[Blacklist][Blur]"
echo "Advanced Micro Devices=DRI R600:-:7.8.1,DRI R600:-:7.8.2"
echo "Ati=Radeon HD 3650:-:3.3.9901"
echo "NVIDIA=GeForce 6150/PCI/SSE2:-:195"
echo ""

View File

@ -1,3 +0,0 @@
Id=Blacklist-4.5
File=kwinrc
Script=kwin_blacklist.sh,sh

View File

@ -26,7 +26,7 @@ Name[hi]=ड्रंकन
Name[hne]=ड्रंकन
Name[hr]=Pijan
Name[hu]=Dülöngélés
Name[ia]=Inebriato
Name[ia]=Inebriate
Name[id]=Mabuk
Name[is]=Drukkinn
Name[it]=Ubriaco

View File

@ -30,7 +30,7 @@ Name[hi]=ज्वाला
Name[hne]=ज्वाला
Name[hr]=Plamen
Name[hu]=Lángok
Name[ia]=Flammar
Name[ia]=Flamma
Name[id]=Api
Name[is]=Logar
Name[it]=Fiamma

View File

@ -21,7 +21,7 @@ Name[gl]=Engrenaxes no cubo
Name[he]=גלגלי שיניים בקובייה
Name[hi]=क्यूब गेयर
Name[hr]=Kocka s zupčanicima
Name[ia]=Rotas dentate del Cubo
Name[ia]=Rotas dentate del cubo
Name[id]=Gigi Kubus
Name[is]=Kubbagírar
Name[it]=Ingranaggi del cubo
@ -80,7 +80,7 @@ Comment[ga]=Taispeáin giaranna laistigh den chiúb
Comment[gl]=Mostra engrenaxes dentro do cubo
Comment[he]=מציג גלגלי שיניים בתוך קובייה
Comment[hr]=Prikazuj zupčanike unutar kocke
Comment[ia]=Monstrar rotas dentate intra le cubo
Comment[ia]=Monstra rotas dentate intra le cubo
Comment[id]=Tampilkan gigi di dalam kubus
Comment[is]=Sýnir gírhjól innan í kassanum
Comment[it]=Mostra gli ingranaggi nel cubo

View File

@ -29,7 +29,7 @@ Name[hi]=कैसे
Name[hne]=कइसन
Name[hr]=Kako
Name[hu]=Leírás
Name[ia]=Howto (Como Es)
Name[ia]=Howto (Como il es)
Name[id]=Howto
Name[is]=Hvernig
Name[it]=Come si fa

View File

@ -38,6 +38,7 @@ Comment[sr@ijekavianlatin]=Demonstracioni efekat za upotrebu EffectFrames
Comment[sr@latin]=Demonstracioni efekat za upotrebu EffectFrames
Comment[sv]=Demonstationseffekt för att använda effektramar-
Comment[th]=ลูกเล่นสาธิตของการใช้กรอบลูกเล่น (EffectFrames)
Comment[tr]=EfektÇerçeveleri (EffectFrames) kullanımında gösteri efekti
Comment[uk]=Приклад використання EffectFrames
Comment[x-test]=xxDemonstration effect for using EffectFramesxx
Comment[zh_CN]=使用 EffectFrames 的演示特效

View File

@ -18,7 +18,7 @@ Name[ga]=Sleamhnaigh Cluaisíní
Name[he]=החלקת לשוניות
Name[hi]=टैब स्लाइड
Name[hr]=Kliži kartice
Name[ia]=Schedas a Glissar
Name[ia]=Schedas a glissar
Name[id]=Tab Geser
Name[is]=Renna flipum
Name[it]=Fai scivolare le schede
@ -76,7 +76,7 @@ Comment[fy]=Glydet finsters as der wiksele of groepearre wurdt fan ljeppers
Comment[ga]=Sleamhnaigh fuinneoga agus cluaisíní á ngrúpáil nó á n-athrú.
Comment[he]=גלישת חלונות במעבר או קיבוץ לשוניות.
Comment[hr]=Kliži prozore kada se prebacuju između ili grupiraju u kartice.
Comment[ia]=Glissar fenestras quando on commuta o gruppa scheda.
Comment[ia]=Glissa fenestras quando on commuta o gruppa scheda.
Comment[id]=Geser jendela ketika memindahkan atau mengelompokkan tab.
Comment[is]=Renna gluggum yfir skjáinn þegar skipt er um flipa eða þeir eru hópaðir.
Comment[it]=Fai scivolare le finestre quando si cambiano o raggruppano le schede.

View File

@ -25,7 +25,7 @@ Name[ga]=Sleamhnaigh Cluaisíní
Name[he]=החלקת לשוניות
Name[hi]=टैब स्लाइड
Name[hr]=Kliži kartice
Name[ia]=Schedas a Glissar
Name[ia]=Schedas a glissar
Name[id]=Tab Geser
Name[is]=Renna flipum
Name[it]=Fai scivolare le schede

View File

@ -18,7 +18,7 @@ Name[ga]=Cluaisíní Sclóine
Name[he]=לשוניות מסתובבות
Name[hi]=घूमते टैब
Name[hr]=Kartice koje se okreću oko osi
Name[ia]=Schedas cardine
Name[ia]=Schedas de cardine
Name[id]=Tab Putar
Name[is]=Snúa flipum
Name[it]=Fai girare le schede

View File

@ -25,7 +25,7 @@ Name[ga]=Cluaisíní Sclóine
Name[he]=לשוניות מסתובבות
Name[hi]=घूमते टैब
Name[hr]=Kartice koje se okreću oko osi
Name[ia]=Schedas cardine
Name[ia]=Schedas de cardine
Name[id]=Tab Putar
Name[is]=Snúa flipum
Name[it]=Fai girare le schede

View File

@ -29,7 +29,7 @@ Name[hi]=लघुछवि_जाँचें
Name[hne]=चिनहा_जांचव
Name[hr]=Text_Sličica
Name[hu]=Teszt-gyorsnézet
Name[ia]=Test_Thumbnail (Essaya Notas)
Name[ia]=Test_Thumbnail (Essaya miniaturas)
Name[id]=Test_Thumbnail
Name[is]=Prófa_smámynd
Name[it]=Prova_miniatura

View File

@ -32,7 +32,7 @@ Name[hi]=वीडियो रेकॉर्ड
Name[hne]=वीडियो रेकार्ड
Name[hr]=Snimanje videa
Name[hu]=Videófelvevő
Name[ia]=Registrar Video
Name[ia]=Video registra
Name[id]=Rekam Video
Name[is]=Vídeó upptaka
Name[it]=Registra video

View File

@ -39,7 +39,7 @@ Name[hi]=वीडियो रेकॉर्ड
Name[hne]=वीडियो रेकार्ड
Name[hr]=Snimanje videa
Name[hu]=Videófelvevő
Name[ia]=Registrar Video
Name[ia]=Video registra
Name[id]=Rekam Video
Name[is]=Vídeó upptaka
Name[it]=Registra video

View File

@ -32,7 +32,7 @@ Name[hne]=धुंधला करव
Name[hr]=Mrlja
Name[hsb]=Młowojty
Name[hu]=Elmosódás
Name[ia]=Obscurar
Name[ia]=Obscura (Blur)
Name[id]=Samar
Name[is]=Móða
Name[it]=Sfocatura

View File

@ -39,7 +39,7 @@ Name[hne]=धुंधला करव
Name[hr]=Mrlja
Name[hsb]=Młowojty
Name[hu]=Elmosódás
Name[ia]=Obscurar
Name[ia]=Obscura (Blur)
Name[id]=Samar
Name[is]=Móða
Name[it]=Sfocatura

View File

@ -28,7 +28,7 @@ Name[hne]=बाक्स स्विच
Name[hr]=Kartična promjena
Name[hsb]=Kašćikowe přešaltowanje
Name[hu]=Váltódoboz
Name[ia]=Commutator de Quadrato (Box Switch)
Name[ia]=Commutator de quadrato
Name[id]=Ganti Kotak
Name[is]=Kassaskiptir
Name[it]=Scambiafinestre a caselle

View File

@ -35,7 +35,7 @@ Name[hne]=बाक्स स्विच
Name[hr]=Kartična promjena
Name[hsb]=Kašćikowe přešaltowanje
Name[hu]=Váltódoboz
Name[ia]=Commutator de Quadrato (Box Switch)
Name[ia]=Commutator de quadrato
Name[id]=Ganti Kotak
Name[is]=Kassaskiptir
Name[it]=Scambiafinestre a caselle

View File

@ -988,6 +988,8 @@ void CoverSwitchEffect::abort()
void CoverSwitchEffect::slotWindowClosed(EffectWindow* c)
{
if (c == selected_window)
selected_window = 0;
// if the list is not empty, the effect is active
if (!currentWindowList.isEmpty()) {
c->refWindow();

View File

@ -25,7 +25,7 @@ Name[hi]=कवर स्विच
Name[hne]=कवर स्विच
Name[hr]=Pokrivač promjena
Name[hu]=Fedett váltódoboz
Name[ia]=Commutar Copertura
Name[ia]=Commutator de copertura
Name[id]=Ganti Sampul
Name[is]=Síðuskiptir
Name[it]=Scambiafinestre circolare

View File

@ -32,7 +32,7 @@ Name[hi]=कवर स्विच
Name[hne]=कवर स्विच
Name[hr]=Pokrivač promjena
Name[hu]=Fedett váltódoboz
Name[ia]=Commutar Copertura
Name[ia]=Commutator de copertura
Name[id]=Ganti Sampul
Name[is]=Síðuskiptir
Name[it]=Scambiafinestre circolare

View File

@ -29,7 +29,7 @@ Name[hne]=डेस्कटाप घन
Name[hr]=Radna površina na kocki
Name[hsb]=Kóstka
Name[hu]=Asztalkocka
Name[ia]=Cubo de Scriptorio
Name[ia]=Cubo de scriptorio
Name[id]=Kubus Desktop
Name[is]=Skjáborðskubbur
Name[it]=Cubo dei desktop
@ -104,7 +104,7 @@ Comment[hne]=हर एक आभासी डेस्कटाप ल घन
Comment[hr]=Prikazuje svaku virtualnu radnu površinu na strani kocke
Comment[hsb]=Pokazuje kóždy wirtuelny dźěłowy powjerch na boku kóstki
Comment[hu]=A virtuális asztalok egy kocka lapjain jelennek meg
Comment[ia]=Monstrar cata scriptorio virtual sur un facie de un cubo
Comment[ia]=Monstra cata scriptorio virtual sur un facie de un cubo
Comment[id]=Tampilkan tiap desktop virtual di sisi sebuah kubus
Comment[is]=Sýnir hvert sýndarskjáborð á sinni hlið kassa
Comment[it]=Mostra ogni desktop virtuale sul lato di un cubo

View File

@ -36,7 +36,7 @@ Name[hne]=डेस्कटाप घन
Name[hr]=Radna površina na kocki
Name[hsb]=Kóstka
Name[hu]=Asztalkocka
Name[ia]=Cubo de Scriptorio
Name[ia]=Cubo de scriptorio
Name[id]=Kubus Desktop
Name[is]=Skjáborðskubbur
Name[it]=Cubo dei desktop

View File

@ -25,7 +25,7 @@ Name[he]=הנפשת שולחן עבודה בקובייה
Name[hi]=डेस्कटॉप घन एनिमेशन
Name[hr]=Animacija kocke s radnom površinom
Name[hu]=Asztalváltó kocka
Name[ia]=Animation de Cubo de Scriptorio
Name[ia]=Animation de cubo de scriptorio
Name[id]=Animasi Kubus Desktop
Name[is]=Hreyfingar á skjáborðskubbi
Name[it]=Animazione del cubo dei desktop
@ -87,7 +87,7 @@ Comment[gl]=Anima o troco de escritorio cunha forma cúbica
Comment[he]=הנפשת מעבר בין שולחנות־עבודה על־ידי קובייה
Comment[hr]=Animacija promjene radne površine na kocki
Comment[hu]=Asztalváltás kocka alakzattal
Comment[ia]=Commutar scriptorio animate con un cubo
Comment[ia]=Commuta scriptorio animate con un cubo
Comment[id]=Animasi penggantian desktop di dalam kubus
Comment[is]=Hreyfa til skjáborðaskiptingu á kubbi
Comment[it]=Anima il cambio di desktop con un cubo

View File

@ -32,7 +32,7 @@ Name[he]=הנפשת שולחן עבודה בקובייה
Name[hi]=डेस्कटॉप घन एनिमेशन
Name[hr]=Animacija kocke s radnom površinom
Name[hu]=Asztalváltó kocka
Name[ia]=Animation de Cubo de Scriptorio
Name[ia]=Animation de cubo de scriptorio
Name[id]=Animasi Kubus Desktop
Name[is]=Hreyfingar á skjáborðskubbi
Name[it]=Animazione del cubo dei desktop

View File

@ -29,7 +29,7 @@ Name[hi]=डैशबोर्ड
Name[hne]=डेशबोर्ड
Name[hr]=Nadzorna ploča
Name[hu]=Dashboard
Name[ia]=Pannello de Instrumentos
Name[ia]=Pannello de instrumentos
Name[id]=Dasbor
Name[is]=Dashboard
Name[it]=Dashboard
@ -111,6 +111,7 @@ Comment[sr@ijekavianlatin]=Posivljuje površ pri pojavi instrument-table Plasme
Comment[sr@latin]=Posivljuje površ pri pojavi instrument-table Plasme
Comment[sv]=Försvaga skrivbordet när Plasmas instrumentpanel visas
Comment[th]=ลดความอิ่มสีของพื้นที่ทำงาน เมื่อมีการแสดงแดชบอร์ดของพลาสมา
Comment[tr]=Plasma kontrol paneli gösterilirken masaüstünü solgunlaştır
Comment[uk]=Зменшення насиченості кольорів стільниці під час показу панелі приладів Плазми
Comment[x-test]=xxDesaturate the desktop when displaying the Plasma dashboardxx
Comment[zh_TW]=顯示 Plasma 資訊看板時將桌面淡化

View File

@ -36,7 +36,7 @@ Name[hi]=डैशबोर्ड
Name[hne]=डेशबोर्ड
Name[hr]=Nadzorna ploča
Name[hu]=Dashboard
Name[ia]=Pannello de Instrumentos
Name[ia]=Pannello de instrumentos
Name[id]=Dasbor
Name[is]=Dashboard
Name[it]=Dashboard

View File

@ -430,6 +430,8 @@ void DesktopGridEffect::slotWindowClosed(EffectWindow* w)
void DesktopGridEffect::slotWindowDeleted(EffectWindow* w)
{
if (w == windowMove)
windowMove = 0;
for (QHash< DesktopButtonsView*, EffectWindow*>::iterator it = m_desktopButtonsViews.begin();
it != m_desktopButtonsViews.end(); ++it) {
if (it.value() && it.value() == w) {

View File

@ -30,7 +30,7 @@ Name[hi]=डेस्कटॉप ग्रिड
Name[hne]=डेस्कटाप ग्रिड
Name[hr]=Mreža radne površine
Name[hu]=Asztalrács
Name[ia]=Grillia de Scriptorio
Name[ia]=Grillia de scriptorio
Name[id]=Petak Desktop
Name[is]=Skjáborðsmöskvi
Name[it]=Griglia dei Desktop

View File

@ -37,7 +37,7 @@ Name[hi]=डेस्कटॉप ग्रिड
Name[hne]=डेस्कटाप ग्रिड
Name[hr]=Mreža radne površine
Name[hu]=Asztalrács
Name[ia]=Grillia de Scriptorio
Name[ia]=Grillia de scriptorio
Name[id]=Petak Desktop
Name[is]=Skjáborðsmöskvi
Name[it]=Griglia dei Desktop

View File

@ -28,7 +28,7 @@ Name[hi]=मूल संवाद
Name[hne]=मूल गोठ
Name[hr]=Dialog Roditelj
Name[hu]=Párbeszédablak-tartó
Name[ia]=Dialogo Genitor
Name[ia]=Dialogo genitor
Name[id]=Induk Dialog
Name[is]=Dekking undir valglugga
Name[it]=Finestra madre

View File

@ -26,7 +26,7 @@ Name[hi]=प्रबंधक मोड के लिए स्क्रीन
Name[hne]=प्रसासक मोड बर स्क्रीन ल धुंधला कर देव
Name[hr]=Priguši zaslon za administrativni način
Name[hu]=Halványított képernyő rendszergazdai módban
Name[ia]=Schermo Dim pro Modo Administrator
Name[ia]=Schermo Dim pro modo de administrator
Name[id]=Layar Dim Untuk Mode Administrator
Name[is]=Dimma skjá fyrir kerfisstjóraham
Name[it]=Scurisci lo schermo in modalità amministrativa

View File

@ -24,7 +24,7 @@ Name[gu]=ડેસ્કટોપ ઝાંખુ કરો
Name[he]=חשיפה והיעלמות בין שולחנות עבודה
Name[hr]=Preklapanje radnih površina
Name[hu]=Elhalványuló váltás
Name[ia]=Pallidi Scriptorio
Name[ia]=Pallidi scriptorio
Name[id]=Pudar Desktop
Name[is]=Þynna út skjáborð
Name[it]=Dissolvenza dei desktop

View File

@ -26,7 +26,7 @@ Name[hi]=टूट कर गिरना
Name[hne]=टूट कर गिरना
Name[hr]=Raspad
Name[hu]=Szétbontás
Name[ia]=Cader a pecias
Name[ia]=Cade a pecias
Name[id]=Hancur
Name[is]=Sundurfall
Name[it]=Cadi a pezzi

View File

@ -591,6 +591,8 @@ void FlipSwitchEffect::slotWindowAdded(EffectWindow* w)
void FlipSwitchEffect::slotWindowClosed(EffectWindow* w)
{
if (m_selectedWindow == w)
m_selectedWindow = 0;
if (m_active && m_windows.contains(w)) {
m_windows.remove(w);
}

View File

@ -24,7 +24,7 @@ Name[hi]=स्विच बदलें
Name[hne]=फ्लिप स्विच
Name[hr]=Naslagani prozori promjena
Name[hu]=Billenős váltódoboz
Name[ia]=Commuta Colpetto (Flip)
Name[ia]=Commutator de colpetto (Flip)
Name[id]=Melipat
Name[is]=Flettirofi
Name[it]=Scambiafinestre a pila
@ -88,7 +88,7 @@ Comment[he]=מעבר בין חלון המסודרים בערמה במעביר ה
Comment[hne]=आल्ट+टेब विंडो बदलइया मं रखे विंडो ल आपस मं बदलव
Comment[hr]=Prilikom promjene prozora sa alt+tab, prozori se prikazuju naslagani jedan na drugog u 3 dimenzije
Comment[hu]=Halomban megjelenített ablakokkal dolgozó Alt+Tab-os ablakváltó
Comment[ia]=Colpa (Flip) fenestras que es in le stack per le commutator de fenestra alt-tab
Comment[ia]=Colpa (Flip) trans fenestras que es in le stack per le commutator de fenestra alt-tab
Comment[id]=Melipat di antara jendela yang ada di tumpukan untuk pengganti jendela alt+tab
Comment[is]=Flettir í gegnum stafla af gluggum í alt+tab skiptiglugganum
Comment[it]=Sfoglia le finestre ordinate in pila con lo scambiafinestre Alt-Tab

View File

@ -31,7 +31,7 @@ Name[hi]=स्विच बदलें
Name[hne]=फ्लिप स्विच
Name[hr]=Naslagani prozori promjena
Name[hu]=Billenős váltódoboz
Name[ia]=Commuta Colpetto (Flip)
Name[ia]=Commutator de colpetto (Flip)
Name[id]=Melipat
Name[is]=Flettirofi
Name[it]=Scambiafinestre a pila

View File

@ -234,4 +234,9 @@ GlideEffect::WindowInfo::WindowInfo()
{
}
GlideEffect::WindowInfo::~WindowInfo()
{
delete timeLine;
}
} // namespace

View File

@ -17,7 +17,7 @@ Name[ga]=Sleamhnaigh
Name[he]=גלישה
Name[hi]=ग्लाइड
Name[hr]=Klizanje
Name[ia]=Glissar
Name[ia]=Glissa
Name[id]=Glide
Name[is]=Svífa
Name[it]=Plana
@ -70,7 +70,7 @@ Comment[fr]=Fait glisser les fenêtres lorsqu'elles sont ouvertes ou fermées
Comment[ga]=Maisíocht Sleamhnaithe agus fuinneoga á n-oscailt agus á ndúnadh
Comment[he]=אפקט גלישת חלונות בפתיחתם וסגירתם
Comment[hr]=Efekt kližućih prozora dok se otvaraju i zatvaraju
Comment[ia]=Effectos de Glissar durante que illos es aperite e claudite
Comment[ia]=Effectos de glissar durante que illos es aperite e claudite
Comment[id]=Efek Glid Jendela ketika jendela dibuka dan ditutup
Comment[is]=Lætur glugga svífa þegar þeir eru opnaðir eða þeim er lokað
Comment[it]=Effetto di planata delle finestre quando vengono aperte e chiuse

View File

@ -70,9 +70,7 @@ class GlideEffect::WindowInfo
{
public:
WindowInfo();
~WindowInfo() {
delete timeLine;
}
~WindowInfo();
bool deleted;
bool added;
bool closed;

View File

@ -24,7 +24,7 @@ Name[ga]=Sleamhnaigh
Name[he]=גלישה
Name[hi]=ग्लाइड
Name[hr]=Klizanje
Name[ia]=Glissar
Name[ia]=Glissa
Name[id]=Glide
Name[is]=Svífa
Name[it]=Plana

View File

@ -25,7 +25,7 @@ Name[he]=הבלטת חלון
Name[hi]=अनुकृति विंडो
Name[hr]=Označi prozor
Name[hu]=Ablakkiemelés
Name[ia]=Fenestra Evidentiate
Name[ia]=Evidentia fenestra
Name[id]=Sorot Jendela
Name[is]=Ljóma glugga
Name[it]=Evidenzia la finestra

View File

@ -32,7 +32,7 @@ Name[hne]=लागइन
Name[hr]=Prijava
Name[hsb]=Přizjewjenje
Name[hu]=Bejelentkezés
Name[ia]=Accesso
Name[ia]=Accesso de identification
Name[id]=Log Masuk
Name[is]=Innskráning
Name[it]=Accesso
@ -107,7 +107,7 @@ Comment[he]=עמעום המסך בהדרגה בעת הכניסה למערכת
Comment[hne]=जब लागइन होथे तब डेस्कटाप मं धीरे से फेड होथे
Comment[hr]=Lagano pojavljivanje radne površine prilikom prijave na sustav
Comment[hu]=Folyamatos átmenet az asztalra bejelentkezéskor
Comment[ia]=Dulcemente pallidi le scriptorio quando tu accede
Comment[ia]=Dulcemente pallidi le scriptorio quando tu accede in identification
Comment[id]=Memudar dengan halus ke desktop ketika log masuk
Comment[is]=Láta skjáborð koma mjúklega í ljós við innstimplun
Comment[it]=Dissolvenza graduale del desktop all'accesso

View File

@ -97,7 +97,7 @@ Comment[hi]=जब विंडो न्यूनतम किया जा र
Comment[hne]=जब विंडो ल सबसे कम करथे तब एक जादू के बत्ती देखाथे
Comment[hr]=Simulacija čarobne svjetiljke prilikom minimizacije prozora
Comment[hu]=Az ablakok minimalizálása varázslámpás animáció kíséretében történik
Comment[ia]=Simula un lampa magic quando minimiza fenestras
Comment[ia]=Simula un lampa magic quando minimisa fenestras
Comment[id]=Simulasikan sebuah lampu ajaib ketika meminimalkan jendela
Comment[is]=Líkir eftir töfralampa við lágmörkun glugga
Comment[it]=Simula una lampada magica nella minimizzazione delle finestre

View File

@ -110,7 +110,7 @@ Comment[hi]=माउस संकेतक के चारों ओर का
Comment[hne]=मुसुवा के आसपास के स्क्रीन जगह ल आवर्धित करथे
Comment[hr]=Povećanje dijela ekrana koji je blizu pokazivača miša
Comment[hu]=Felnagyítja az egérmutató alatti területet
Comment[ia]=Aggrandir le section del schermo que es vicin al cursor del mus
Comment[ia]=Aggrandi le section del schermo que es vicin al cursor del mus
Comment[id]=Besarkan bagian layar yang dekat dengan kursor tetikus
Comment[is]=Stækkar þann hluta skjásins sem er undir músarbendlinum
Comment[it]=Ingrandisce la parte dello schermo vicina al cursore del mouse

View File

@ -30,7 +30,7 @@ Name[hi]=न्यूनतम करने पर एनीमेशन
Name[hne]=छोटी करे समय एनीमेसन
Name[hr]=Animacija minimizacije
Name[hu]=Animáció minimalizáláskor
Name[ia]=Animation de Minimisar
Name[ia]=Animation de minimisar
Name[id]=Animasi Meminimalkan
Name[is]=Hreyfingar við lágmörkun
Name[it]=Animazione di minimizzazione

View File

@ -30,7 +30,7 @@ Name[hi]=माउस मार्क
Name[hne]=मुसुवा चिनहा
Name[hr]=Oznaka miša
Name[hu]=Egérnyom
Name[ia]=Marca de Mus
Name[ia]=Marca de mus
Name[id]=Tanda Tetikus
Name[is]=Músarspor
Name[it]=Pennarello

View File

@ -37,7 +37,7 @@ Name[hi]=माउस मार्क
Name[hne]=मुसुवा चिनहा
Name[hr]=Oznaka miša
Name[hu]=Egérnyom
Name[ia]=Marca de Mus
Name[ia]=Marca de mus
Name[id]=Tanda Tetikus
Name[is]=Músarspor
Name[it]=Pennarello

View File

@ -257,42 +257,47 @@ void PresentWindowsEffect::prePaintWindow(EffectWindow *w, WindowPrePaintData &d
{
// TODO: We should also check to see if any windows are fading just in case fading takes longer
// than moving the windows when the effect is deactivated.
if ((m_activated || m_motionManager.areWindowsMoving()) && m_windowData.contains(w)) {
if (m_activated || m_motionManager.areWindowsMoving()) {
DataHash::iterator winData = m_windowData.find(w);
if (winData == m_windowData.end()) {
effects->prePaintWindow(w, data, time);
return;
}
w->enablePainting(EffectWindow::PAINT_DISABLED_BY_MINIMIZE); // Display always
w->enablePainting(EffectWindow::PAINT_DISABLED_BY_DESKTOP);
if (m_windowData[w].visible)
if (winData->visible)
w->enablePainting(EffectWindow::PAINT_DISABLED_BY_CLIENT_GROUP);
// Calculate window's opacity
// TODO: Minimized windows or windows not on the current desktop are only 75% visible?
if (m_windowData[w].visible) {
if (m_windowData[w].deleted)
m_windowData[w].opacity = qMax(0.0, m_windowData[w].opacity - time / m_fadeDuration);
if (winData->visible) {
if (winData->deleted)
winData->opacity = qMax(0.0, winData->opacity - time / m_fadeDuration);
else
m_windowData[w].opacity = qMin(/*( w->isMinimized() || !w->isOnCurrentDesktop() ) ? 0.75 :*/ 1.0,
m_windowData[w].opacity + time / m_fadeDuration);
winData->opacity = qMin(/*(w->isMinimized() || !w->isOnCurrentDesktop()) ? 0.75 :*/ 1.0,
winData->opacity + time / m_fadeDuration);
} else
m_windowData[w].opacity = qMax(0.0, m_windowData[w].opacity - time / m_fadeDuration);
if (m_windowData[w].opacity == 0.0) {
winData->opacity = qMax(0.0, winData->opacity - time / m_fadeDuration);
if (winData->opacity <= 0.0) {
// don't disable painting for panels if show panel is set
if (!w->isDock() || (w->isDock() && !m_showPanel))
if (!(m_showPanel && w->isDock()))
w->disablePainting(EffectWindow::PAINT_DISABLED);
} else if (m_windowData[w].opacity != 1.0)
} else if (winData->opacity != 1.0)
data.setTranslucent();
// Calculate window's brightness
if (w == m_highlightedWindow || w == m_closeWindow || !m_activated)
m_windowData[w].highlight = qMin(1.0, m_windowData[w].highlight + time / m_fadeDuration);
winData->highlight = qMin(1.0, winData->highlight + time / m_fadeDuration);
else
m_windowData[w].highlight = qMax(0.0, m_windowData[w].highlight - time / m_fadeDuration);
winData->highlight = qMax(0.0, winData->highlight - time / m_fadeDuration);
// Closed windows
if (m_windowData[w].deleted) {
if (winData->deleted) {
data.setTranslucent();
if (m_windowData[w].opacity <= 0.0 && m_windowData[w].referenced) {
if (winData->opacity <= 0.0 && winData->referenced) {
// it's possible that another effect has referenced the window
// we have to keep the window in the list to prevent flickering
m_windowData[w].referenced = false;
winData->referenced = false;
w->unrefWindow();
} else
w->enablePainting(EffectWindow::PAINT_DISABLED_BY_DELETE);
@ -310,16 +315,17 @@ void PresentWindowsEffect::prePaintWindow(EffectWindow *w, WindowPrePaintData &d
void PresentWindowsEffect::paintWindow(EffectWindow *w, int mask, QRegion region, WindowPaintData &data)
{
if ((m_activated || m_motionManager.areWindowsMoving()) && m_windowData.contains(w)) {
if (w->isDock() && m_showPanel) {
if (m_activated || m_motionManager.areWindowsMoving()) {
DataHash::const_iterator winData = m_windowData.constFind(w);
if (winData == m_windowData.constEnd() || (w->isDock() && m_showPanel)) {
// in case the panel should be shown just display it without any changes
effects->paintWindow(w, mask, region, data);
return;
}
// Apply opacity and brightness
data.opacity *= m_windowData[w].opacity;
data.brightness *= interpolate(0.7, 1.0, m_windowData[w].highlight);
data.opacity *= winData->opacity;
data.brightness *= interpolate(0.7, 1.0, winData->highlight);
if (m_motionManager.isManaging(w)) {
m_motionManager.apply(w, data);
@ -333,7 +339,7 @@ void PresentWindowsEffect::paintWindow(EffectWindow *w, int mask, QRegion region
if (m_showIcons) {
QPoint point(rect.x() + rect.width() * 0.95,
rect.y() + rect.height() * 0.95);
m_windowData[w].iconFrame->setPosition(point);
winData->iconFrame->setPosition(point);
#ifdef KWIN_HAVE_OPENGL_COMPOSITING
if (effects->compositingType() == KWin::OpenGLCompositing && data.shader) {
const float a = 0.9 * data.opacity * m_decalOpacity * 0.75;
@ -342,12 +348,12 @@ void PresentWindowsEffect::paintWindow(EffectWindow *w, int mask, QRegion region
data.shader->setUniform(GLShader::ModulationConstant, QVector4D(a, a, a, a));
}
#endif
m_windowData[w].iconFrame->render(region, 0.9 * data.opacity * m_decalOpacity, 0.75);
winData->iconFrame->render(region, 0.9 * data.opacity * m_decalOpacity, 0.75);
}
if (m_showCaptions) {
QPoint point(rect.x() + rect.width() / 2,
rect.y() + rect.height() / 2);
m_windowData[w].textFrame->setPosition(point);
winData->textFrame->setPosition(point);
#ifdef KWIN_HAVE_OPENGL_COMPOSITING
if (effects->compositingType() == KWin::OpenGLCompositing && data.shader) {
const float a = 0.9 * data.opacity * m_decalOpacity * 0.75;
@ -356,7 +362,7 @@ void PresentWindowsEffect::paintWindow(EffectWindow *w, int mask, QRegion region
data.shader->setUniform(GLShader::ModulationConstant, QVector4D(a, a, a, a));
}
#endif
m_windowData[w].textFrame->render(region, 0.9 * data.opacity * m_decalOpacity, 0.75);
winData->textFrame->render(region, 0.9 * data.opacity * m_decalOpacity, 0.75);
}
} else
effects->paintWindow(w, mask, region, data);
@ -371,24 +377,25 @@ void PresentWindowsEffect::slotWindowAdded(EffectWindow *w)
{
if (!m_activated)
return;
m_windowData[w].visible = isVisibleWindow(w);
m_windowData[w].opacity = 0.0;
m_windowData[w].highlight = 0.0;
m_windowData[w].textFrame = effects->effectFrame(EffectFrameUnstyled, false);
WindowData *winData = &m_windowData[w];
winData->visible = isVisibleWindow(w);
winData->opacity = 0.0;
winData->highlight = 0.0;
winData->textFrame = effects->effectFrame(EffectFrameUnstyled, false);
QFont font;
font.setBold(true);
font.setPointSize(12);
m_windowData[w].textFrame->setFont(font);
m_windowData[w].iconFrame = effects->effectFrame(EffectFrameUnstyled, false);
m_windowData[w].iconFrame->setAlignment(Qt::AlignRight | Qt::AlignBottom);
m_windowData[w].iconFrame->setIcon(w->icon());
winData->textFrame->setFont(font);
winData->iconFrame = effects->effectFrame(EffectFrameUnstyled, false);
winData->iconFrame->setAlignment(Qt::AlignRight | Qt::AlignBottom);
winData->iconFrame->setIcon(w->icon());
if (isSelectableWindow(w)) {
m_motionManager.manage(w);
rearrangeWindows();
}
if (w == effects->findWindow(m_closeView->winId())) {
m_windowData[w].visible = true;
m_windowData[w].highlight = 1.0;
winData->visible = true;
winData->highlight = 1.0;
m_closeWindow = w;
w->setData(WindowForceBlurRole, QVariant(true));
}
@ -398,10 +405,11 @@ void PresentWindowsEffect::slotWindowClosed(EffectWindow *w)
{
if (m_managerWindow == w)
m_managerWindow = NULL;
if (!m_windowData.contains(w))
DataHash::iterator winData = m_windowData.find(w);
if (winData == m_windowData.end())
return;
m_windowData[w].deleted = true;
m_windowData[w].referenced = true;
winData->deleted = true;
winData->referenced = true;
w->refWindow();
if (m_highlightedWindow == w)
setHighlightedWindow(findFirstWindow());
@ -411,8 +419,8 @@ void PresentWindowsEffect::slotWindowClosed(EffectWindow *w)
}
rearrangeWindows();
foreach (EffectWindow * w, m_motionManager.managedWindows()) {
DataHash::iterator winData = m_windowData.find( w );
foreach (EffectWindow *w, m_motionManager.managedWindows()) {
winData = m_windowData.find(w);
if (winData != m_windowData.end() && !winData->deleted)
return; // found one that is not deleted? then we go on
}
@ -421,11 +429,12 @@ void PresentWindowsEffect::slotWindowClosed(EffectWindow *w)
void PresentWindowsEffect::slotWindowDeleted(EffectWindow *w)
{
if (!m_windowData.contains(w))
DataHash::iterator winData = m_windowData.find(w);
if (winData == m_windowData.end())
return;
delete m_windowData[w].textFrame;
delete m_windowData[w].iconFrame;
m_windowData.remove(w);
delete winData->textFrame;
delete winData->iconFrame;
m_windowData.erase(winData);
m_motionManager.unmanage(w);
}
@ -474,10 +483,12 @@ void PresentWindowsEffect::windowInputMouseEvent(Window w, QEvent *e)
// We cannot use m_motionManager.windowAtPoint() as the window might not be visible
EffectWindowList windows = m_motionManager.managedWindows();
bool hovering = false;
for (int i = 0; i < windows.size(); i++) {
assert(m_windowData.contains(windows.at(i)));
for (int i = 0; i < windows.size(); ++i) {
DataHash::const_iterator winData = m_windowData.constFind(windows.at(i));
if (winData == m_windowData.constEnd())
continue;
if (m_motionManager.transformedGeometry(windows.at(i)).contains(cursorPos()) &&
m_windowData[windows.at(i)].visible && !m_windowData[windows.at(i)].deleted) {
winData->visible && !winData->deleted) {
hovering = true;
if (windows.at(i) && m_highlightedWindow != windows.at(i))
setHighlightedWindow(windows.at(i));
@ -844,26 +855,26 @@ void PresentWindowsEffect::rearrangeWindows()
else
windowlist = m_motionManager.managedWindows();
foreach (EffectWindow * w, m_motionManager.managedWindows()) {
if (m_windowData[w].deleted)
DataHash::iterator winData = m_windowData.find(w);
if (winData == m_windowData.end() || winData->deleted)
continue; // don't include closed windows
windowlists[w->screen()].append(w);
assert(m_windowData.contains(w));
m_windowData[w].visible = true;
winData->visible = true;
}
} else {
// Can we move this filtering somewhere else?
foreach (EffectWindow * w, m_motionManager.managedWindows()) {
assert(m_windowData.contains(w));
if (m_windowData[w].deleted)
DataHash::iterator winData = m_windowData.find(w);
if (winData == m_windowData.end() || winData->deleted)
continue; // don't include closed windows
if (w->caption().contains(m_windowFilter, Qt::CaseInsensitive) ||
w->windowClass().contains(m_windowFilter, Qt::CaseInsensitive) ||
w->windowRole().contains(m_windowFilter, Qt::CaseInsensitive)) {
windowlist.append(w);
windowlists[w->screen()].append(w);
m_windowData[w].visible = true;
winData->visible = true;
} else
m_windowData[w].visible = false;
winData->visible = false;
}
}
if (windowlist.isEmpty()) {
@ -873,8 +884,8 @@ void PresentWindowsEffect::rearrangeWindows()
// We filtered out the highlighted window
if (m_highlightedWindow) {
assert(m_windowData.contains(m_highlightedWindow));
if (m_windowData[m_highlightedWindow].visible == false)
DataHash::iterator winData = m_windowData.find(m_highlightedWindow);
if (winData != m_windowData.end() && !winData->visible)
setHighlightedWindow(findFirstWindow());
} else if (m_tabBoxEnabled)
setHighlightedWindow(effects->currentTabBoxWindow());
@ -911,12 +922,15 @@ void PresentWindowsEffect::rearrangeWindows()
// Resize text frames if required
QFontMetrics* metrics = NULL; // All fonts are the same
foreach (EffectWindow * w, m_motionManager.managedWindows()) {
DataHash::iterator winData = m_windowData.find(w);
if (winData == m_windowData.end())
continue;
if (!metrics)
metrics = new QFontMetrics(m_windowData[w].textFrame->font());
metrics = new QFontMetrics(winData->textFrame->font());
QRect geom = m_motionManager.targetGeometry(w).toRect();
QString string = metrics->elidedText(w->caption(), Qt::ElideRight, geom.width() * 0.9);
if (string != m_windowData[w].textFrame->text())
m_windowData[w].textFrame->setText(string);
if (string != winData->textFrame->text())
winData->textFrame->setText(string);
}
delete metrics;
}
@ -936,6 +950,13 @@ void PresentWindowsEffect::calculateWindowTransformations(EffectWindowList windo
m_windowData.clear();
}
static inline int distance(QPoint &pos1, QPoint &pos2)
{
const int xdiff = pos1.x() - pos2.x();
const int ydiff = pos1.y() - pos2.y();
return int(sqrt(float(xdiff*xdiff + ydiff*ydiff)));
}
void PresentWindowsEffect::calculateWindowTransformationsClosest(EffectWindowList windowlist, int screen,
WindowMotionManager& motionManager)
{
@ -957,43 +978,68 @@ void PresentWindowsEffect::calculateWindowTransformationsClosest(EffectWindowLis
}
// Assign slots
foreach (EffectWindow * w, windowlist)
m_windowData[w].slot = -1;
int slotWidth = area.width() / columns;
int slotHeight = area.height() / rows;
QVector<EffectWindow*> takenSlots;
takenSlots.resize(rows*columns);
takenSlots.fill(0);
if (m_tabBoxEnabled) {
// Rearrange in the correct order. As rearrangeWindows() is only ever
// called once so we can use effects->currentTabBoxWindow() here.
int selectedWindow = qMax(0, windowlist.indexOf(effects->currentTabBoxWindow()));
int slot = 0;
for (int i = selectedWindow; i < windowlist.count(); i++)
m_windowData[windowlist[i]].slot = slot++;
for (int i = selectedWindow - 1; i >= 0; i--)
m_windowData[windowlist[i]].slot = slot++;
int j = 0;
for (int i = selectedWindow; i < windowlist.count(); ++i)
takenSlots[j++] = windowlist[i];
for (int i = selectedWindow - 1; i >= 0; --i)
takenSlots[j++] = windowlist[i];
} else {
for (;;) {
// Assign each window to the closest available slot
assignSlots(windowlist, area, columns, rows);
// Leave only the closest window in each slot, remove further conflicts
getBestAssignments(windowlist);
bool allAssigned = true;
foreach (EffectWindow * w, windowlist)
if (m_windowData[w].slot == -1) {
allAssigned = false;
break;
// precalculate all slot centers
QVector<QPoint> slotCenters;
slotCenters.resize(rows*columns);
for (int x = 0; x < columns; ++x)
for (int y = 0; y < rows; ++y) {
slotCenters[x + y*columns] = QPoint(area.x() + slotWidth * x + slotWidth / 2,
area.y() + slotHeight * y + slotHeight / 2);
}
if (allAssigned)
break;
// Assign each window to the closest available slot
EffectWindowList tmpList = windowlist; // use a QLinkedList copy instead?
QPoint otherPos;
while (!tmpList.isEmpty()) {
EffectWindow *w = tmpList.first();
int slotCandidate = -1, slotCandidateDistance = INT_MAX;
QPoint pos = w->geometry().center();
for (int i = 0; i < columns*rows; ++i) { // all slots
const int dist = distance(pos, slotCenters[i]);
if (dist < slotCandidateDistance) { // window is interested in this slot
EffectWindow *occupier = takenSlots[i];
assert(occupier != w);
if (!occupier || dist < distance((otherPos = occupier->geometry().center()), slotCenters[i])) {
// either nobody lives here, or we're better - takeover the slot if it's our best
slotCandidate = i;
slotCandidateDistance = dist;
}
}
}
assert(slotCandidate != -1);
if (takenSlots[slotCandidate])
tmpList << takenSlots[slotCandidate]; // occupier needs a new home now :p
tmpList.removeAll(w);
takenSlots[slotCandidate] = w; // ...and we rumble in =)
}
}
int slotWidth = area.width() / columns;
int slotHeight = area.height() / rows;
foreach (EffectWindow * w, windowlist) {
assert(m_windowData[w].slot != -1);
for (int slot = 0; slot < columns*rows; ++slot) {
EffectWindow *w = takenSlots[slot];
if (!w) // some slots might be empty
continue;
// Work out where the slot is
QRect target(
area.x() + (m_windowData[w].slot % columns) * slotWidth,
area.y() + (m_windowData[w].slot / columns) * slotHeight,
area.x() + (slot % columns) * slotWidth,
area.y() + (slot / columns) * slotHeight,
slotWidth, slotHeight);
target.adjust(10, 10, -10, -10); // Borders
double scale;
@ -1142,7 +1188,10 @@ void PresentWindowsEffect::calculateWindowTransformationsKompose(EffectWindowLis
EffectWindow* window = windowlist[pos];
QRect target = geometryRects[pos];
target.setY(target.y() + topOffset);
m_windowData[window].slot = pos;
// @Marrtin: any idea what this is good for?
// DataHash::iterator winData = m_windowData.find(window);
// if (winData != m_windowData.end())
// winData->slot = pos;
motionManager.moveWindow(window, target);
//kDebug(1212) << "Window '" << window->caption() << "' gets moved to (" <<
@ -1161,8 +1210,8 @@ void PresentWindowsEffect::calculateWindowTransformationsNatural(EffectWindowLis
// just have a single window on a Xinerama screen or have two windows that do not touch.
// TODO: Work out why this happens, is most likely a bug in the manager.
foreach (EffectWindow * w, windowlist)
if (motionManager.transformedGeometry(w) == w->geometry())
motionManager.reset(w);
if (motionManager.transformedGeometry(w) == w->geometry())
motionManager.reset(w);
if (windowlist.count() == 1) {
// Just move the window to its original location to save time
@ -1200,26 +1249,29 @@ void PresentWindowsEffect::calculateWindowTransformationsNatural(EffectWindowLis
do {
overlap = false;
foreach (EffectWindow * w, windowlist) {
QRect *target_w = &targets[w];
foreach (EffectWindow * e, windowlist) {
if (w != e && targets[w].adjusted(-5, -5, 5, 5).intersects(
targets[e].adjusted(-5, -5, 5, 5))) {
if (w == e)
continue;
QRect *target_e = &targets[e];
if (target_w->adjusted(-5, -5, 5, 5).intersects(target_e->adjusted(-5, -5, 5, 5))) {
overlap = true;
// Determine pushing direction
QPoint diff(targets[e].center() - targets[w].center());
QPoint diff(target_e->center() - target_w->center());
// Prevent dividing by zero and non-movement
if (diff.x() == 0 && diff.y() == 0)
diff.setX(1);
// Try to keep screen aspect ratio
//if ( bounds.height() / bounds.width() > area.height() / area.width() )
// diff.setY( diff.y() / 2 );
//if (bounds.height() / bounds.width() > area.height() / area.width())
// diff.setY(diff.y() / 2);
//else
// diff.setX( diff.x() / 2 );
// diff.setX(diff.x() / 2);
// Approximate a vector of between 10px and 20px in magnitude in the same direction
diff *= m_accuracy / double(diff.manhattanLength());
// Move both windows apart
targets[w].translate(-diff);
targets[e].translate(diff);
target_w->translate(-diff);
target_e->translate(diff);
// Try to keep the bounding rect the same aspect as the screen so that more
// screen real estate is utilised. We do this by splitting the screen into nine
@ -1231,8 +1283,8 @@ void PresentWindowsEffect::calculateWindowTransformationsNatural(EffectWindowLis
// in some situations. We need to do this even when expanding later just in case
// all windows are the same size.
// (We are using an old bounding rect for this, hopefully it doesn't matter)
int xSection = (targets[w].x() - bounds.x()) / (bounds.width() / 3);
int ySection = (targets[w].y() - bounds.y()) / (bounds.height() / 3);
int xSection = (target_w->x() - bounds.x()) / (bounds.width() / 3);
int ySection = (target_w->y() - bounds.y()) / (bounds.height() / 3);
diff = QPoint(0, 0);
if (xSection != 1 || ySection != 1) { // Remove this if you want the center to pull as well
if (xSection == 1)
@ -1241,21 +1293,21 @@ void PresentWindowsEffect::calculateWindowTransformationsNatural(EffectWindowLis
ySection = (directions[w] % 2 ? 2 : 0);
}
if (xSection == 0 && ySection == 0)
diff = QPoint(bounds.topLeft() - targets[w].center());
diff = QPoint(bounds.topLeft() - target_w->center());
if (xSection == 2 && ySection == 0)
diff = QPoint(bounds.topRight() - targets[w].center());
diff = QPoint(bounds.topRight() - target_w->center());
if (xSection == 2 && ySection == 2)
diff = QPoint(bounds.bottomRight() - targets[w].center());
diff = QPoint(bounds.bottomRight() - target_w->center());
if (xSection == 0 && ySection == 2)
diff = QPoint(bounds.bottomLeft() - targets[w].center());
diff = QPoint(bounds.bottomLeft() - target_w->center());
if (diff.x() != 0 || diff.y() != 0) {
diff *= m_accuracy / double(diff.manhattanLength());
targets[w].translate(diff);
target_w->translate(diff);
}
// Update bounding rect
bounds = bounds.united(targets[w]);
bounds = bounds.united(targets[e]);
bounds = bounds.united(*target_w);
bounds = bounds.united(*target_e);
}
}
}
@ -1279,13 +1331,15 @@ void PresentWindowsEffect::calculateWindowTransformationsNatural(EffectWindowLis
);
// Move all windows back onto the screen and set their scale
foreach (EffectWindow * w, windowlist)
targets[w] = QRect(
(targets[w].x() - bounds.x()) * scale + area.x(),
(targets[w].y() - bounds.y()) * scale + area.y(),
targets[w].width() * scale,
targets[w].height() * scale
);
QHash<EffectWindow*, QRect>::iterator target = targets.begin();
while (target != targets.end()) {
target->setRect((target->x() - bounds.x()) * scale + area.x(),
(target->y() - bounds.y()) * scale + area.y(),
target->width() * scale,
target->height() * scale
);
++target;
}
// Try to fill the gaps by enlarging windows if they have the space
if (m_fillGaps) {
@ -1298,61 +1352,61 @@ void PresentWindowsEffect::calculateWindowTransformationsNatural(EffectWindowLis
moved = false;
foreach (EffectWindow * w, windowlist) {
QRect oldRect;
QRect *target = &targets[w];
// This may cause some slight distortion if the windows are enlarged a large amount
int widthDiff = m_accuracy;
int heightDiff = heightForWidth(w, targets[w].width() + widthDiff) - targets[w].height();
int heightDiff = heightForWidth(w, target->width() + widthDiff) - target->height();
int xDiff = widthDiff / 2; // Also move a bit in the direction of the enlarge, allows the
int yDiff = heightDiff / 2; // center windows to be enlarged if there is gaps on the side.
// Attempt enlarging to the top-right
oldRect = targets[w];
targets[w] = QRect(
targets[w].x() + xDiff,
targets[w].y() - yDiff - heightDiff,
targets[w].width() + widthDiff,
targets[w].height() + heightDiff
);
oldRect = *target;
target->setRect(target->x() + xDiff,
target->y() - yDiff - heightDiff,
target->width() + widthDiff,
target->height() + heightDiff
);
if (isOverlappingAny(w, targets, borderRegion))
targets[w] = oldRect;
*target = oldRect;
else
moved = true;
// Attempt enlarging to the bottom-right
oldRect = targets[w];
targets[w] = QRect(
targets[w].x() + xDiff,
targets[w].y() + yDiff,
targets[w].width() + widthDiff,
targets[w].height() + heightDiff
oldRect = *target;
target->setRect(
target->x() + xDiff,
target->y() + yDiff,
target->width() + widthDiff,
target->height() + heightDiff
);
if (isOverlappingAny(w, targets, borderRegion))
targets[w] = oldRect;
*target = oldRect;
else
moved = true;
// Attempt enlarging to the bottom-left
oldRect = targets[w];
targets[w] = QRect(
targets[w].x() - xDiff - widthDiff,
targets[w].y() + yDiff,
targets[w].width() + widthDiff,
targets[w].height() + heightDiff
oldRect = *target;
target->setRect(
target->x() - xDiff - widthDiff,
target->y() + yDiff,
target->width() + widthDiff,
target->height() + heightDiff
);
if (isOverlappingAny(w, targets, borderRegion))
targets[w] = oldRect;
*target = oldRect;
else
moved = true;
// Attempt enlarging to the top-left
oldRect = targets[w];
targets[w] = QRect(
targets[w].x() - xDiff - widthDiff,
targets[w].y() - yDiff - heightDiff,
targets[w].width() + widthDiff,
targets[w].height() + heightDiff
oldRect = *target;
target->setRect(
target->x() - xDiff - widthDiff,
target->y() - yDiff - heightDiff,
target->width() + widthDiff,
target->height() + heightDiff
);
if (isOverlappingAny(w, targets, borderRegion))
targets[w] = oldRect;
*target = oldRect;
else
moved = true;
}
@ -1362,12 +1416,13 @@ void PresentWindowsEffect::calculateWindowTransformationsNatural(EffectWindowLis
// We can't add this to the loop above as it would cause a never-ending loop so we have to make
// do with the less-than-optimal space usage with using this method.
foreach (EffectWindow * w, windowlist) {
double scale = targets[w].width() / double(w->width());
QRect *target = &targets[w];
double scale = target->width() / double(w->width());
if (scale > 2.0 || (scale > 1.0 && (w->width() > 300 || w->height() > 300))) {
scale = (w->width() > 300 || w->height() > 300) ? 1.0 : 2.0;
targets[w] = QRect(
targets[w].center().x() - int(w->width() * scale) / 2,
targets[w].center().y() - int(w->height() * scale) / 2,
target->setRect(
target->center().x() - int(w->width() * scale) / 2,
target->center().y() - int(w->height() * scale) / 2,
w->width() * scale,
w->height() * scale);
}
@ -1376,76 +1431,23 @@ void PresentWindowsEffect::calculateWindowTransformationsNatural(EffectWindowLis
// Notify the motion manager of the targets
foreach (EffectWindow * w, windowlist)
motionManager.moveWindow(w, targets[w]);
motionManager.moveWindow(w, targets.value(w));
}
//-----------------------------------------------------------------------------
// Helper functions for window rearranging
void PresentWindowsEffect::assignSlots(EffectWindowList windowlist, const QRect &area, int columns, int rows)
{
QVector< bool > taken;
taken.fill(false, columns * rows);
foreach (EffectWindow * w, windowlist)
if (m_windowData[w].slot != -1)
taken[ m_windowData[w].slot ] = true;
int slotWidth = area.width() / columns;
int slotHeight = area.height() / rows;
foreach (EffectWindow * w, windowlist) {
WindowData *wData = &m_windowData[w];
if (wData->slot != -1)
continue; // it already has a slot
QPoint pos = w->geometry().center();
if (pos.x() < area.left())
pos.setX(area.left());
if (pos.x() > area.right())
pos.setX(area.right());
if (pos.y() < area.top())
pos.setY(area.top());
if (pos.y() > area.bottom())
pos.setY(area.bottom());
int distance = INT_MAX;
for (int x = 0; x < columns; x++)
for (int y = 0; y < rows; y++) {
int slot = x + y * columns;
if (taken[slot])
continue;
int xdiff = pos.x() - (area.x() + slotWidth * x + slotWidth / 2);
int ydiff = pos.y() - (area.y() + slotHeight * y + slotHeight / 2);
int dist = int(sqrt(double(xdiff * xdiff + ydiff * ydiff)));
if (dist < distance) {
distance = dist;
wData->slot = slot;
wData->slot_distance = distance;
}
}
}
}
void PresentWindowsEffect::getBestAssignments(EffectWindowList windowlist)
{
foreach (EffectWindow * w1, windowlist) {
WindowData *windowData1 = &m_windowData[w1];
foreach (EffectWindow * w2, windowlist) {
WindowData *windowData2 = &m_windowData[w2];
if (w1 != w2 && windowData1->slot == windowData2->slot &&
windowData1->slot_distance >= windowData2->slot_distance)
windowData1->slot = -1;
}
}
}
bool PresentWindowsEffect::isOverlappingAny(EffectWindow *w, const QHash<EffectWindow*, QRect> &targets, const QRegion &border)
{
if (border.intersects(targets[w]))
QHash<EffectWindow*, QRect>::const_iterator winTarget = targets.find(w);
if (winTarget == targets.constEnd())
return false;
if (border.intersects(*winTarget))
return true;
// Is there a better way to do this?
QHash<EffectWindow*, QRect>::const_iterator i;
for (i = targets.constBegin(); i != targets.constEnd(); ++i) {
if (w == i.key())
QHash<EffectWindow*, QRect>::const_iterator target;
for (target = targets.constBegin(); target != targets.constEnd(); ++target) {
if (target == winTarget)
continue;
if (targets[w].adjusted(-5, -5, 5, 5).intersects(
i.value().adjusted(-5, -5, 5, 5)))
if (winTarget->adjusted(-5, -5, 5, 5).intersects(target->adjusted(-5, -5, 5, 5)))
return true;
}
return false;
@ -1475,37 +1477,44 @@ void PresentWindowsEffect::setActive(bool active, bool closingTab)
// Add every single window to m_windowData (Just calling [w] creates it)
foreach (EffectWindow * w, effects->stackingOrder()) {
if (m_windowData.contains(w)) // Happens if we reactivate before the ending animation finishes
continue;
m_windowData[w].visible = isVisibleWindow(w);
m_windowData[w].deleted = false;
m_windowData[w].referenced = false;
m_windowData[w].opacity = 0.0;
DataHash::iterator winData;
if ((winData = m_windowData.find(w)) != m_windowData.end()) {
winData->visible = isVisibleWindow(w);
continue; // Happens if we reactivate before the ending animation finishes
}
winData = m_windowData.insert(w, WindowData());
winData->visible = isVisibleWindow(w);
winData->deleted = false;
winData->referenced = false;
winData->opacity = 0.0;
if (w->isOnCurrentDesktop() && !w->isMinimized())
m_windowData[w].opacity = 1.0;
m_windowData[w].highlight = 1.0;
m_windowData[w].textFrame = effects->effectFrame(EffectFrameUnstyled, false);
winData->opacity = 1.0;
winData->highlight = 1.0;
winData->textFrame = effects->effectFrame(EffectFrameUnstyled, false);
QFont font;
font.setBold(true);
font.setPointSize(12);
m_windowData[w].textFrame->setFont(font);
m_windowData[w].iconFrame = effects->effectFrame(EffectFrameUnstyled, false);
m_windowData[w].iconFrame->setAlignment(Qt::AlignRight | Qt::AlignBottom);
m_windowData[w].iconFrame->setIcon(w->icon());
winData->textFrame->setFont(font);
winData->iconFrame = effects->effectFrame(EffectFrameUnstyled, false);
winData->iconFrame->setAlignment(Qt::AlignRight | Qt::AlignBottom);
winData->iconFrame->setIcon(w->icon());
}
if (m_tabBoxEnabled) {
DataHash::iterator winData;
foreach (EffectWindow * w, effects->currentTabBoxWindowList()) {
if (!w)
continue;
m_motionManager.manage(w);
assert(m_windowData.contains(w));
m_windowData[w].visible = effects->currentTabBoxWindowList().contains(w);
if ((winData = m_windowData.find(w)) != m_windowData.end())
winData->visible = effects->currentTabBoxWindowList().contains(w);
}
// Hide windows not in the list
foreach (EffectWindow * w, effects->stackingOrder())
m_windowData[w].visible = isVisibleWindow(w) &&
(!isSelectableWindow(w) || effects->currentTabBoxWindowList().contains(w));
foreach (EffectWindow * w, effects->stackingOrder()) {
if ((winData = m_windowData.find(w)) != m_windowData.end())
winData->visible = isVisibleWindow(w) &&
(!isSelectableWindow(w) || effects->currentTabBoxWindowList().contains(w));
}
} else {
// Filter out special windows such as panels and taskbars
foreach (EffectWindow * w, effects->stackingOrder())
@ -1522,7 +1531,7 @@ void PresentWindowsEffect::setActive(bool active, bool closingTab)
while (i != m_windowData.end()) {
delete i.value().textFrame;
delete i.value().iconFrame;
i++;
++i;
}
m_windowData.clear();
@ -1536,7 +1545,7 @@ void PresentWindowsEffect::setActive(bool active, bool closingTab)
effects->setActiveFullScreenEffect(this);
m_gridSizes.clear();
for (int i = 0; i < effects->numScreens(); i++)
for (int i = 0; i < effects->numScreens(); ++i)
m_gridSizes.append(GridSize());
rearrangeWindows();
@ -1559,9 +1568,10 @@ void PresentWindowsEffect::setActive(bool active, bool closingTab)
if (activeWindow && !activeWindow->isOnAllDesktops())
desktop = activeWindow->desktop();
foreach (EffectWindow * w, effects->stackingOrder()) {
assert(m_windowData.contains(w));
m_windowData[w].visible = (w->isOnDesktop(desktop) || w->isOnAllDesktops()) &&
!w->isMinimized() && (w->visibleInClientGroup() || m_windowData[w].visible);
DataHash::iterator winData = m_windowData.find(w);
if (winData != m_windowData.end())
winData->visible = (w->isOnDesktop(desktop) || w->isOnAllDesktops()) &&
!w->isMinimized() && (w->visibleInClientGroup() || winData->visible);
}
delete m_closeView;
m_closeView = 0;
@ -1701,7 +1711,8 @@ EffectWindow* PresentWindowsEffect::relativeWindow(EffectWindow *w, int xdiff, i
detectRect = QRect(0, wArea.y(), area.width(), wArea.height());
next = NULL;
foreach (EffectWindow * e, m_motionManager.managedWindows()) {
if (!m_windowData[e].visible)
DataHash::const_iterator winData = m_windowData.find(e);
if (winData == m_windowData.end() || !winData->visible)
continue;
QRectF eArea = m_motionManager.transformedGeometry(e);
if (eArea.intersects(detectRect) &&
@ -1730,7 +1741,8 @@ EffectWindow* PresentWindowsEffect::relativeWindow(EffectWindow *w, int xdiff, i
detectRect = QRect(0, wArea.y(), area.width(), wArea.height());
next = NULL;
foreach (EffectWindow * e, m_motionManager.managedWindows()) {
if (!m_windowData[e].visible)
DataHash::const_iterator winData = m_windowData.find(e);
if (winData == m_windowData.end() || !winData->visible)
continue;
QRectF eArea = m_motionManager.transformedGeometry(e);
if (eArea.intersects(detectRect) &&
@ -1764,7 +1776,8 @@ EffectWindow* PresentWindowsEffect::relativeWindow(EffectWindow *w, int xdiff, i
detectRect = QRect(wArea.x(), 0, wArea.width(), area.height());
next = NULL;
foreach (EffectWindow * e, m_motionManager.managedWindows()) {
if (!m_windowData[e].visible)
DataHash::const_iterator winData = m_windowData.find(e);
if (winData == m_windowData.end() || !winData->visible)
continue;
QRectF eArea = m_motionManager.transformedGeometry(e);
if (eArea.intersects(detectRect) &&
@ -1793,7 +1806,8 @@ EffectWindow* PresentWindowsEffect::relativeWindow(EffectWindow *w, int xdiff, i
detectRect = QRect(wArea.x(), 0, wArea.width(), area.height());
next = NULL;
foreach (EffectWindow * e, m_motionManager.managedWindows()) {
if (!m_windowData[e].visible)
DataHash::const_iterator winData = m_windowData.find(e);
if (winData == m_windowData.end() || !winData->visible)
continue;
QRectF eArea = m_motionManager.transformedGeometry(e);
if (eArea.intersects(detectRect) &&
@ -1826,10 +1840,13 @@ EffectWindow* PresentWindowsEffect::findFirstWindow() const
EffectWindow *topLeft = NULL;
QRectF topLeftGeometry;
foreach (EffectWindow * w, m_motionManager.managedWindows()) {
DataHash::const_iterator winData = m_windowData.find(w);
if (winData == m_windowData.end())
continue;
QRectF geometry = m_motionManager.transformedGeometry(w);
if (m_windowData[w].visible == false)
if (winData->visible == false)
continue; // Not visible
if (m_windowData[w].deleted)
if (winData->deleted)
continue; // Window has been closed
if (topLeft == NULL) {
topLeft = w;

View File

@ -30,7 +30,7 @@ Name[hi]=मौजूद विंडो
Name[hne]=मौजूद विंडो
Name[hr]=Prikaz prozora
Name[hu]=Ablakáttekintő
Name[ia]=Fenestras Actual
Name[ia]=Fenestras actual
Name[id]=Jendela Yang Hadir
Name[is]=Núverandi gluggar
Name[it]=Presenta le finestre

View File

@ -74,8 +74,6 @@ private:
bool referenced;
double opacity;
double highlight;
int slot;
int slot_distance;
EffectFrame* textFrame;
EffectFrame* iconFrame;
};
@ -185,8 +183,6 @@ protected:
inline int heightForWidth(EffectWindow *w, int width) {
return int((width / double(w->width())) * w->height());
}
void assignSlots(EffectWindowList windowlist, const QRect &area, int columns, int rows);
void getBestAssignments(EffectWindowList windowlist);
bool isOverlappingAny(EffectWindow *w, const QHash<EffectWindow*, QRect> &targets, const QRegion &border);
// Filter box

View File

@ -37,7 +37,7 @@ Name[hi]=मौजूद विंडो
Name[hne]=मौजूद विंडो
Name[hr]=Prikaz prozora
Name[hu]=Ablakáttekintő
Name[ia]=Fenestras Actual
Name[ia]=Fenestras actual
Name[id]=Jendela Yang Hadir
Name[is]=Núverandi gluggar
Name[it]=Presenta le finestre

View File

@ -25,7 +25,7 @@ Name[he]=שינוי גודל חלון
Name[hi]=विंडो आकार बदलें
Name[hr]=Promjena veličine prozora
Name[hu]=Ablak átméretezése
Name[ia]=Redimensiona Fenestra
Name[ia]=Redimensiona fenestra
Name[id]=Ubah Ukuran Jendela
Name[is]=Breyta stærð glugga
Name[it]=Ridimensiona la finestra
@ -70,6 +70,7 @@ Comment[ca]=Redimensiona les finestres amb un escalat de textura ràpid enlloc d
Comment[ca@valencia]=Redimensiona les finestres amb un escalat de textura ràpid enlloc d'actualitzar els continguts
Comment[cs]=Změní velikost okna s využitím rychlého škálování textury místo aktualizace obsahu
Comment[da]=Ændrer størrelse på vinduer med en hurtig teksturskalering i stedet for at opdatere indholdet
Comment[de]=Schnelles Skalieren der Fenster-Texturen ohne Aktualisierung des Fensterinhalts
Comment[el]=Αλλάζει το μέγεθος του παραθύρου χρησιμοποιώντας ταχείες υφές αντί να ανανεώνει τα περιεχόμενα
Comment[en_GB]=Resizes windows with a fast texture scale instead of updating contents
Comment[es]=Redimensiona las ventanas con un escalado rápido de texturas en lugar de actualizando los contenidos
@ -97,6 +98,7 @@ Comment[sr@ijekavianlatin]=Promena veličine prozora brzim teksturnim skaliranje
Comment[sr@latin]=Promena veličine prozora brzim teksturnim skaliranjem umesto ažuriranjem sadržaja
Comment[sv]=Ändrar storlek på fönster med en snabb strukturskalning istället för att uppdatera innehållet.
Comment[th]=ปรับขนาดหน้าต่างด้วยการปรับพื้นผิวอย่างรวดเร็ว แทนการปรับปรุงเนื้อหาภายในหน้าต่าง
Comment[tr]=İçeriklerini güncellemek yerine pencereleri hızlı bir doku ölçeğiyle yeniden boyutlandırır.
Comment[uk]=Зміна розмірів вікон швидким масштабуванням текстур замість оновлення вмісту вікон
Comment[x-test]=xxResizes windows with a fast texture scale instead of updating contentsxx
Comment[zh_TW]=用快速調整縮放而不是更新內容的方式重新調整視窗大小

View File

@ -32,7 +32,7 @@ Name[he]=שינוי גודל חלון
Name[hi]=विंडो आकार बदलें
Name[hr]=Promjena veličine prozora
Name[hu]=Ablak átméretezése
Name[ia]=Redimensiona Fenestra
Name[ia]=Redimensiona fenestra
Name[id]=Ubah Ukuran Jendela
Name[is]=Breyta stærð glugga
Name[it]=Ridimensiona la finestra

View File

@ -91,6 +91,7 @@ Comment[sr@ijekavianlatin]=Upisuje snimak aktivnog prozora u domaću fasciklu
Comment[sr@latin]=Upisuje snimak aktivnog prozora u domaću fasciklu
Comment[sv]=Sparar en skärmbild av det aktiva fönstret i hemkatalogen
Comment[th]=บันทึกการจับภาพหน้าจอของหน้าต่างที่ทำงานอยู่ไปเก็บไว้ในไดเรกทอรีพื้นที่ส่วนตัว
Comment[tr]=Etkin pencerenin ekran görüntüsünü ev dizinine kaydeder
Comment[uk]=Зберігає знімок активного вікна до домашнього каталогу
Comment[x-test]=xxSaves screenshot of active window into the home directoryxx
Comment[zh_TW]=將目前作用中視窗的快照儲存到家目錄中

View File

@ -28,7 +28,7 @@ Name[hi]=पेंट दिखाएं
Name[hne]=पेंट देखाव
Name[hr]=Prikaz nedavnih promjena
Name[hu]=Megmutatja a kirajzolt területeket
Name[ia]=Monstra Pictura
Name[ia]=Monstra pictura
Name[id]=Tampilkan Lukisan
Name[is]=Sýna teikningu
Name[it]=Mostra il ridisegno

View File

@ -77,7 +77,7 @@ Comment[ga]=Beochan sleamhnaithe le haghaidh preabfhuinneog Plasma
Comment[gl]=Animación deslizantes para os widgets de Plasma emerxentes
Comment[he]=הנפשת החלקה עבור חלוניות קופצות של Plasma
Comment[hr]=Animacija pomicanja za Plasma iskočnike
Comment[ia]=Animation glissante pro popups de plasma
Comment[ia]=Animation glissante pro popups de Plasma
Comment[id]=Animasi menggeser untuk popup Plasma
Comment[is]=Rennslishreyfing fyrir Plasma sprettglugga
Comment[it]=Animazione in scivolata per le finestre a comparsa di Plasma

View File

@ -16,7 +16,7 @@ Name[he]=משוב להפעלה
Name[hi]=शुरुआती फ़ीडबैक
Name[hr]=Povratna informacija pri pokretanju
Name[hu]=Alkalmazásindítási effektus
Name[ia]=Retorno de Lanceamento
Name[ia]=Retorno ab lanceamento
Name[it]=Segnale di avvio
Name[ja]=起動フィードバック
Name[kk]=Жегу барысы
@ -39,6 +39,7 @@ Name[sr@ijekavianlatin]=Odziv pri pokretanju
Name[sr@latin]=Odziv pri pokretanju
Name[sv]=Gensvar vid programstart
Name[th]=ตอบสนองการเริ่มโปรแกรม
Name[tr]=Açılış Geribildirimi
Name[uk]=Повідомлення під час запуску
Name[x-test]=xxStartup Feedbackxx
Name[zh_CN]=启动反馈
@ -58,7 +59,7 @@ Comment[fi]=Avustajatehoste käynnistyksen ilmaisemiseen
Comment[fr]=Effet de l'assistant pour les commentaires de démarrage
Comment[he]=אפקט המשמש כמשוב להפעלה
Comment[hr]=Pomoćni efekt za povratnu informaciju pri pokretanju
Comment[ia]=Effecto de adjutante pro retorno de lanceamento
Comment[ia]=Effecto de adjutante pro retorno ab lanceamento
Comment[it]=Effetto di assistenza per il segnale di avvio
Comment[kk]=Жегу барысын көрсететін эффекті
Comment[km]=កម្មវិធី​ជំនួយ​មាន​ប្រសិទ្ធភាព​នៅពេល​លចាប់ផ្ដើម​មតិត្រឡប់
@ -79,6 +80,7 @@ Comment[sr@ijekavianlatin]=Pomoćni efekat za odziv pri pokretanju
Comment[sr@latin]=Pomoćni efekat za odziv pri pokretanju
Comment[sv]=Hjälpeffekt för gensvar vid programstart
Comment[th]=ลูกเล่นที่จะแสดงเพื่อรอการเริ่มการทำงานของโปรแกรม
Comment[tr]=Açılış geribildirimi için yardımcı etkisi
Comment[uk]=Допоміжний ефект перегляду повідомлень, що надсилаються програмою під час запуску
Comment[wa]=Efet aidant pol ritoû d' enondaedje
Comment[x-test]=xxHelper effect for startup feedbackxx

View File

@ -29,7 +29,7 @@ Name[hi]=कार्यपट्टी लघु छवि
Name[hne]=कामपट्टी चिनहा
Name[hr]=Sličice programske trake
Name[hu]=Gyorsnézetek a feladatsávon
Name[ia]=Notas de barra de carga (taskbar)
Name[ia]=Miniaturas de barra de cargas
Name[id]=Miniatur Batang Alat
Name[is]=Smámyndir á verkefnaslá
Name[it]=Miniature sulla barra delle applicazioni
@ -99,7 +99,7 @@ Comment[he]=הצגת תמונות ממוזערות של חלונות בעת מע
Comment[hne]=टास्कबार प्रविस्टि मं जब मुसुवा होवर होही त विंडो चिनहा देखाव
Comment[hr]=Prikazuje sličice prozora pri prelasku mišem preko stavaka programske trake
Comment[hu]=Megmutatja a feladatsáv gombjai fölött az ablakok kicsinyített képét
Comment[ia]=Monstra notas de fenestra quando il es suspendite super entratas de la barra de carga
Comment[ia]=Monstra miniaturas de fenestra quando il es suspendite super entratas de la barra de carga
Comment[id]=Tampilkan miniatur jendela ketika melayang di atas lema batang tugas
Comment[is]=Sýnir smámyndir glugga þegar bendill er á færslu verkefnaslárinnar
Comment[it]=Mostra delle miniature delle finestre al passaggio sulle voci della barra delle applicazioni

View File

@ -31,7 +31,7 @@ Name[hi]=माउस ट्रैक करें
Name[hne]=मुसुवा ट्रैक करव
Name[hr]=Praćenje miša
Name[hu]=Egérkövetés
Name[ia]=Tracia Mus
Name[ia]=Tracia mus
Name[id]=Lacak Tetikus
Name[is]=Elta mús
Name[it]=Trova il mouse

View File

@ -38,7 +38,7 @@ Name[hi]=माउस ट्रैक करें
Name[hne]=मुसुवा ट्रैक करव
Name[hr]=Praćenje miša
Name[hu]=Egérkövetés
Name[ia]=Tracia Mus
Name[ia]=Tracia mus
Name[id]=Lacak Tetikus
Name[is]=Elta mús
Name[it]=Trova il mouse

View File

@ -37,6 +37,7 @@ Name[sr@ijekavianlatin]=Geometrija prozora
Name[sr@latin]=Geometrija prozora
Name[sv]=Fönstergeometri
Name[th]=มิติขนาดของหน้าต่าง
Name[tr]=PencereGeometrisi
Name[uk]=Розміри вікна
Name[x-test]=xxWindowGeometryxx
Name[zh_TW]=視窗位置
@ -75,6 +76,7 @@ Comment[sr@ijekavianlatin]=Prikaz geometrije prozora pri premeštanju i preuveli
Comment[sr@latin]=Prikaz geometrije prozora pri premeštanju i preuveličavanju
Comment[sv]=Visa fönstergeometri vid förflyttning och storleksändring
Comment[th]=แสดงมิติขนาดของหน้าต่างเมื่อมีการย้ายหรือปรับขนาดหน้าต่าง
Comment[tr]=Taşıma/yeniden boyutlandırmada pencere şekilllerini görüntüle
Comment[uk]=Показ розмірів вікон при пересуванні або зміні розмірів
Comment[x-test]=xxDisplay window geometries on move/resizexx
Comment[zh_TW]=移動/調整大小時顯示視窗位置

View File

@ -43,6 +43,7 @@ Name[sr@ijekavianlatin]=Geometrija prozora
Name[sr@latin]=Geometrija prozora
Name[sv]=Fönstergeometri
Name[th]=มิติขนาดของหน้าต่าง
Name[tr]=PencereGeometrisi
Name[uk]=Розміри вікна
Name[x-test]=xxWindowGeometryxx
Name[zh_TW]=視窗位置

View File

@ -870,6 +870,8 @@ void Client::propertyNotifyEvent(XPropertyEvent* e)
getSyncCounter();
else if (e->atom == atoms->activities)
checkActivities();
else if (e->atom == atoms->kde_net_wm_block_compositing)
updateCompositeBlocking(true);
break;
}
}

View File

@ -33,7 +33,7 @@ Name[he]=שולחנות עבודה וירטואליים
Name[hi]=आभासी डेस्कटॉप
Name[hr]=Virtualne radne površine
Name[hu]=Virtuális asztalok
Name[ia]=Scriptorios Virtual
Name[ia]=Scriptorios virtual
Name[id]=Desktop Virtual
Name[is]=Sýndarskjáborð
Name[it]=Desktop virtuali
@ -105,7 +105,7 @@ Comment[hi]=आप कॉन्फ़िगर कर सकते हैं क
Comment[hne]=आप मन कान्फिगर कर सकथो कि उहां कतका ठन आभासी डेस्कटाप होही.
Comment[hr]=Konfiguriranje broja virtualnih radnih površina
Comment[hu]=A virtuális munkaasztalok számának beállítása
Comment[ia]=Tu pote configurar quante es le scriptorios virtual.
Comment[ia]=Tu pote configurar le quantitate del scriptorios virtual.
Comment[id]=Anda dapat mengatur berapa banyak desktop virtual yang ada.
Comment[is]=Hér getur þú stillt hversu mörg sýndaskjáborðin eru.
Comment[it]=Configura quanti desktop virtuali vuoi.

View File

@ -133,7 +133,7 @@ Comment[hi]=कुंजीपट तथा माउस विन्यास
Comment[hne]=कुंजीपट अउ मुसुवा सेटिंग कान्फिगर करव
Comment[hr]=Konfiguriranje postavki tipkovnice i miša
Comment[hu]=A billentyűzet- és egérkezelés beállításai
Comment[ia]=Configurar preferentias de claviero e mus
Comment[ia]=Configura preferentias de claviero e mus
Comment[id]=Atur pengaturan papan ketik dan tetikus
Comment[is]=Stilla lyklaborð og mús
Comment[it]=Configura le impostazioni della tastiera e del mouse

View File

@ -43,7 +43,7 @@ Name[hi]=खिसकाते हुए
Name[hne]=खिसकावत हे
Name[hr]=Pomicanje
Name[hu]=Mozgatás
Name[ia]=Mover
Name[ia]=Movente
Name[id]=Memindahkan
Name[is]=Færa
Name[it]=Spostamento
@ -130,7 +130,7 @@ Comment[hi]=कॉन्फ़िगर करें कि विंडो क
Comment[hne]=कान्फिगर करव कि विंडो कइसन खिसके
Comment[hr]=Konfiguriranje načina pomicanja prozora
Comment[hu]=Az ablakmozgatás beállításai
Comment[ia]=Configura le modo que fenestrar es movite
Comment[ia]=Configura le modo que fenestras es movite
Comment[id]=Atur bagaimana cara jendela dipindahkan
Comment[is]=Stilla hvernig gluggar eru hreyfðir
Comment[it]=Configura come le finestre vengono spostate

View File

@ -134,7 +134,7 @@ Comment[hi]=विंडो व्यवहार कॉन्फ़िगर
Comment[hne]=विंडो व्यवहार कान्फिगर करव
Comment[hr]=Konfiguriranje ponašanja preglednika
Comment[hu]=Az ablakok működési jellemzőinek beállítása
Comment[ia]=Configurar le comportamento de fenestra
Comment[ia]=Configura le comportamento de fenestra
Comment[id]=Atur perilaku jendela
Comment[is]=Stilla hegðan glugga
Comment[it]=Configura il comportamento delle finestre

View File

@ -31,7 +31,7 @@ Name[he]=כללי חלון
Name[hi]=विंडो निय
Name[hr]=Pravila prozora
Name[hu]=Ablakszabályok
Name[ia]=Regulas de Window
Name[ia]=Regulas de fenestra
Name[id]=Aturan Jendela
Name[is]=Gluggahegðunarreglur
Name[it]=Regole delle finestre
@ -102,7 +102,7 @@ Comment[hi]=किसी खास विंडो के लिए विन्
Comment[hne]=कोई खास विंडो बर सेटिंग कान्फिगर करव
Comment[hr]=Konfiguriranje određenih postavki za prozor
Comment[hu]=Egy adott ablak beállításai
Comment[ia]=Configurar preferentias specificamente pro un fenestra
Comment[ia]=Configura preferentias specificamente pro un fenestra
Comment[id]=Atur pengaturan terutama untuk jendela
Comment[is]=Stillingar sem varða tiltekinn glugga
Comment[it]=Configura le impostazioni specifiche di una finestra

View File

@ -115,6 +115,7 @@ RulesWidget::RulesWidget(QWidget* parent)
SETUP(maxsize, force);
SETUP(strictgeometry, force);
SETUP(disableglobalshortcuts, force);
SETUP(blockcompositing, force);
int i;
for (i = 1;
i <= KWindowSystem::numberOfDesktops();
@ -171,6 +172,7 @@ UPDATE_ENABLE_SLOT(minsize)
UPDATE_ENABLE_SLOT(maxsize)
UPDATE_ENABLE_SLOT(strictgeometry)
UPDATE_ENABLE_SLOT(disableglobalshortcuts)
UPDATE_ENABLE_SLOT(blockcompositing)
#undef UPDATE_ENABLE_SLOT
@ -450,6 +452,7 @@ void RulesWidget::setRules(Rules* rules)
LINEEDIT_FORCE_RULE(maxsize, sizeToStr);
CHECKBOX_FORCE_RULE(strictgeometry,);
CHECKBOX_FORCE_RULE(disableglobalshortcuts,);
CHECKBOX_FORCE_RULE(blockcompositing,);
}
#undef GENERIC_RULE
@ -544,6 +547,7 @@ Rules* RulesWidget::rules() const
LINEEDIT_FORCE_RULE(maxsize, strToSize);
CHECKBOX_FORCE_RULE(strictgeometry,);
CHECKBOX_FORCE_RULE(disableglobalshortcuts,);
CHECKBOX_FORCE_RULE(blockcompositing,);
return rules;
}
@ -662,6 +666,7 @@ void RulesWidget::prefillUnusedValues(const KWindowInfo& info)
LINEEDIT_PREFILL(maxsize, sizeToStr, info.frameGeometry().size());
//CHECKBOX_PREFILL( strictgeometry, );
//CHECKBOX_PREFILL( disableglobalshortcuts, );
//CHECKBOX_PREFILL( blockcompositing, );
}
#undef GENERIC_PREFILL

View File

@ -89,6 +89,7 @@ private slots:
void updateEnablestrictgeometry();
void updateEnableshortcut();
void updateEnabledisableglobalshortcuts();
void updateEnableblockcompositing();
// internal
void detected(bool);
private:

View File

@ -1792,7 +1792,7 @@
<attribute name="title">
<string>W&amp;orkarounds</string>
</attribute>
<layout class="QGridLayout">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QCheckBox" name="enable_fsplevel">
<property name="text">
@ -1800,6 +1800,113 @@
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="KComboBox" name="rule_fsplevel">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="0" column="3">
<widget class="KComboBox" name="fsplevel">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string comment="no focus stealing prevention">None</string>
</property>
</item>
<item>
<property name="text">
<string>Low</string>
</property>
</item>
<item>
<property name="text">
<string>Normal</string>
</property>
</item>
<item>
<property name="text">
<string>High</string>
</property>
</item>
<item>
<property name="text">
<string>Extreme</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="enable_moveresizemode">
<property name="text">
<string>&amp;Moving/resizing</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="KComboBox" name="rule_moveresizemode">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="1" column="3">
<widget class="KComboBox" name="moveresizemode">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Opaque</string>
</property>
</item>
<item>
<property name="text">
<string>Transparent</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="enable_type">
<property name="text">
<string>Window &amp;type</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="KComboBox" name="rule_type">
<property name="enabled">
@ -1879,191 +1986,6 @@
</item>
</widget>
</item>
<item row="1" column="3">
<widget class="KComboBox" name="moveresizemode">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Opaque</string>
</property>
</item>
<item>
<property name="text">
<string>Transparent</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="enable_type">
<property name="text">
<string>Window &amp;type</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="enable_moveresizemode">
<property name="text">
<string>&amp;Moving/resizing</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="KComboBox" name="rule_fsplevel">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="1" column="1">
<widget class="KComboBox" name="rule_moveresizemode">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="0" column="3">
<widget class="KComboBox" name="fsplevel">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string comment="no focus stealing prevention">None</string>
</property>
</item>
<item>
<property name="text">
<string>Low</string>
</property>
</item>
<item>
<property name="text">
<string>Normal</string>
</property>
</item>
<item>
<property name="text">
<string>High</string>
</property>
</item>
<item>
<property name="text">
<string>Extreme</string>
</property>
</item>
</widget>
</item>
<item row="5" column="3">
<widget class="KRestrictedLine" name="maxsize">
<property name="enabled">
<bool>false</bool>
</property>
<property name="validChars">
<string>0123456789-+,xX:</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="enable_minsize">
<property name="text">
<string>M&amp;inimum size</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="KComboBox" name="rule_minsize">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="enable_maxsize">
<property name="text">
<string>M&amp;aximum size</string>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="KRestrictedLine" name="minsize">
<property name="enabled">
<bool>false</bool>
</property>
<property name="validChars">
<string>0123456789-+,xX:</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="KComboBox" name="rule_maxsize">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="enable_ignoreposition">
<property name="text">
@ -2103,21 +2025,83 @@
</property>
</widget>
</item>
<item row="8" column="2">
<spacer>
<property name="orientation">
<enum>Qt::Vertical</enum>
<item row="4" column="0">
<widget class="QCheckBox" name="enable_minsize">
<property name="text">
<string>M&amp;inimum size</string>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</widget>
</item>
<item row="4" column="1">
<widget class="KComboBox" name="rule_minsize">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>160</height>
</size>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="4" column="3">
<widget class="KRestrictedLine" name="minsize">
<property name="enabled">
<bool>false</bool>
</property>
</spacer>
<property name="validChars">
<string>0123456789-+,xX:</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="enable_maxsize">
<property name="text">
<string>M&amp;aximum size</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="KComboBox" name="rule_maxsize">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="5" column="3">
<widget class="KRestrictedLine" name="maxsize">
<property name="enabled">
<bool>false</bool>
</property>
<property name="validChars">
<string>0123456789-+,xX:</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QCheckBox" name="enable_strictgeometry">
@ -2161,16 +2145,6 @@
</property>
</widget>
</item>
<item row="7" column="3">
<widget class="QCheckBox" name="disableglobalshortcuts">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="enable_disableglobalshortcuts">
<property name="text">
@ -2203,6 +2177,68 @@
</item>
</widget>
</item>
<item row="7" column="3">
<widget class="QCheckBox" name="disableglobalshortcuts">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QCheckBox" name="enable_blockcompositing">
<property name="text">
<string>Block compositing</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="KComboBox" name="rule_blockcompositing">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Do Not Affect</string>
</property>
</item>
<item>
<property name="text">
<string>Force</string>
</property>
</item>
<item>
<property name="text">
<string>Force Temporarily</string>
</property>
</item>
</widget>
</item>
<item row="8" column="3">
<widget class="QCheckBox" name="blockcompositing">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="9" column="2">
<spacer>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>160</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>

View File

@ -37,7 +37,7 @@ Name[he]=קצוות מסך
Name[hi]=स्क्रीन सीमाएँ
Name[hr]=Rubovi ekrana
Name[hu]=Képernyőszélek
Name[ia]=margines de schermo
Name[ia]=Margines de schermo
Name[id]=Tepi Layar
Name[is]=Skjájaðrar
Name[it]=Lati dello schermo
@ -102,7 +102,7 @@ Comment[gu]=સક્રિય સ્ક્રિન ધારો રૂપર
Comment[he]=הגדרת קצוות מסך פעילים
Comment[hr]=Konfiguracija aktivnih rubova ekrana
Comment[hu]=Aktív képernyőszegélyeket kapcsol be
Comment[ia]=Configurar margines de schermo active
Comment[ia]=Configura margines de schermo active
Comment[id]=Atur tepi layar aktif
Comment[is]=Stilla virka skjájaðra
Comment[it]=Configura i lati dello schermo attivi

View File

@ -29,7 +29,7 @@ Name[he]=מחליף משימות
Name[hi]=कार्य बदल
Name[hr]=Prebacivač zadataka
Name[hu]=Feladatváltó
Name[ia]=Commutator de Carga
Name[ia]=Commutator de carga
Name[id]=Pengganti Tugas
Name[is]=Verkefnaskiptir
Name[it]=Scambiafinestre
@ -79,7 +79,7 @@ Comment[fi]=Muokkaa ikkunoiden selauksen toimintatapaa
Comment[fr]=Configuration du comportement pour la navigation à travers les fenêtres
Comment[he]=הגדרת ההתנהגות בניווט בין חלונות
Comment[hr]=Podesi ponašanje listanja prozora
Comment[ia]=Configurar le comportamento pro navigar intra fenestras
Comment[ia]=Configura le comportamento pro navigar intra fenestras
Comment[it]=Configura come si naviga tra le finestre
Comment[ja]=ウィンドウ間を移動する際の挙動を設定
Comment[kk]=Терезелер арасында ауысу тәртібін орнату.
@ -102,6 +102,7 @@ Comment[sr@ijekavianlatin]=Podešavanje ponašanja pri kretanju kroz prozore
Comment[sr@latin]=Podešavanje ponašanja pri kretanju kroz prozore
Comment[sv]=Anpassa beteendet för att navigera i fönster
Comment[th]=ปรับแต่งพฤติกรรมของการนำร่องไปยังหน้าต่างต่าง ๆ
Comment[tr]=Pencereler arasında gezinme davranışını yapılandır
Comment[uk]=Налаштування поведінки системи під час навігації вікнами
Comment[x-test]=xxConfigure the behavior for navigating through windowsxx
Comment[zh_TW]=設定透過視窗導覽的行為。

View File

@ -20,7 +20,7 @@ Comment[he]=מנהל החלונות KWin
Comment[hi]=केविन विंडो प्रबंधक
Comment[hr]=Upravitelj prozora KWin
Comment[hu]=KWin ablakkezelő
Comment[ia]=Gerente de Fenestra KWin
Comment[ia]=Gerente de fenestra KWin
Comment[id]=Manajer Jendela KWin
Comment[is]=KWin gluggastjóri
Comment[it]=Gestore delle finestre KWin
@ -93,7 +93,7 @@ Name[hi]=डेस्कटॉप 1 पर जाएँ
Name[hne]=डेस्कटाप १ मं जाव
Name[hr]=Prebaci se na radnu površinu 1
Name[hu]=Váltás az 1. asztalra
Name[ia]=Cambiar a Scriptorio 1
Name[ia]=Cambia a Scriptorio 1
Name[id]=Ubah ke Desktop 1
Name[is]=Birta skjáborð 1
Name[it]=Passa al desktop 1
@ -264,7 +264,7 @@ Name[hi]=डेस्कटॉप 2 पर जाएँ
Name[hne]=डेस्कटाप २ मं जाव
Name[hr]=Prebaci se na radnu površinu 2
Name[hu]=Váltás a 2. asztalra
Name[ia]=Cambiar a Scriptorio 2
Name[ia]=Cambia a Scriptorio 2
Name[id]=Ubah ke Desktop 2
Name[is]=Birta skjáborð 2
Name[it]=Vai al desktop 2
@ -436,7 +436,7 @@ Name[hi]=डेस्कटॉप 3 पर जाएँ
Name[hne]=डेस्कटाप २ मं जाव
Name[hr]=Prebaci se na radnu površinu 3
Name[hu]=Váltás a 3. asztalra
Name[ia]=Cambiar a Scriptorio 3
Name[ia]=Cambia a Scriptorio 3
Name[id]=Ubah ke Desktop 3
Name[is]=Birta skjáborð 3
Name[it]=Vai al desktop 3
@ -608,7 +608,7 @@ Name[hi]=डेस्कटॉप 4 पर जाएँ
Name[hne]=डेस्कटाप ४ मं जाव
Name[hr]=Prebaci se na radnu površinu 4
Name[hu]=Váltás a 4. asztalra
Name[ia]=Cambiar a Scriptorio 4
Name[ia]=Cambia a Scriptorio 4
Name[id]=Ubah ke Desktop 4
Name[is]=Birta skjáborð 4
Name[it]=Vai al desktop 4
@ -779,7 +779,7 @@ Name[hi]=डेस्कटॉप 5 पर जाएँ
Name[hne]=डेस्कटाप ५ मं जाव
Name[hr]=Prebaci se na radnu površinu 5
Name[hu]=Váltás az 5. asztalra
Name[ia]=Cambiar a Scriptorio 5
Name[ia]=Cambia a Scriptorio 5
Name[id]=Ubah ke Desktop 5
Name[is]=Birta skjáborð 5
Name[it]=Vai al desktop 5
@ -951,7 +951,7 @@ Name[hi]=डेस्कटॉप 6 पर जाएँ
Name[hne]=डेस्कटाप ६ मं जाव
Name[hr]=Prebaci se na radnu površinu 6
Name[hu]=Váltás a 6. asztalra
Name[ia]=Cambiar a Scriptorio 6
Name[ia]=Cambia a Scriptorio 6
Name[id]=Ubah ke Desktop 6
Name[is]=Birta skjáborð 6
Name[it]=Vai al desktop 6
@ -1121,7 +1121,7 @@ Name[hi]=डेस्कटॉप 7 पर जाएँ
Name[hne]=डेस्कटाप ७ मं जाव
Name[hr]=Prebaci se na radnu površinu 7
Name[hu]=Váltás: 7. asztalra
Name[ia]=Cambiar a Scriptorio 7
Name[ia]=Cambia a Scriptorio 7
Name[id]=Ubah ke Desktop 7
Name[is]=Birta skjáborð 7
Name[it]=Vai al desktop 7
@ -1293,7 +1293,7 @@ Name[hi]=डेस्कटॉप 8 पर जाएँ
Name[hne]=डेस्कटाप ८ मं जाव
Name[hr]=Prebaci se na radnu površinu 8
Name[hu]=Váltás: 8. asztalra
Name[ia]=Cambiar a Scriptorio 8
Name[ia]=Cambia a Scriptorio 8
Name[id]=Ubah ke Desktop 8
Name[is]=Birta skjáborð 8
Name[it]=Vai al desktop 8
@ -1464,7 +1464,7 @@ Name[hi]=डेस्कटॉप 9 पर जाएँ
Name[hne]=डेस्कटाप ९ मं जाव
Name[hr]=Prebaci se na radnu površinu 9
Name[hu]=Váltás: 9. asztalra
Name[ia]=Cambiar a Scriptorio 9
Name[ia]=Cambia a Scriptorio 9
Name[id]=Ubah ke Desktop 9
Name[is]=Birta skjáborð 9
Name[it]=Vai al desktop 9
@ -1632,7 +1632,7 @@ Name[hi]=डेस्कटॉप 10 पर जाएँ
Name[hne]=डेस्कटाप १० मं जाव
Name[hr]=Prebaci se na radnu površinu 10
Name[hu]=Váltás: 10. asztalra
Name[ia]=Cambiar a Scriptorio 10
Name[ia]=Cambia a Scriptorio 10
Name[id]=Ubah ke Desktop 10
Name[is]=Birta skjáborð 10
Name[it]=Vai al desktop 10
@ -1800,7 +1800,7 @@ Name[hi]=डेस्कटॉप 11 पर जाएँ
Name[hne]=डेस्कटाप ११ मं जाव
Name[hr]=Prebaci se na radnu površinu 11
Name[hu]=Váltás: 11. asztalra
Name[ia]=Cambiar a Scriptorio 11
Name[ia]=Cambia a Scriptorio 11
Name[id]=Ubah ke Desktop 11
Name[is]=Birta skjáborð 11
Name[it]=Vai al desktop 11
@ -1967,7 +1967,7 @@ Name[hi]=डेस्कटॉप 12 पर जाएँ
Name[hne]=डेस्कटाप १२ मं जाव
Name[hr]=Prebaci se na radnu površinu 12
Name[hu]=Váltás: 12. asztalra
Name[ia]=Cambiar a Scriptorio 12
Name[ia]=Cambia a Scriptorio 12
Name[id]=Ubah ke Desktop 12
Name[is]=Birta skjáborð 12
Name[it]=Vai al desktop 12
@ -2134,7 +2134,7 @@ Name[hi]=डेस्कटॉप 13 पर जाएँ
Name[hne]=डेस्कटाप १३ मं जाव
Name[hr]=Prebaci se na radnu površinu 13
Name[hu]=Váltás a 13. asztalra
Name[ia]=Cambiar a Scriptorio 13
Name[ia]=Cambia a Scriptorio 13
Name[id]=Ubah ke Desktop 13
Name[is]=Birta skjáborð 13
Name[it]=Vai al desktop 13
@ -2302,7 +2302,7 @@ Name[hi]=डेस्कटॉप 14 पर जाएँ
Name[hne]=डेस्कटाप १४ मं जाव
Name[hr]=Prebaci se na radnu površinu 14
Name[hu]=Váltás a 14. asztalra
Name[ia]=Cambiar a Scriptorio 14
Name[ia]=Cambia a Scriptorio 14
Name[id]=Ubah ke Desktop 14
Name[is]=Birta skjáborð 14
Name[it]=Vai al desktop 14
@ -2469,7 +2469,7 @@ Name[hi]=डेस्कटॉप 15 पर जाएँ
Name[hne]=डेस्कटाप १५ मं जाव
Name[hr]=Prebaci se na radnu površinu 15
Name[hu]=Váltás a 15. asztalra
Name[ia]=Cambiar a Scriptorio 15
Name[ia]=Cambia a Scriptorio 15
Name[id]=Ubah ke Desktop 15
Name[is]=Birta skjáborð 15
Name[it]=Vai al desktop 15
@ -2637,7 +2637,7 @@ Name[hi]=डेस्कटॉप 16 पर जाएँ
Name[hne]=डेस्कटाप १६ मं जाव
Name[hr]=Prebaci se na radnu površinu 16
Name[hu]=Váltás a 16. asztalra
Name[ia]=Cambiar a Scriptorio 16
Name[ia]=Cambia a Scriptorio 16
Name[id]=Ubah ke Desktop 16
Name[is]=Birta skjáborð 16
Name[it]=Vai al desktop 16
@ -2805,7 +2805,7 @@ Name[hi]=डेस्कटॉप 17 पर जाएँ
Name[hne]=डेस्कटाप १७ मं जाव
Name[hr]=Prebaci se na radnu površinu 17
Name[hu]=Váltás a 17. asztalra
Name[ia]=Cambiar a Scriptorio 17
Name[ia]=Cambia a Scriptorio 17
Name[id]=Ubah ke Desktop 17
Name[is]=Birta skjáborð 17
Name[it]=Vai al desktop 17
@ -2972,7 +2972,7 @@ Name[hi]=डेस्कटॉप 18 पर जाएँ
Name[hne]=डेस्कटाप १८ मं जाव
Name[hr]=Prebaci se na radnu površinu 18
Name[hu]=Váltás a 18. asztalra
Name[ia]=Cambiar a Scriptorio 18
Name[ia]=Cambia a Scriptorio 18
Name[id]=Ubah ke Desktop 18
Name[is]=Birta skjáborð 18
Name[it]=Vai al desktop 18
@ -3140,7 +3140,7 @@ Name[hi]=डेस्कटॉप 19 पर जाएँ
Name[hne]=डेस्कटाप १९ मं जाव
Name[hr]=Prebaci se na radnu površinu 19
Name[hu]=Váltás az 19. asztalra
Name[ia]=Cambiar a Scriptorio 19
Name[ia]=Cambia a Scriptorio 19
Name[id]=Ubah ke Desktop 19
Name[is]=Birta skjáborð 19
Name[it]=Vai al desktop 19
@ -3308,7 +3308,7 @@ Name[hi]=डेस्कटॉप 20 पर जाएँ
Name[hne]=डेस्कटाप २० मं जाव
Name[hr]=Prebaci se na radnu površinu 20
Name[hu]=Váltás a 20. asztalra
Name[ia]=Cambiar a Scriptorio 20
Name[ia]=Cambia a Scriptorio 20
Name[id]=Ubah ke Desktop 20
Name[is]=Birta skjáborð 20
Name[it]=Vai al desktop 20
@ -3474,7 +3474,7 @@ Name[hi]=विंडो सक्रिय करें
Name[hne]=विंडो सक्रिय करव
Name[hr]=Aktiviraj prozor
Name[hu]=Ablak aktiválása
Name[ia]=Activar Fenestra
Name[ia]=Activa fenestra
Name[id]=Aktifkan Jendela
Name[is]=Virkja glugga
Name[it]=Attiva finestra
@ -3641,7 +3641,7 @@ Name[hne]=नवा विंडो
Name[hr]=Novi prozor
Name[hsb]=Nowe wokno
Name[hu]=Új ablak
Name[ia]=Nove Fenestra
Name[ia]=Nove fenestra
Name[id]=Jendela Baru
Name[is]=Opna nýjan glugga
Name[it]=Nuova finestra
@ -3726,7 +3726,7 @@ Comment[hi]=नया विंडो
Comment[hne]=नवा विंडो
Comment[hr]=Novi prozor
Comment[hu]=Új ablak
Comment[ia]=Nove Fenestra
Comment[ia]=Nove fenestra
Comment[id]=Jendela baru
Comment[is]=Nýr gluggi
Comment[it]=Nuova finestra
@ -3813,7 +3813,7 @@ Name[hi]=विंडो मिटाएँ
Name[hne]=विंडो मेटाव
Name[hr]=Izbriši prozor
Name[hu]=Ablak törlése
Name[ia]=Cancellar fenestra
Name[ia]=Dele fenestra
Name[id]=Hapus Jendela
Name[is]=Eyða glugga
Name[it]=Elimina finestra
@ -3894,7 +3894,7 @@ Comment[hi]=विंडो मिटाएँ
Comment[hne]=विंडो मेटाव
Comment[hr]=Brisanje prozora
Comment[hu]=Ablak törlése
Comment[ia]=Cancellar fenestra
Comment[ia]=Dele fenestra
Comment[id]=Hapus jendela
Comment[is]=Eyða glugga
Comment[it]=Elimina una finestra
@ -3979,7 +3979,7 @@ Name[hi]=विंडो बंद करें
Name[hne]=विंडो बंद करव
Name[hr]=Zatvori prozor
Name[hu]=Ablak bezárása
Name[ia]=Clauder Fenestra
Name[ia]=Claude fenestra
Name[id]=Jendela Menutup
Name[is]=Gluggi lokast
Name[it]=Chiusura di una finestra
@ -4147,7 +4147,7 @@ Name[hi]=विंडो शेड अप
Name[hne]=विंडो सेड अप
Name[hr]=Zamotaj prozor
Name[hu]=Ablak felgördítése
Name[ia]=Adumbrar un fenestra super
Name[ia]=Adumbra un fenestra de supra
Name[id]=Jendela Berbayang Ke Atas
Name[is]=Glugga rúllað upp
Name[it]=Arrotolamento di una finestra
@ -4224,7 +4224,7 @@ Comment[hi]=एक विंडो में छाया भरी गई
Comment[hne]=एक विंडो मं छइंहा उपर
Comment[hr]=Prozor je zamotan
Comment[hu]=Ablak felgördítése
Comment[ia]=Un fenestra es adumbrate super
Comment[ia]=Un fenestra es adumbrate de supra
Comment[id]=Sebuah jendela berbayang ke atas
Comment[is]=Glugga er rúllað upp
Comment[it]=Una finestra viene arrotolata
@ -4305,7 +4305,7 @@ Name[hi]=विंडो शेड डाउन
Name[hne]=विंडो सेड डाउन
Name[hr]=Odmotaj prozor
Name[hu]=Ablak legördítése
Name[ia]=Adumbrar a basso un fenestra
Name[ia]=Adumbra a basso un fenestra
Name[id]=Jendela Berbayang Ke Bawah
Name[is]=Glugga rúllað niður
Name[it]=Srotolamento di una finestra
@ -4460,7 +4460,7 @@ Name[hi]=विंडो न्यूनतम करें
Name[hne]=विंडो छोटा
Name[hr]=Minimiziraj prozor
Name[hu]=Ablak minimalizálása
Name[ia]=Minimizar fenestra
Name[ia]=Minimisa fenestra
Name[id]=Jendela Minimal
Name[is]=Glugga lágmarkað
Name[it]=Minimizzazione di una finestra
@ -4540,7 +4540,7 @@ Comment[hi]=एक विंडो न्यूनतम हुआ
Comment[hne]=एक विंडो छोटा होइस
Comment[hr]=Prozor je minimiziran
Comment[hu]=Ablak minimalizálása
Comment[ia]=Un fenestra es minimizate
Comment[ia]=Un fenestra es minimisate
Comment[id]=Sebuah jendela diminimalkan
Comment[is]=Gluggi er lágmarkaður
Comment[it]=Una finestra viene minimizzata
@ -4623,7 +4623,7 @@ Name[hi]=विंडो न्यूनतम नहीं
Name[hne]=विंडो बहाल
Name[hr]=Vrati minimiziran prozor
Name[hu]=Minimalizált ablak visszaállítása
Name[ia]=Cancellar Minimization de fenestra
Name[ia]=Annulla minimisation de fenestra
Name[id]=Jendela Tak Minimalkan
Name[is]=Gluggi ekki lágmarkað
Name[it]=Ripristino di una finestra
@ -4783,7 +4783,7 @@ Name[hi]=विंडो अधिकतम करें
Name[hne]=विंडो बड़ा
Name[hr]=Maksimiziraj prozor
Name[hu]=Ablak maximalizálása
Name[ia]=Maximizar Fenestra
Name[ia]=Maximiza fenestra
Name[id]=Jendela Maksimalkan
Name[is]=Gluggi hámarkaður
Name[it]=Massimizzazione di una finestra
@ -4948,7 +4948,7 @@ Name[hi]=विंडो अधिकतम नहीं
Name[hne]=विंडो बहाल
Name[hr]=Vrati maksimiziran prozor
Name[hu]=Maximalizált ablak visszaállítása
Name[ia]=Fenestra cancella maximisation
Name[ia]=Annulla maximization de fenestra
Name[id]=Jendela Tak Maksimalkan
Name[is]=Gluggi úr hámarki
Name[it]=De-massimizzazione di una finestra
@ -5107,7 +5107,7 @@ Name[hi]=विंडो सभी डेस्कटॉप पर रखें
Name[hne]=सब्बो डेस्कटाप मं विंडो
Name[hr]=Prozor na svim radnim površinama
Name[hu]=Ablak megjelenése az összes munkaasztalon
Name[ia]=Fenestra su Omne Scriptorios
Name[ia]=Fenestra sur omne scriptorios
Name[id]=Jendela di Semua Desktop
Name[is]=Glugga á öll skjáborð
Name[it]=Finestra su tutti i desktop
@ -5184,7 +5184,7 @@ Comment[hi]=एक विंडो सभी डेस्कटॉप पर द
Comment[hne]=एक विंडो सब्बो डेस्कटाप मं दिखही
Comment[hr]=Prozor je vidljiv na svim radnim površinama
Comment[hu]=Egy ablak megjelent az összes munkaasztalon
Comment[ia]=Un fenestra es facite visibile super omne scriptorios
Comment[ia]=Un fenestra es facite visibile sur omne scriptorios
Comment[id]=Sebuah jendela dibuat agar tampak pada semua desktop
Comment[is]=Gluggi er látinn sjást á öllum skjáborðum
Comment[it]=Una finestra è resa visibile su tutti i desktop
@ -5265,7 +5265,7 @@ Name[hi]=सभी डेस्कटॉप पर विंडो नहीं
Name[hne]=विंडो सब्बो डेस्कटाप मं नइ
Name[hr]=Prozor nije na svim radnim površinama
Name[hu]=Ablak megjelenése egyetlen munkaasztalon
Name[ia]=Fenestra Non super omne Scriptorios
Name[ia]=Fenestra non super omne scriptorios
Name[id]=Jendela Tidak di Semua Desktop
Name[is]=Gluggi ekki á öllum skjáborðum
Name[it]=Finestra non su tutti i desktop
@ -5426,7 +5426,7 @@ Name[hi]=नया संवाद
Name[hne]=नवा गोठ
Name[hr]=Novi dijalog
Name[hu]=Új párbeszédablak
Name[ia]=Nove Dialogo
Name[ia]=Nove dialogo
Name[id]=Dialog Baru
Name[is]=Opna nýjan glugga
Name[it]=Nuova finestra di dialogo
@ -5505,7 +5505,7 @@ Comment[hi]=ट्रांजिएंट विंडो (एक संवा
Comment[hne]=ट्रांजिएन्ट विंडो (एक बात) दिखिस
Comment[hr]=Pojavljuje se prijelazni prozor (dijalog)
Comment[hu]=Párbeszédablak megjelenése
Comment[ia]=Il appare un Fenestra Transitori (un dialogo)
Comment[ia]=Il appare un fenestra transitori (un dialogo)
Comment[id]=Jendela fana (sebuah dialog) muncul
Comment[is]=Skammlífur samskiptagluggi birtist
Comment[it]=Appare una finestra di dialogo
@ -5587,7 +5587,7 @@ Name[hi]=संवाद मिटाएँ
Name[hne]=बात ल मेटाव
Name[hr]=Izbriši dijalog
Name[hu]=Párbeszédablak eltűnése
Name[ia]=Cancellar Dialogo
Name[ia]=Dele dialogo
Name[id]=Hapus Dialog
Name[is]=Eyða samskiptaglugga
Name[it]=Scomparsa di una finestra di dialogo
@ -5745,7 +5745,7 @@ Name[hi]=विंडो खिसकाना चालू
Name[hne]=विंडो खिसकाय बर सुरु
Name[hr]=Početak micanja prozora
Name[hu]=Ablakmozgatás kezdete
Name[ia]=Initiar a Mover Fenestra
Name[ia]=Initia a mover Fenestra
Name[id]=Jendela Mulai Pindah
Name[is]=Færsla glugga hefst
Name[it]=Inizio dello spostamento di una finestra
@ -5903,7 +5903,7 @@ Name[hi]=विंडो खिसकाना ख़त्म
Name[hne]=विंडो खिसकाय बर बन्द
Name[hr]=Završetak micanja prozora
Name[hu]=Ablakmozgatás vége
Name[ia]=Fin de Mover de Fenestra
Name[ia]=Fin de mover de fenestra
Name[id]=Jendela Selesai Pindah
Name[is]=Færslu glugga lýkur
Name[it]=Fine dello spostamento di una finestra
@ -6061,7 +6061,7 @@ Name[hi]=विंडो नया-आकार चालू
Name[hne]=विंडो के नवा आकार दे बर सुरू
Name[hr]=Početak promjene veličine
Name[hu]=Ablakátméretezés kezdete
Name[ia]=Initio de Redimensionar de Fenestra
Name[ia]=Initio de redimensionar de Fenestra
Name[id]=Jendela Mulai Berubah Ukuran
Name[is]=Stærðarbreyting glugga hefst
Name[it]=Inizio del ridimensionamento di una finestra
@ -6219,7 +6219,7 @@ Name[hi]=विंडो नया-आकार बन्द
Name[hne]=विंडो नवा आकार देना पूरा
Name[hr]=Završetak promjene veličine
Name[hu]=Ablakátméretezés vége
Name[ia]=Fin de Re-dimension de Fenestra
Name[ia]=Fin de re-dimension de fenestra
Name[id]=Jendela Selesai Berubah Ukuran
Name[is]=Stærðarbreyting glugga lýkur
Name[it]=Fine del ridimensionamento di una finestra
@ -6373,7 +6373,7 @@ Name[hi]=वर्तमान डेस्कटॉप का विंडो
Name[hne]=हाल वाले डेस्कटाप के विंडो हर आपमन के ध्यान चाहथे
Name[hr]=Prozor na trenutnoj radnoj površini zahtijeva pažnju
Name[hu]=Egy ablak az aktuális asztalon beavatkozást igényel
Name[ia]=Fenestra in le Scriptorio Currente Demanda Attention
Name[ia]=Fenestra in le scriptorio currente demanda attention
Name[id]=Jendela di Desktop Saat Ini Meminta Perhatian
Name[is]=Gluggi á öðru skjáborði krefst athygli
Name[it]=Finestra sul desktop attuale richiede attenzione
@ -6517,7 +6517,7 @@ Name[hi]=अन्य डेस्कटॉप का विंडो आपक
Name[hne]=दूसरा डेस्कटाप के विंडो ध्यान चाहथे
Name[hr]=Prozor na drugoj radnoj površini zahtijeva pažnju
Name[hu]=Egy ablak valamelyik nem látszó asztalon beavatkozást igényel
Name[ia]=Fenestra in altere Scriptorio demanda attention
Name[ia]=Fenestra in altere scriptorio demanda attention
Name[id]=Jendela di Desktop Lain Meminta Perhatian
Name[is]=Gluggi á öðru skjáborði krefst athygli
Name[it]=Finestra su un altro desktop richiede attenzione
@ -6963,7 +6963,7 @@ Comment[gl]=Algúns efectos non están soportados nin pola infraestrutura nin po
Comment[he]=כמה אפקטים אינם נתמכים על ידי המנגנון או החומרה
Comment[hr]=Neki efekti nisu podržani od strane hardvera
Comment[hu]=Néhány effektust nem támogat a háttérmodul vagy a hardver.
Comment[ia]=Alicun effectos non es supportate per retro-parte (backend) o hardware
Comment[ia]=Alicun effectos non es supportate per retro-administration o hardware
Comment[id]=Beberapa efek tidak didukung oleh ujung belakang atau peranti keras.
Comment[is]=Sumt af myndbrellunum eru ekki studdar af bakendanum eða vélbúnaði.
Comment[it]=Alcuni effetti non sono supportati dal motore o dall'hardware.
@ -7022,7 +7022,7 @@ Name[ga]=Tíliú Cumasaithe
Name[he]=ריצוף אופשר
Name[hi]=टायलिग सक्षम
Name[hr]=Slaganje omogućeno
Name[ia]=Tegulas Habilitate
Name[ia]=Tegulas habilitate
Name[id]=Pengubinan Diaktifkan
Name[it]=Affiancamento abilitato
Name[ja]=タイリングが有効
@ -7069,7 +7069,7 @@ Comment[fr]=Le mode des fenêtres en mosaïque a été activé.
Comment[ga]=Cumasaíodh an mód tílithe
Comment[he]=מצב ריצוף אופשר
Comment[hr]=Omogućeno je slaganje
Comment[ia]=Le modo de tegula ha essite habilitate
Comment[ia]=Le modo de tegulas ha essite habilitate
Comment[id]=Mode pengubinan telah diaktifkan
Comment[it]=La modalità di affiancamento è stata attivata
Comment[ja]=タイリングモードが有効になりました
@ -7167,7 +7167,7 @@ Comment[fr]=Le mode des fenêtres en mosaïque a été désactivé.
Comment[ga]=Díchumasaíodh an mód tílithe
Comment[he]=מצב ריצוף הופסק
Comment[hr]=Popločavanje je onemogućeno
Comment[ia]=Le mode de Tegulas ha essite dishabilitate
Comment[ia]=Le mode de tegulas ha essite dishabilitate
Comment[id]=Tombol pengubinan telah dinonaktifkan
Comment[it]=La modalità di affiancamento è stata disattivata
Comment[ja]=タイリングモードが無効になりました
@ -7218,7 +7218,7 @@ Name[ga]=Athraíodh Leagan Amach na dTíleanna
Name[he]=פריסת ריצוף שונתה
Name[hi]=टायलिंग खाका बदला
Name[hr]=Promijenjen je raspored slaganja
Name[ia]=Disposition a Tegulas Modificate
Name[ia]=Disposition a tegulas modificate
Name[id]=Tata Letak Pengubinan Diubah
Name[it]=Schema di affiancamento modificato
Name[ja]=タイリング配列が変更
@ -7266,7 +7266,7 @@ Comment[ga]=Athraíodh leagan amach na dtíleanna
Comment[he]=פריסת ריצוף שונתה
Comment[hi]=टायलिंग खाका बदला गया
Comment[hr]=Promijenjen je raspored slaganja
Comment[ia]=Le disposition a Tegulas ha essite cambiate
Comment[ia]=Le disposition a tegulas ha essite cambiate
Comment[id]=Tata Letak Pengubinan telah diubah
Comment[it]=Lo schema di affiancamento è stato modificato
Comment[ja]=タイリング配列が変更されました

View File

@ -25,28 +25,35 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Some shortcuts have Tarzan-speech like names, they need extra
// normal human descriptions with DEF2() the others can use DEF()
// new DEF3 allows to pass data to the action, replacing the %1 argument in the name
#ifndef NOSLOTS
# define DEF2( name, descr, key, fnSlot ) \
a = actionCollection->addAction( name ); \
a->setText( i18n(descr) ); \
qobject_cast<KAction*>( a )->setGlobalShortcut(KShortcut(key)); \
connect(a, SIGNAL(triggered(bool)), SLOT(fnSlot))
# define DEF( name, key, fnSlot ) \
a = actionCollection->addAction( name ); \
a->setText( i18n(name) ); \
qobject_cast<KAction*>( a )->setGlobalShortcut(KShortcut(key)); \
connect(a, SIGNAL(triggered(bool)), SLOT(fnSlot))
#define KWIN_CONNECT(_FNSLOT_) connect(a, SIGNAL(triggered(bool)), SLOT(_FNSLOT_));
#else
# define DEF2( name, descr, key, fnSlot ) \
a = actionCollection->addAction( name ); \
a->setText( i18n(descr) ); \
qobject_cast<KAction*>( a )->setGlobalShortcut(KShortcut(key));
# define DEF( name, key, fnSlot ) \
a = actionCollection->addAction( name ); \
a->setText( i18n(name) ); \
qobject_cast<KAction*>( a )->setGlobalShortcut(KShortcut(key));
#define KWIN_CONNECT(_FNSLOT_) /*noop*/
#endif
#define DEF2( name, descr, key, fnSlot ) \
a = actionCollection->addAction( name ); \
a->setText( i18n(descr) ); \
qobject_cast<KAction*>( a )->setGlobalShortcut(KShortcut(key)); \
KWIN_CONNECT(fnSlot)
#define DEF4( name, descr, key, fnSlot, value ) \
DEF2(name, descr, key, fnSlot) \
a->setData(value);
#define DEF( name, key, fnSlot ) \
DEF2(name, name, key, fnSlot)
#define DEF3( name, key, fnSlot, value ) \
a = actionCollection->addAction( QString(name).arg(value) ); \
a->setText( i18n(name, value) ); \
qobject_cast<KAction*>( a )->setGlobalShortcut(KShortcut(key)); \
a->setData(value); \
KWIN_CONNECT(fnSlot)
a = actionCollection->addAction("Program:kwin");
a->setText(i18n("System"));
@ -143,79 +150,44 @@ a = actionCollection->addAction("Group:Window Desktop");
a->setText(i18n("Window & Desktop"));
DEF2("Window On All Desktops", I18N_NOOP("Keep Window on All Desktops"),
0, slotWindowOnAllDesktops());
DEF(I18N_NOOP("Window to Desktop 1"), 0, slotWindowToDesktop1());
DEF(I18N_NOOP("Window to Desktop 2"), 0, slotWindowToDesktop2());
DEF(I18N_NOOP("Window to Desktop 3"), 0, slotWindowToDesktop3());
DEF(I18N_NOOP("Window to Desktop 4"), 0, slotWindowToDesktop4());
DEF(I18N_NOOP("Window to Desktop 5"), 0, slotWindowToDesktop5());
DEF(I18N_NOOP("Window to Desktop 6"), 0, slotWindowToDesktop6());
DEF(I18N_NOOP("Window to Desktop 7"), 0, slotWindowToDesktop7());
DEF(I18N_NOOP("Window to Desktop 8"), 0, slotWindowToDesktop8());
DEF(I18N_NOOP("Window to Desktop 9"), 0, slotWindowToDesktop9());
DEF(I18N_NOOP("Window to Desktop 10"), 0, slotWindowToDesktop10());
DEF(I18N_NOOP("Window to Desktop 11"), 0, slotWindowToDesktop11());
DEF(I18N_NOOP("Window to Desktop 12"), 0, slotWindowToDesktop12());
DEF(I18N_NOOP("Window to Desktop 13"), 0, slotWindowToDesktop13());
DEF(I18N_NOOP("Window to Desktop 14"), 0, slotWindowToDesktop14());
DEF(I18N_NOOP("Window to Desktop 15"), 0, slotWindowToDesktop15());
DEF(I18N_NOOP("Window to Desktop 16"), 0, slotWindowToDesktop16());
DEF(I18N_NOOP("Window to Desktop 17"), 0, slotWindowToDesktop17());
DEF(I18N_NOOP("Window to Desktop 18"), 0, slotWindowToDesktop18());
DEF(I18N_NOOP("Window to Desktop 19"), 0, slotWindowToDesktop19());
DEF(I18N_NOOP("Window to Desktop 20"), 0, slotWindowToDesktop20());
for (int i = 1; i < 21; ++i) {
DEF3(I18N_NOOP("Window to Desktop %1"), 0, slotWindowToDesktop(), i);
}
DEF(I18N_NOOP("Window to Next Desktop"), 0, slotWindowToNextDesktop());
DEF(I18N_NOOP("Window to Previous Desktop"), 0, slotWindowToPreviousDesktop());
DEF(I18N_NOOP("Window One Desktop to the Right"), 0, slotWindowToDesktopRight());
DEF(I18N_NOOP("Window One Desktop to the Left"), 0, slotWindowToDesktopLeft());
DEF(I18N_NOOP("Window One Desktop Up"), 0, slotWindowToDesktopUp());
DEF(I18N_NOOP("Window One Desktop Down"), 0, slotWindowToDesktopDown());
DEF(I18N_NOOP("Window to Screen 0"), 0, slotWindowToScreen0());
DEF(I18N_NOOP("Window to Screen 1"), 0, slotWindowToScreen1());
DEF(I18N_NOOP("Window to Screen 2"), 0, slotWindowToScreen2());
DEF(I18N_NOOP("Window to Screen 3"), 0, slotWindowToScreen3());
DEF(I18N_NOOP("Window to Screen 4"), 0, slotWindowToScreen4());
DEF(I18N_NOOP("Window to Screen 5"), 0, slotWindowToScreen5());
DEF(I18N_NOOP("Window to Screen 6"), 0, slotWindowToScreen6());
DEF(I18N_NOOP("Window to Screen 7"), 0, slotWindowToScreen7());
for (int i = 0; i < 8; ++i) {
DEF3(I18N_NOOP("Window to Screen %1"), 0, slotWindowToScreen(), i);
}
DEF(I18N_NOOP("Window to Next Screen"), 0, slotWindowToNextScreen());
DEF(I18N_NOOP("Show Desktop"), 0, slotToggleShowDesktop());
a = actionCollection->addAction("Group:Desktop Switching");
a->setText(i18n("Desktop Switching"));
DEF(I18N_NOOP("Switch to Desktop 1"), Qt::CTRL + Qt::Key_F1, slotSwitchToDesktop1());
DEF(I18N_NOOP("Switch to Desktop 2"), Qt::CTRL + Qt::Key_F2, slotSwitchToDesktop2());
DEF(I18N_NOOP("Switch to Desktop 3"), Qt::CTRL + Qt::Key_F3, slotSwitchToDesktop3());
DEF(I18N_NOOP("Switch to Desktop 4"), Qt::CTRL + Qt::Key_F4, slotSwitchToDesktop4());
DEF(I18N_NOOP("Switch to Desktop 5"), 0, slotSwitchToDesktop5());
DEF(I18N_NOOP("Switch to Desktop 6"), 0, slotSwitchToDesktop6());
DEF(I18N_NOOP("Switch to Desktop 7"), 0, slotSwitchToDesktop7());
DEF(I18N_NOOP("Switch to Desktop 8"), 0, slotSwitchToDesktop8());
DEF(I18N_NOOP("Switch to Desktop 9"), 0, slotSwitchToDesktop9());
DEF(I18N_NOOP("Switch to Desktop 10"), 0, slotSwitchToDesktop10());
DEF(I18N_NOOP("Switch to Desktop 11"), 0, slotSwitchToDesktop11());
DEF(I18N_NOOP("Switch to Desktop 12"), 0, slotSwitchToDesktop12());
DEF(I18N_NOOP("Switch to Desktop 13"), 0, slotSwitchToDesktop13());
DEF(I18N_NOOP("Switch to Desktop 14"), 0, slotSwitchToDesktop14());
DEF(I18N_NOOP("Switch to Desktop 15"), 0, slotSwitchToDesktop15());
DEF(I18N_NOOP("Switch to Desktop 16"), 0, slotSwitchToDesktop16());
DEF(I18N_NOOP("Switch to Desktop 17"), 0, slotSwitchToDesktop17());
DEF(I18N_NOOP("Switch to Desktop 18"), 0, slotSwitchToDesktop18());
DEF(I18N_NOOP("Switch to Desktop 19"), 0, slotSwitchToDesktop19());
DEF(I18N_NOOP("Switch to Desktop 20"), 0, slotSwitchToDesktop20());
DEF3("Switch to Desktop %1", Qt::CTRL + Qt::Key_F1, slotSwitchToDesktop(), 1);
DEF3("Switch to Desktop %1", Qt::CTRL + Qt::Key_F2, slotSwitchToDesktop(), 2);
DEF3("Switch to Desktop %1", Qt::CTRL + Qt::Key_F3, slotSwitchToDesktop(), 3);
DEF3("Switch to Desktop %1", Qt::CTRL + Qt::Key_F4, slotSwitchToDesktop(), 4);
for (int i = 5; i < 21; ++i) {
DEF3(I18N_NOOP("Switch to Desktop %1"), 0, slotSwitchToDesktop(), i);
}
DEF(I18N_NOOP("Switch to Next Desktop"), 0, slotSwitchDesktopNext());
DEF(I18N_NOOP("Switch to Previous Desktop"), 0, slotSwitchDesktopPrevious());
DEF(I18N_NOOP("Switch One Desktop to the Right"), 0, slotSwitchDesktopRight());
DEF(I18N_NOOP("Switch One Desktop to the Left"), 0, slotSwitchDesktopLeft());
DEF(I18N_NOOP("Switch One Desktop Up"), 0, slotSwitchDesktopUp());
DEF(I18N_NOOP("Switch One Desktop Down"), 0, slotSwitchDesktopDown());
DEF(I18N_NOOP("Switch to Screen 0"), 0, slotSwitchToScreen0());
DEF(I18N_NOOP("Switch to Screen 1"), 0, slotSwitchToScreen1());
DEF(I18N_NOOP("Switch to Screen 2"), 0, slotSwitchToScreen2());
DEF(I18N_NOOP("Switch to Screen 3"), 0, slotSwitchToScreen3());
DEF(I18N_NOOP("Switch to Screen 4"), 0, slotSwitchToScreen4());
DEF(I18N_NOOP("Switch to Screen 5"), 0, slotSwitchToScreen5());
DEF(I18N_NOOP("Switch to Screen 6"), 0, slotSwitchToScreen6());
DEF(I18N_NOOP("Switch to Screen 7"), 0, slotSwitchToScreen7());
for (int i = 0; i < 8; ++i) {
DEF3(I18N_NOOP("Switch to Screen %1"), 0, slotSwitchToScreen(), i);
}
DEF(I18N_NOOP("Switch to Next Screen"), 0, slotSwitchToNextScreen());
a = actionCollection->addAction("Group:Miscellaneous");

View File

@ -591,6 +591,8 @@ bool Client::manage(Window w, bool isMapped)
workspace()->discardUsedWindowRules(this, false); // Remove ApplyNow rules
updateWindowRules(); // Was blocked while !isManaged()
updateCompositeBlocking(true);
// TODO: there's a small problem here - isManaged() depends on the mapping state,
// but this client is not yet in Workspace's client list at this point, will
// be only done in addClient()

View File

@ -66,6 +66,7 @@ Rules::Rules()
, belowrule(UnusedSetRule)
, fullscreenrule(UnusedSetRule)
, noborderrule(UnusedSetRule)
, blockcompositingrule(UnusedForceRule)
, fsplevelrule(UnusedForceRule)
, acceptfocusrule(UnusedForceRule)
, moveresizemoderule(UnusedForceRule)
@ -173,6 +174,7 @@ void Rules::readFromCfg(const KConfigGroup& cfg)
READ_SET_RULE(below, , false);
READ_SET_RULE(fullscreen, , false);
READ_SET_RULE(noborder, , false);
READ_FORCE_RULE(blockcompositing, , false);
READ_FORCE_RULE(fsplevel, limit0to4, 0); // fsp is 0-4
READ_FORCE_RULE(acceptfocus, , false);
READ_FORCE_RULE(moveresizemode, Options::stringToMoveResizeMode, QString());
@ -262,6 +264,7 @@ void Rules::write(KConfigGroup& cfg) const
WRITE_SET_RULE(below,);
WRITE_SET_RULE(fullscreen,);
WRITE_SET_RULE(noborder,);
WRITE_FORCE_RULE(blockcompositing,);
WRITE_FORCE_RULE(fsplevel,);
WRITE_FORCE_RULE(acceptfocus,);
WRITE_FORCE_RULE(moveresizemode, Options::moveResizeModeToString);
@ -303,6 +306,7 @@ bool Rules::isEmpty() const
&& belowrule == UnusedSetRule
&& fullscreenrule == UnusedSetRule
&& noborderrule == UnusedSetRule
&& blockcompositingrule == UnusedForceRule
&& fsplevelrule == UnusedForceRule
&& acceptfocusrule == UnusedForceRule
&& moveresizemoderule == UnusedForceRule
@ -612,6 +616,7 @@ APPLY_RULE(above, KeepAbove, bool)
APPLY_RULE(below, KeepBelow, bool)
APPLY_RULE(fullscreen, FullScreen, bool)
APPLY_RULE(noborder, NoBorder, bool)
APPLY_FORCE_RULE(blockcompositing, BlockCompositing, bool)
APPLY_FORCE_RULE(fsplevel, FSP, int)
APPLY_FORCE_RULE(acceptfocus, AcceptFocus, bool)
APPLY_FORCE_RULE(moveresizemode, MoveResizeMode, Options::MoveResizeMode)
@ -678,6 +683,7 @@ void Rules::discardUsed(bool withdrawn)
DISCARD_USED_SET_RULE(below);
DISCARD_USED_SET_RULE(fullscreen);
DISCARD_USED_SET_RULE(noborder);
DISCARD_USED_FORCE_RULE(blockcompositing);
DISCARD_USED_FORCE_RULE(fsplevel);
DISCARD_USED_FORCE_RULE(acceptfocus);
DISCARD_USED_FORCE_RULE(moveresizemode);
@ -801,6 +807,7 @@ CHECK_RULE(KeepAbove, bool)
CHECK_RULE(KeepBelow, bool)
CHECK_RULE(FullScreen, bool)
CHECK_RULE(NoBorder, bool)
CHECK_FORCE_RULE(BlockCompositing, bool)
CHECK_FORCE_RULE(FSP, int)
CHECK_FORCE_RULE(AcceptFocus, bool)
CHECK_FORCE_RULE(MoveResizeMode, Options::MoveResizeMode)

View File

@ -75,6 +75,7 @@ public:
bool checkKeepBelow(bool below, bool init = false) const;
bool checkFullScreen(bool fs, bool init = false) const;
bool checkNoBorder(bool noborder, bool init = false) const;
bool checkBlockCompositing(bool block) const;
int checkFSP(int fsp) const;
bool checkAcceptFocus(bool focus) const;
Options::MoveResizeMode checkMoveResizeMode(Options::MoveResizeMode mode) const;
@ -132,6 +133,7 @@ public:
bool applyKeepBelow(bool& below, bool init) const;
bool applyFullScreen(bool& fs, bool init) const;
bool applyNoBorder(bool& noborder, bool init) const;
bool applyBlockCompositing(bool& block) const;
bool applyFSP(int& fsp) const;
bool applyAcceptFocus(bool& focus) const;
bool applyMoveResizeMode(Options::MoveResizeMode& mode) const;
@ -244,6 +246,8 @@ private:
SetRule fullscreenrule;
bool noborder;
SetRule noborderrule;
bool blockcompositing;
ForceRule blockcompositingrule;
int fsplevel;
ForceRule fsplevelrule;
bool acceptfocus;

View File

@ -1166,14 +1166,30 @@ void Workspace::slotSwitchDesktopDown()
setCurrentDesktop(desktop);
}
void Workspace::slotSwitchToDesktop(int i)
static int senderValue(QObject *sender)
{
setCurrentDesktop(i);
QAction *act = qobject_cast<QAction*>(sender);
bool ok = false; int i = -1;
if (act)
i = act->data().toUInt(&ok);
if (ok)
return i;
return -1;
}
void Workspace::slotSwitchToDesktop()
{
const int i = senderValue(sender());
if (i > 0)
setCurrentDesktop(i);
}
void Workspace::slotWindowToDesktop(int i)
void Workspace::slotWindowToDesktop()
{
const int i = senderValue(sender());
if (i < 1)
return;
Client* c = active_popup_client ? active_popup_client : active_client;
if (i >= 1 && i <= numberOfDesktops() && c
&& !c->isDesktop()
@ -1182,18 +1198,23 @@ void Workspace::slotWindowToDesktop(int i)
sendClientToDesktop(c, i, true);
}
void Workspace::slotSwitchToScreen(int i)
void Workspace::slotSwitchToScreen()
{
setCurrentScreen(i);
const int i = senderValue(sender());
if (i > -1)
setCurrentScreen(i);
}
void Workspace::slotSwitchToNextScreen()
{
slotSwitchToScreen((activeScreen() + 1) % numScreens());
setCurrentScreen((activeScreen() + 1) % numScreens());
}
void Workspace::slotWindowToScreen(int i)
void Workspace::slotWindowToScreen()
{
const int i = senderValue(sender());
if (i < 0)
return;
Client* c = active_popup_client ? active_popup_client : active_client;
if (i >= 0 && i <= numScreens() && c
&& !c->isDesktop()

View File

@ -151,6 +151,7 @@ Workspace::Workspace(bool restore)
, forced_global_mouse_grab(false)
, cm_selection(NULL)
, compositingSuspended(false)
, compositingBlocked(false)
, xrrRefreshRate(0)
, overlay(None)
, overlay_visible(true)
@ -702,6 +703,8 @@ void Workspace::removeClient(Client* c, allowed_t)
updateStackingOrder(true);
updateCompositeBlocking();
if (tab_grab)
tab_box->reset(true);
@ -1170,20 +1173,8 @@ void Workspace::loadDesktopSettings()
else
groupname.sprintf("Desktops-screen-%d", screen_number);
KConfigGroup group(c, groupname);
int n = group.readEntry("Number", 4);
desktopCount_ = n;
workarea.clear();
workarea.resize(n + 1);
restrictedmovearea.clear();
restrictedmovearea.resize(n + 1);
oldrestrictedmovearea.clear();
oldrestrictedmovearea.resize(n + 1);
screenarea.clear();
rootInfo->setNumberOfDesktops(n);
desktop_focus_chain.resize(n);
// Make it +1, so that it can be accessed as [1..numberofdesktops]
focus_chain.resize(n + 1);
const int n = group.readEntry("Number", 4);
setNumberOfDesktops(n);
for (int i = 1; i <= n; i++) {
QString s = group.readEntry(QString("Name_%1").arg(i), i18n("Desktop %1", i));
rootInfo->setDesktopName(i, s.toUtf8().data());
@ -1643,40 +1634,33 @@ void Workspace::setNumberOfDesktops(int n)
desktopCount_ = n;
updateDesktopLayout(); // Make sure the layout is still valid
if (currentDesktop() > numberOfDesktops())
setCurrentDesktop(numberOfDesktops());
if (currentDesktop() > n)
setCurrentDesktop(n);
// If increasing the number, do the resizing now, otherwise
// after the moving of windows to still existing desktops
if (old_number_of_desktops < numberOfDesktops()) {
rootInfo->setNumberOfDesktops(numberOfDesktops());
NETPoint* viewports = new NETPoint[numberOfDesktops()];
rootInfo->setDesktopViewport(numberOfDesktops(), *viewports);
delete[] viewports;
updateClientArea(true);
focus_chain.resize(numberOfDesktops() + 1);
}
// If the number of desktops decreased, move all windows
// that would be hidden to the last visible desktop
// move all windows that would be hidden to the last visible desktop
if (old_number_of_desktops > numberOfDesktops()) {
for (ClientList::ConstIterator it = clients.constBegin();
it != clients.constEnd();
++it)
for (ClientList::ConstIterator it = clients.constBegin(); it != clients.constEnd(); ++it) {
if (!(*it)->isOnAllDesktops() && (*it)->desktop() > numberOfDesktops())
sendClientToDesktop(*it, numberOfDesktops(), true);
// TODO: Tile should have a method allClients, push them into other tiles
}
if (old_number_of_desktops > numberOfDesktops()) {
rootInfo->setNumberOfDesktops(numberOfDesktops());
NETPoint* viewports = new NETPoint[numberOfDesktops()];
rootInfo->setDesktopViewport(numberOfDesktops(), *viewports);
delete[] viewports;
updateClientArea(true);
focus_chain.resize(numberOfDesktops() + 1);
// TODO: Tile should have a method allClients, push them into other tiles
}
}
rootInfo->setNumberOfDesktops(n);
NETPoint* viewports = new NETPoint[n];
rootInfo->setDesktopViewport(n, *viewports);
delete[] viewports;
updateClientArea(true);
saveDesktopSettings();
// Make it +1, so that it can be accessed as [1..numberofdesktops]
focus_chain.resize(n + 1);
workarea.clear();
workarea.resize(n + 1);
restrictedmovearea.clear();
restrictedmovearea.resize(n + 1);
oldrestrictedmovearea.clear();
oldrestrictedmovearea.resize(n + 1);
screenarea.clear();
// Resize and reset the desktop focus chain.
desktop_focus_chain.resize(n);
@ -1687,6 +1671,8 @@ void Workspace::setNumberOfDesktops(int n)
// reset the desktop change osd
desktop_change_osd->numberDesktopsChanged();
saveDesktopSettings();
emit numberDesktopsChanged(old_number_of_desktops);
}
@ -1697,6 +1683,8 @@ void Workspace::setNumberOfDesktops(int n)
*/
void Workspace::sendClientToDesktop(Client* c, int desk, bool dont_activate)
{
if (desk < 1 || desk > numberOfDesktops())
return;
int old_desktop = c->desktop();
bool was_on_desktop = c->isOnDesktop(desk) || c->isOnAllDesktops();
c->setDesktop(desk);

View File

@ -404,6 +404,7 @@ public:
void toggleEffect(const QString& name);
void reconfigureEffect(const QString& name);
void unloadEffect(const QString& name);
void updateCompositeBlocking(Client* c = NULL);
QStringList loadedEffects() const;
QStringList listOfEffects() const;
@ -563,180 +564,13 @@ public slots:
void slotSwitchDesktopUp();
void slotSwitchDesktopDown();
void slotSwitchToDesktop(int);
void slotSwitchToDesktop1() {
return slotSwitchToDesktop(1);
}
void slotSwitchToDesktop2() {
return slotSwitchToDesktop(2);
}
void slotSwitchToDesktop3() {
return slotSwitchToDesktop(3);
}
void slotSwitchToDesktop4() {
return slotSwitchToDesktop(4);
}
void slotSwitchToDesktop5() {
return slotSwitchToDesktop(5);
}
void slotSwitchToDesktop6() {
return slotSwitchToDesktop(6);
}
void slotSwitchToDesktop7() {
return slotSwitchToDesktop(7);
}
void slotSwitchToDesktop8() {
return slotSwitchToDesktop(8);
}
void slotSwitchToDesktop9() {
return slotSwitchToDesktop(9);
}
void slotSwitchToDesktop10() {
return slotSwitchToDesktop(10);
}
void slotSwitchToDesktop11() {
return slotSwitchToDesktop(11);
}
void slotSwitchToDesktop12() {
return slotSwitchToDesktop(12);
}
void slotSwitchToDesktop13() {
return slotSwitchToDesktop(13);
}
void slotSwitchToDesktop14() {
return slotSwitchToDesktop(14);
}
void slotSwitchToDesktop15() {
return slotSwitchToDesktop(15);
}
void slotSwitchToDesktop16() {
return slotSwitchToDesktop(16);
}
void slotSwitchToDesktop17() {
return slotSwitchToDesktop(17);
}
void slotSwitchToDesktop18() {
return slotSwitchToDesktop(18);
}
void slotSwitchToDesktop19() {
return slotSwitchToDesktop(19);
}
void slotSwitchToDesktop20() {
return slotSwitchToDesktop(20);
}
void slotSwitchToDesktop();
//void slotSwitchToWindow( int );
void slotWindowToDesktop(int);
void slotWindowToDesktop1() {
return slotWindowToDesktop(1);
}
void slotWindowToDesktop2() {
return slotWindowToDesktop(2);
}
void slotWindowToDesktop3() {
return slotWindowToDesktop(3);
}
void slotWindowToDesktop4() {
return slotWindowToDesktop(4);
}
void slotWindowToDesktop5() {
return slotWindowToDesktop(5);
}
void slotWindowToDesktop6() {
return slotWindowToDesktop(6);
}
void slotWindowToDesktop7() {
return slotWindowToDesktop(7);
}
void slotWindowToDesktop8() {
return slotWindowToDesktop(8);
}
void slotWindowToDesktop9() {
return slotWindowToDesktop(9);
}
void slotWindowToDesktop10() {
return slotWindowToDesktop(10);
}
void slotWindowToDesktop11() {
return slotWindowToDesktop(11);
}
void slotWindowToDesktop12() {
return slotWindowToDesktop(12);
}
void slotWindowToDesktop13() {
return slotWindowToDesktop(13);
}
void slotWindowToDesktop14() {
return slotWindowToDesktop(14);
}
void slotWindowToDesktop15() {
return slotWindowToDesktop(15);
}
void slotWindowToDesktop16() {
return slotWindowToDesktop(16);
}
void slotWindowToDesktop17() {
return slotWindowToDesktop(17);
}
void slotWindowToDesktop18() {
return slotWindowToDesktop(18);
}
void slotWindowToDesktop19() {
return slotWindowToDesktop(19);
}
void slotWindowToDesktop20() {
return slotWindowToDesktop(20);
}
void slotWindowToDesktop();
//void slotWindowToListPosition( int );
void slotSwitchToScreen(int);
void slotSwitchToScreen0() {
return slotSwitchToScreen(0);
}
void slotSwitchToScreen1() {
return slotSwitchToScreen(1);
}
void slotSwitchToScreen2() {
return slotSwitchToScreen(2);
}
void slotSwitchToScreen3() {
return slotSwitchToScreen(3);
}
void slotSwitchToScreen4() {
return slotSwitchToScreen(4);
}
void slotSwitchToScreen5() {
return slotSwitchToScreen(5);
}
void slotSwitchToScreen6() {
return slotSwitchToScreen(6);
}
void slotSwitchToScreen7() {
return slotSwitchToScreen(7);
}
void slotWindowToScreen(int);
void slotWindowToScreen0() {
return slotWindowToScreen(0);
}
void slotWindowToScreen1() {
return slotWindowToScreen(1);
}
void slotWindowToScreen2() {
return slotWindowToScreen(2);
}
void slotWindowToScreen3() {
return slotWindowToScreen(3);
}
void slotWindowToScreen4() {
return slotWindowToScreen(4);
}
void slotWindowToScreen5() {
return slotWindowToScreen(5);
}
void slotWindowToScreen6() {
return slotWindowToScreen(6);
}
void slotWindowToScreen7() {
return slotWindowToScreen(7);
}
void slotSwitchToScreen();
void slotWindowToScreen();
void slotSwitchToNextScreen();
void slotWindowToNextScreen();
void slotToggleShowDesktop();
@ -1183,7 +1017,7 @@ private:
friend class StackingUpdatesBlocker;
KSelectionOwner* cm_selection;
bool compositingSuspended;
bool compositingSuspended, compositingBlocked;
QBasicTimer compositeTimer;
qint64 nextPaintReference;
QTimer mousePollingTimer;