1
diff -urN tag/kwin/activation.cpp kwin/activation.cpp
2
--- kdebase/kwin/activation.cpp 2006-04-14 15:33:17.000000000 +0000
3
+++ kdebase/kwin/activation.cpp 2006-04-14 15:29:53.000000000 +0000
5
last_active_client = active_client;
8
- updateFocusChains( active_client, true ); // make it first in focus chain
9
+ updateFocusChains( active_client, FocusChainMakeFirst );
10
active_client->demandAttention( false );
12
pending_take_activity = NULL;
13
diff -urN tag/kwin/client.cpp kwin/client.cpp
14
--- kdebase/kwin/client.cpp 2006-04-14 15:33:17.000000000 +0000
15
+++ kdebase/kwin/client.cpp 2006-04-14 15:29:53.000000000 +0000
17
updateAllowedActions();
18
workspace()->updateMinimizedOfTransients( this );
20
- workspace()->updateFocusChains( this, false ); // make it last in the focus chain
21
+ workspace()->updateFocusChains( this, Workspace::FocusChainMakeLast );
24
void Client::unminimize( bool avoid_animation )
29
- if( workspace()->showingDesktop())
30
+ bool belongs_to_desktop = false;
31
+ for( ClientList::ConstIterator it = group()->members().begin();
32
+ it != group()->members().end();
34
+ if( (*it)->isDesktop())
36
+ belongs_to_desktop = true;
39
+ if( !belongs_to_desktop && workspace()->showingDesktop())
40
workspace()->resetShowingDesktop( true );
42
setMappingState( IconicState );
44
info->setState( b?NET::SkipTaskbar:0, NET::SkipTaskbar );
46
if( was_wants_tab_focus != wantsTabFocus())
47
- workspace()->updateFocusChains( this, isActive());
48
+ workspace()->updateFocusChains( this,
49
+ isActive() ? Workspace::FocusChainMakeFirst : Workspace::FocusChainUpdate );
52
void Client::setSkipPager( bool b )
55
if( decoration != NULL )
56
decoration->desktopChange();
57
- workspace()->updateFocusChains( this, true );
58
+ workspace()->updateFocusChains( this, Workspace::FocusChainMakeFirst );
62
diff -urN tag/kwin/clients/b2/b2client.cpp kwin/clients/b2/b2client.cpp
63
--- kdebase/kwin/clients/b2/b2client.cpp 2006-04-14 15:33:13.000000000 +0000
64
+++ kdebase/kwin/clients/b2/b2client.cpp 2006-04-14 15:29:39.000000000 +0000
66
if (drawSmallBorders && (maximizeMode() & MaximizeVertical)) {
69
- return do_draw_handle & resizable;
70
+ return do_draw_handle && resizable;
74
diff -urN tag/kwin/clients/default/kdedefault.cpp kwin/clients/default/kdedefault.cpp
75
--- kdebase/kwin/clients/default/kdedefault.cpp 2006-04-14 15:33:14.000000000 +0000
76
+++ kdebase/kwin/clients/default/kdedefault.cpp 2006-04-14 15:29:40.000000000 +0000
78
case LM_ExplicitButtonSpacer:
79
if ( !isToolWindow() )
84
return KCommonDecoration::layoutMetric(lm, respectWindowState, btn);
86
diff -urN tag/kwin/events.cpp kwin/events.cpp
87
--- kdebase/kwin/events.cpp 2006-04-14 15:33:17.000000000 +0000
88
+++ kdebase/kwin/events.cpp 2006-04-14 15:29:53.000000000 +0000
93
- updateFocusChains( c, true );
94
+ updateFocusChains( c, FocusChainUpdate );
99
if ( e->xconfigurerequest.parent == root )
102
- unsigned int value_mask = 0;
103
- wc.border_width = 0;
104
+ wc.border_width = e->xconfigurerequest.border_width;
105
wc.x = e->xconfigurerequest.x;
106
wc.y = e->xconfigurerequest.y;
107
wc.width = e->xconfigurerequest.width;
108
wc.height = e->xconfigurerequest.height;
110
wc.stack_mode = Above;
111
- value_mask = e->xconfigurerequest.value_mask | CWBorderWidth;
112
+ unsigned int value_mask = e->xconfigurerequest.value_mask
113
+ & ( CWX | CWY | CWWidth | CWHeight | CWBorderWidth );
114
XConfigureWindow( qt_xdisplay(), e->xconfigurerequest.window, value_mask, &wc );
117
diff -urN tag/kwin/eventsrc kwin/eventsrc
118
--- kdebase/kwin/eventsrc 2006-04-14 15:33:17.000000000 +0000
119
+++ kdebase/kwin/eventsrc 2006-04-14 15:29:53.000000000 +0000
120
@@ -1207,6 +1207,7 @@
121
Name[fy]=Gean nei buroblêd 9
122
Name[ga]=Téigh go Deasc 9
123
Name[gl]=Ir ao Escritório 9
124
+Name[he]=מעבר לשולחן עבודה 9
125
Name[hu]=Váltás a 9. asztalra
126
Name[is]=Birta skjáborð 9
127
Name[it]=Va al desktop 9
128
@@ -1256,6 +1257,7 @@
129
Comment[fy]=Firtueel buroblêd njoggen is selektearre
130
Comment[ga]=Roghnaíodh deasc fhíorúil a naoi
131
Comment[gl]=Selecciona-se o escritório virtual número nove
132
+Comment[he]=שולחן העבודה הווירטואלי תשע נבחר
133
Comment[hu]=A 9. asztal kiválasztva
134
Comment[is]=Sýndarskjáborð níu er virkt
135
Comment[it]=Il desktop virtuale nove viene selezionato.
136
@@ -1307,6 +1309,7 @@
137
Name[fy]=Gean nei buroblêd 10
138
Name[ga]=Téigh go Deasc 10
139
Name[gl]=Ir ao Escritório 10
140
+Name[he]=מעבר לשולחן עבודה 10
141
Name[hu]=Váltás a 10. asztalra
142
Name[is]=Birta skjáborð 10
143
Name[it]=Va al desktop 10
144
@@ -1356,6 +1359,7 @@
145
Comment[fy]=Firtueel buroblêd tsien is selektearre
146
Comment[ga]=Roghnaíodh deasc fhíorúil a deich
147
Comment[gl]=Escolle-se o escritório virtual número dez
148
+Comment[he]=שולחן העבודה הווירטואלי עשר נבחר
149
Comment[hu]=A 10. asztal kiválasztva
150
Comment[is]=Sýndarskjáborð tíu er virkt
151
Comment[it]=Il desktop virtuale dieci viene selezionato.
152
@@ -1408,6 +1412,7 @@
153
Name[fy]=Gean nei buroblêd 11
154
Name[ga]=Téigh go Deasc 11
155
Name[gl]=Ir ao Escritório 11
156
+Name[he]=מעבר לשולחן עבודה 11
157
Name[hu]=Váltás a 11. asztalra
158
Name[is]=Birta skjáborð 11
159
Name[it]=Va al desktop 11
160
@@ -1457,6 +1462,7 @@
161
Comment[fy]=Firtueel buroblêd alve is selektearre
162
Comment[ga]=Roghnaíodh deasc fhíorúil a haon déag
163
Comment[gl]=Escolle-se o escritório virtual número once
164
+Comment[he]=שולחן העבודה הווירטואלי אחד־עשרה נבחר
165
Comment[hu]=A 11. asztal kiválasztva
166
Comment[is]=Sýndarskjáborð ellefu er virkt
167
Comment[it]=Il desktop virtuale undici viene selezionato.
168
@@ -1509,6 +1515,7 @@
169
Name[fy]=Gean nei buroblêd 12
170
Name[ga]=Téigh go Deasc 12
171
Name[gl]=Ir ao Escritório 12
172
+Name[he]=1מעבר לשולחן עבודה 2
173
Name[hu]=Váltás a 12. asztalra
174
Name[is]=Birta skjáborð 12
175
Name[it]=Va al desktop 12
176
@@ -1558,6 +1565,7 @@
177
Comment[fy]=Firtueel buroblêd tolve is selektearre
178
Comment[ga]=Roghnaíodh deasc fhíorúil a dó dhéag
179
Comment[gl]=Escolle-se o escritório virtual número doze
180
+Comment[he]=שולחן העבודה הווירטואלי שתיים־עשרה נבחר
181
Comment[hu]=A 12. asztal kiválasztva
182
Comment[is]=Sýndarskjáborð tólf er virkt
183
Comment[it]=Il desktop virtuale dodici viene selezionato.
184
@@ -1609,6 +1617,7 @@
185
Name[fy]=Gean nei buroblêd 13
186
Name[ga]=Téigh go Deasc 13
187
Name[gl]=Ir ao Escritório 13
188
+Name[he]=מעבר לשולחן עבודה 13
189
Name[hu]=Váltás a 13. asztalra
190
Name[is]=Birta skjáborð 13
191
Name[it]=Va al desktop 13
192
@@ -1658,6 +1667,7 @@
193
Comment[fy]=Firtueel buroblêd trettjin is selektearre
194
Comment[ga]=Roghnaíodh deasc fhíorúil a trí déag
195
Comment[gl]=Escolle-se o escritório virtual número Trece
196
+Comment[he]=שולחן העבודה הווירטואלי שלוש־עשרה נבחר
197
Comment[hu]=A 13. asztal kiválasztva
198
Comment[is]=Sýndarskjáborð þrettán er virkt
199
Comment[it]=Il desktop virtuale tredici viene selezionato.
200
@@ -1710,6 +1720,7 @@
201
Name[fy]=Gean nei buroblêd 14
202
Name[ga]=Téigh go Deasc 14
203
Name[gl]=Ir ao Escritório 14
204
+Name[he]=1מעבר לשולחן עבודה 4
205
Name[hu]=Váltás a 14. asztalra
206
Name[is]=Birta skjáborð 14
207
Name[it]=Va al desktop 14
208
@@ -1759,6 +1770,7 @@
209
Comment[fy]=Firtueel buroblêd fjirtjin is selektearre
210
Comment[ga]=Roghnaíodh deasc fhíorúil a ceathair déag
211
Comment[gl]=Escolle-se o escritório virtual número catorce
212
+Comment[he]=שולחן העבודה הווירטואלי ארבע־עשרה נבחר
213
Comment[hu]=A 14. asztal kiválasztva
214
Comment[is]=Sýndarskjáborð fjórtán er virkt
215
Comment[it]=Il desktop virtuale quattordici viene selezionato.
216
@@ -1811,6 +1823,7 @@
217
Name[fy]=Gean nei buroblêd 15
218
Name[ga]=Téigh go Deasc 15
219
Name[gl]=Ir ao Escritório 15
220
+Name[he]=מעבר לשולחן עבודה 15
221
Name[hu]=Váltás a 15. asztalra
222
Name[is]=Birta skjáborð 15
223
Name[it]=Va al desktop 15
224
@@ -1860,6 +1873,7 @@
225
Comment[fy]=Firtueel buroblêd fyftjin is selektearre
226
Comment[ga]=Roghnaíodh deasc fhíorúil a cúig déag
227
Comment[gl]=Escolle-se o escritório virtual número quince
228
+Comment[he]=שולחן העבודה הווירטואלי חמש־עשרה נבחר
229
Comment[hu]=A 15. asztal kiválasztva
230
Comment[is]=Sýndarskjáborð fimmtán er virkt
231
Comment[it]=Il desktop virtuale quindici viene selezionato.
232
@@ -1912,10 +1926,11 @@
233
Name[fy]=Gean nei buroblêd 16
234
Name[ga]=Téigh go Deasc 16
235
Name[gl]=Ir ao Escritório 16
236
+Name[he]=מעבר לשולחן עבודה 16
237
Name[hu]=Váltás a 16. asztalra
238
Name[is]=Birta skjáborð 16
239
Name[it]=Va al desktop 16
240
-Name[ja]=デスクトップ 15 に変更
241
+Name[ja]=デスクトップ 16 に変更
242
Name[km]=ប្ដូរទៅផ្ទៃតុ ១៦
243
Name[lt]=Pereiti į 16 darbastalį
244
Name[mk]=Кон површина 16
245
@@ -1961,6 +1976,7 @@
246
Comment[fy]=Firtueel buroblêd sechstjin is selektearre
247
Comment[ga]=Roghnaíodh deasc fhíorúil a sé déag
248
Comment[gl]=Escolle-se o escritório virtual número dezaseis
249
+Comment[he]=שולחן העבודה הווירטואלי שש־עשרה נבחר
250
Comment[hu]=A 16. asztal kiválasztva
251
Comment[is]=Sýndarskjáborð sextán er virkt
252
Comment[it]=Il desktop virtuale sedici viene selezionato.
253
@@ -2013,6 +2029,7 @@
254
Name[fy]=Gean nei buroblêd 17
255
Name[ga]=Téigh go Deasc 17
256
Name[gl]=Ir ao Escritório 17
257
+Name[he]=1מעבר לשולחן עבודה 7
258
Name[hu]=Váltás a 17. asztalra
259
Name[is]=Birta skjáborð 17
260
Name[it]=Va al desktop 17
261
@@ -2062,6 +2079,7 @@
262
Comment[fy]=Firtueel buroblêd santjin is selektearre
263
Comment[ga]=Roghnaíodh deasc fhíorúil a seacht déag
264
Comment[gl]=Escolle-se o escritório virtual número dezasete
265
+Comment[he]=שולחן העבודה הווירטואלי שבע־עשרה נבחר
266
Comment[hu]=A 17. asztal kiválasztva
267
Comment[is]=Sýndarskjáborð sautján er virkt
268
Comment[it]=Il desktop virtuale diciassette viene selezionato.
269
@@ -2114,6 +2132,7 @@
270
Name[fy]=Gean nei buroblêd 18
271
Name[ga]=Téigh go Deasc 18
272
Name[gl]=Ir ao Escritório 18
273
+Name[he]=מעבר לשולחן עבודה 18
274
Name[hu]=Váltás a 18. asztalra
275
Name[is]=Birta skjáborð 18
276
Name[it]=Va al desktop 18
277
@@ -2163,6 +2182,7 @@
278
Comment[fy]=Firtueel buroblêd achtjin is selektearre
279
Comment[ga]=Roghnaíodh deasc fhíorúil a hocht déag
280
Comment[gl]=Escolle-se o escritório virtual número dezaoito
281
+Comment[he]=שולחן העבודה הווירטואלי שמונה־עשרה נבחר
282
Comment[hu]=A 18. asztal kiválasztva
283
Comment[is]=Sýndarskjáborð átján er virkt
284
Comment[it]=Il desktop virtuale diciotto viene selezionato.
285
@@ -2215,6 +2235,7 @@
286
Name[fy]=Gean nei buroblêd 19
287
Name[ga]=Téigh go Deasc 19
288
Name[gl]=Ir ao Escritório 19
289
+Name[he]=מעבר לשולחן עבודה 19
290
Name[hu]=Váltás az 19. asztalra
291
Name[is]=Birta skjáborð 19
292
Name[it]=Va al desktop 19
293
@@ -2264,6 +2285,7 @@
294
Comment[fy]=Firtueel buroblêd njoggentjin is selektearre
295
Comment[ga]=Roghnaíodh deasc fhíorúil a naoi déag
296
Comment[gl]=Escolle-se o escritório virtual número dezanove
297
+Comment[he]=שולחן העבודה הווירטואלי תשע־עשרה נבחר
298
Comment[hu]=A 19. asztal kiválasztva
299
Comment[is]=Sýndarskjáborð nítján er virkt
300
Comment[it]=Il desktop virtuale diciannove viene selezionato.
301
@@ -2316,6 +2338,7 @@
302
Name[fy]=Gean nei buroblêd 20
303
Name[ga]=Téigh go Deasc 20
304
Name[gl]=Ir ao Escritório 20
305
+Name[he]=מעבר לשולחן עבודה 20
306
Name[hu]=Váltás a 20. asztalra
307
Name[is]=Birta skjáborð 20
308
Name[it]=Va al desktop 20
309
@@ -2365,6 +2388,7 @@
310
Comment[fy]=Firtueel buroblêd twintich is selektearre
311
Comment[ga]=Roghnaíodh deasc fhíorúil fiche
312
Comment[gl]=Escolle-se o escritório virtual número vinte
313
+Comment[he]=שולחן העבודה הווירטואלי עשרים נבחר
314
Comment[hu]=A 20. asztal kiválasztva
315
Comment[is]=Sýndarskjáborð tuttugu er virkt
316
Comment[it]=Il desktop virtuale venti viene selezionato.
317
@@ -4781,6 +4805,7 @@
318
Name[fi]=Ikkuna nykyisellä työpöydällä kaipaa huomiota
319
Name[fr]=La fenêtre sur le bureau courant demande votre attention
320
Name[fy]=Finster op hjoeddeiske buroblêd freget om oandacht
321
+Name[he]=חלון בשולחן עבודה נוכחי דורש תשומת לב
322
Name[hu]=Egy ablak az aktuális asztalon beavatkozást igényel
323
Name[is]=Gluggi á núverandi skjáborði krefst athygli
324
Name[it]=Finestra sul desktop attivo richiede l'attenzione
325
@@ -4823,6 +4848,7 @@
326
Comment[fi]=Ikkuna nykyisellä virtuaalityöpöydällä kaipaa huomiota
327
Comment[fr]=Une fenêtre du bureau virtuel actuel demande votre attention
328
Comment[fy]=In finster op it hjoeddeiske firtuele buroblêd freget om oandacht
329
+Comment[he]=חלון בשולחן עבודה נוכחי דורש תשומת לב
330
Comment[hu]=Egy ablak az aktuális asztalon beavatkozást igényel
331
Comment[is]=Gluggi á núverandi sýndarskjáborði krefst athygli
332
Comment[it]=Una finestra sul desktop virtuale corrente sta richiedendo l'attenzione
333
@@ -4868,6 +4894,7 @@
334
Name[fr]=Une fenêtre sur un autre bureau demande votre attention
335
Name[fy]=Finster op oar buroblêd freget om oandacht
336
Name[gl]=Unha Fiestra en Outro Escritório Requere Atenzón
337
+Name[he]=חלון בשולחן עבודה אחר דורש תשומת לב
338
Name[hu]=Egy ablak beavatkozást igényel (másik asztalon)
339
Name[is]=Gluggi á öðru skjáborði krefst athygli
340
Name[it]=Finestra su altro desktop richiede l'attenzione
341
@@ -4910,6 +4937,7 @@
342
Comment[fr]=Une fenêtre sur un bureau virtuel inactif demande l'attention
343
Comment[fy]=In finster op in ynaktyf firtueel buroblêd freget om oandacht
344
Comment[gl]=Unha fiestra nun escritório virtual inactivo requere atenzón
345
+Comment[he]=חלון בשולחן עבודה אחר דורש תשומת לב
346
Comment[hu]=Egy ablak beavatkozást igényel egy másik asztalon
347
Comment[is]=Gluggi á óvirku sýndarskjáborði krefst athygli
348
Comment[it]=Una finestra un desktop virtuale diverso da quello corrente sta richiedendo l'attenzione
349
diff -urN tag/kwin/geometry.cpp kwin/geometry.cpp
350
--- kdebase/kwin/geometry.cpp 2006-04-14 15:33:17.000000000 +0000
351
+++ kdebase/kwin/geometry.cpp 2006-04-14 15:29:53.000000000 +0000
352
@@ -1281,7 +1281,21 @@
353
{ // update to match restrictions
354
QSize new_size = adjustedSize();
355
if( new_size != size() && !isFullScreen())
357
+ QRect orig_geometry = geometry();
358
resizeWithChecks( new_size );
359
+ if( ( !isSpecialWindow() || isToolbar()) && !isFullScreen())
361
+ // try to keep the window in its xinerama screen if possible,
362
+ // if that fails at least keep it visible somewhere
363
+ QRect area = workspace()->clientArea( MovementArea, this );
364
+ if( area.contains( orig_geometry ))
365
+ keepInArea( area );
366
+ area = workspace()->clientArea( WorkArea, this );
367
+ if( area.contains( orig_geometry ))
368
+ keepInArea( area );
372
updateAllowedActions(); // affects isResizeable()
374
@@ -1840,7 +1854,7 @@
376
// maximing one way and unmaximizing the other way shouldn't happen
377
Q_ASSERT( !( vertical && horizontal )
378
- || (( max_mode & MaximizeVertical != 0 ) == ( max_mode & MaximizeHorizontal != 0 )));
379
+ || ((( max_mode & MaximizeVertical ) != 0 ) == (( max_mode & MaximizeHorizontal ) != 0 )));
381
QRect clientArea = workspace()->clientArea( MaximizeArea, this );
383
diff -urN tag/kwin/kcmkwin/kwindecoration/kwindecoration.desktop kwin/kcmkwin/kwindecoration/kwindecoration.desktop
384
--- kdebase/kwin/kcmkwin/kwindecoration/kwindecoration.desktop 2006-04-14 15:33:14.000000000 +0000
385
+++ kdebase/kwin/kcmkwin/kwindecoration/kwindecoration.desktop 2006-04-14 15:29:44.000000000 +0000
387
Keywords[fa]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration،طرحبندی
388
Keywords[fi]=kwin,ikkuna,ikkunaohjelma,ikkunoinnin hallintaohjelma,tausta,tyyli,teema,ulkonäkö,tuntuma,ulkoasu,painike,kahva,kulma,kwm,kehys
389
Keywords[fr]=kwin,fenêtre,gestionnaire,bordure,style,thème,apparence,ergonomie,disposition,bouton,poignée,bord,kwm,décoration
390
-Keywords[fy]=kwin,window,manager,rand,stijl,theme,tema,look,uiterlijk,gedrag,feel, layout,opmaak,button,knoppen,handle,rand,kwm,decoratie,windowmanager,venster,vensterbeheerFinster,râne, kader, styl tema,uterlik,gedrach,
391
+Keywords[fy]=kwin,window,manager,rand,stijl,theme,tema,look,uiterlijk,gedrag,feel,layout,opmaak,button,knoppen,handle,rand,kwm,decoratie,windowmanager,venster,vensterbeheer,finster,râne,kader,styltema,uterlik,gedrach,finsterbehear
392
Keywords[ga]=kwin,fuinneog,bainisteoir,imlíne,stíl,téama,leagan amach,cnaipe,hanla,ciumhais,kwm,maisiúchán
393
Keywords[gl]=kwin,fiestra,xestor,beira,estilo,tema,aparéncia,formato,botón,xestión,esquina,kwm,decorazón
394
Keywords[he]=מנהל חלונות,חלונות,מנהל,גבול,מסגרת,סגנון,ערכה,ערכת נושא,מראה,תחושה,פריסה,תצוגה,כפתור,ידית,קצה,קישוט, kwin,window,manager,border,style,theme,look,feel,layout,button,handle, edge,kwm,decoration
395
diff -urN tag/kwin/kcmkwin/kwinoptions/windows.cpp kwin/kcmkwin/kwinoptions/windows.cpp
396
--- kdebase/kwin/kcmkwin/kwinoptions/windows.cpp 2006-04-14 15:33:15.000000000 +0000
397
+++ kdebase/kwin/kcmkwin/kwinoptions/windows.cpp 2006-04-14 15:29:47.000000000 +0000
399
" is pressed, with no popup widget. In addition, the previously"
400
" activated window will be sent to the back in this mode.");
401
QWhatsThis::add( altTabPopup, wtstr );
402
+ connect(focusCombo, SIGNAL(activated(int)), this, SLOT(updateAltTabMode()));
404
traverseAll = new QCheckBox( i18n( "&Traverse windows on all desktops" ), kbdBox );
405
kLay->addWidget( traverseAll );
408
// this will disable/hide the auto raise delay widget if focus==click
409
setAutoRaiseEnabled();
410
+ updateAltTabMode();
413
+void KFocusConfig::updateAltTabMode()
415
+ // not KDE-style Alt+Tab with unreasonable focus policies
416
+ altTabPopup->setEnabled( focusCombo->currentItem() == 0 || focusCombo->currentItem() == 1 );
419
void KFocusConfig::setAutoRaiseInterval(int tb)
421
BrdrSnap->setSpecialValueText( i18n("none") );
422
BrdrSnap->setRange( 0, MAX_BRDR_SNAP);
423
BrdrSnap->setLabel(i18n("&Border snap zone:"));
424
- BrdrSnap->setSuffix(i18n(" pixels"));
425
BrdrSnap->setSteps(1,10);
426
QWhatsThis::add( BrdrSnap, i18n("Here you can set the snap zone for screen borders, i.e."
427
" the 'strength' of the magnetic field which will make windows snap to the border when"
429
WndwSnap->setSpecialValueText( i18n("none") );
430
WndwSnap->setRange( 0, MAX_WNDW_SNAP);
431
WndwSnap->setLabel(i18n("&Window snap zone:"));
432
- WndwSnap->setSuffix( i18n(" pixels"));
433
BrdrSnap->setSteps(1,10);
434
QWhatsThis::add( WndwSnap, i18n("Here you can set the snap zone for windows, i.e."
435
" the 'strength' of the magnetic field which will make windows snap to each other when"
437
connect( moveResizeMaximized, SIGNAL(toggled(bool)), SLOT(changed()));
438
connect( placementCombo, SIGNAL(activated(int)), SLOT(changed()));
439
connect( BrdrSnap, SIGNAL(valueChanged(int)), SLOT(changed()));
440
+ connect( BrdrSnap, SIGNAL(valueChanged(int)), SLOT(slotBrdrSnapChanged(int)));
441
connect( WndwSnap, SIGNAL(valueChanged(int)), SLOT(changed()));
442
+ connect( WndwSnap, SIGNAL(valueChanged(int)), SLOT(slotWndwSnapChanged(int)));
443
connect( OverlapSnap, SIGNAL(clicked()), SLOT(changed()));
445
+ // To get suffix to BrdrSnap and WndwSnap inputs with default values.
446
+ slotBrdrSnapChanged(BrdrSnap->value());
447
+ slotWndwSnapChanged(WndwSnap->value());
450
int KMovingConfig::getMove()
451
@@ -1007,6 +1019,14 @@
452
moveResizeMaximized->setChecked(a);
455
+void KMovingConfig::slotBrdrSnapChanged(int value) {
456
+ BrdrSnap->setSuffix(i18n(" pixel", " pixels", value));
459
+void KMovingConfig::slotWndwSnapChanged(int value) {
460
+ WndwSnap->setSuffix(i18n(" pixel", " pixels", value));
463
void KMovingConfig::load( void )
466
diff -urN tag/kwin/kcmkwin/kwinoptions/windows.h kwin/kcmkwin/kwinoptions/windows.h
467
--- kdebase/kwin/kcmkwin/kwinoptions/windows.h 2006-04-14 15:33:15.000000000 +0000
468
+++ kdebase/kwin/kcmkwin/kwinoptions/windows.h 2006-04-14 15:29:47.000000000 +0000
470
void autoRaiseOnTog(bool);//CT 23Oct1998
471
void delayFocusOnTog(bool);
472
void clickRaiseOnTog(bool);
473
+ void updateAltTabMode();
474
void changed() { emit KCModule::changed(true); }
478
void setMinimizeAnim( bool );
479
void setMinimizeAnimSpeed( int );
480
void changed() { emit KCModule::changed(true); }
481
+ void slotBrdrSnapChanged( int );
482
+ void slotWndwSnapChanged( int );
486
diff -urN tag/kwin/kcmkwin/kwinrules/main.cpp kwin/kcmkwin/kwinrules/main.cpp
487
--- kdebase/kwin/kcmkwin/kwinrules/main.cpp 2006-04-14 15:33:15.000000000 +0000
488
+++ kdebase/kwin/kcmkwin/kwinrules/main.cpp 2006-04-14 15:29:45.000000000 +0000
490
if( rule->types != NET::AllTypesMask )
495
+ for( unsigned int bit = 1;
498
if( rule->types & bit )
500
diff -urN tag/kwin/kompmgr/kompmgr.c kwin/kompmgr/kompmgr.c
501
--- kdebase/kwin/kompmgr/kompmgr.c 2006-04-14 15:33:17.000000000 +0000
502
+++ kdebase/kwin/kompmgr/kompmgr.c 2006-04-14 15:29:52.000000000 +0000
505
- * $Id: kompmgr.c 511474 2006-02-20 01:12:52Z danimo $
506
+ * $Id: kompmgr.c 528927 2006-04-12 05:27:31Z rohanpm $
508
* Copyright © 2003 Keith Packard
511
typedef enum _compMode {
512
CompSimple, /* looks like a regular X server */
513
CompServerShadows, /* use window alpha for shadow; sharp, but precise */
514
- CompClientShadows, /* use window extents for shadow, blurred */
515
+ CompClientShadows /* use window extents for shadow, blurred */
519
@@ -2878,7 +2878,16 @@
520
break;*/ /*skip if opacity does not change*/
523
- set_fade (dpy, w, w->opacity*1.0/OPAQUE, (tmp*1.0)/OPAQUE, fade_out_step, 0, False, True, True, False);
524
+ static double start, finish, step;
525
+ start = w->opacity*1.0/OPAQUE;
526
+ finish = (tmp*1.0)/OPAQUE;
528
+ if ( start > finish )
529
+ step = fade_out_step;
531
+ step = fade_in_step;
533
+ set_fade (dpy, w, start, finish, step, 0, False, True, True, False);
537
diff -urN tag/kwin/layers.cpp kwin/layers.cpp
538
--- kdebase/kwin/layers.cpp 2006-04-14 15:33:17.000000000 +0000
539
+++ kdebase/kwin/layers.cpp 2006-04-14 15:29:53.000000000 +0000
542
if( block_stacking_updates > 0 )
544
- blocked_propagating_new_clients |= propagate_new_clients;
545
+ blocked_propagating_new_clients = blocked_propagating_new_clients || propagate_new_clients;
548
ClientList new_stacking_order = constrainedStackingOrder();
553
+ // the same for global_focus_chain
554
+ if( c->wantsTabFocus() && global_focus_chain.contains( active_client ))
556
+ global_focus_chain.remove( c );
557
+ for( ClientList::Iterator it = global_focus_chain.fromLast();
558
+ it != global_focus_chain.end();
561
+ if( Client::belongToSameApplication( active_client, *it ))
563
+ global_focus_chain.insert( it, c );
568
updateStackingOrder();
571
diff -urN tag/kwin/manage.cpp kwin/manage.cpp
572
--- kdebase/kwin/manage.cpp 2006-04-14 15:33:17.000000000 +0000
573
+++ kdebase/kwin/manage.cpp 2006-04-14 15:29:53.000000000 +0000
575
if( !isOnCurrentDesktop() && !isMapped && !session && ( allow || workspace()->sessionSaving()))
576
workspace()->setCurrentDesktop( desktop());
578
- if( workspace()->showingDesktop())
579
+ bool belongs_to_desktop = false;
580
+ for( ClientList::ConstIterator it = group()->members().begin();
581
+ it != group()->members().end();
583
+ if( (*it)->isDesktop())
585
+ belongs_to_desktop = true;
588
+ if( !belongs_to_desktop && workspace()->showingDesktop())
589
workspace()->resetShowingDesktop( false );
591
if( isOnCurrentDesktop() && !isMapped && !allow )
592
diff -urN tag/kwin/popupinfo.cpp kwin/popupinfo.cpp
593
--- kdebase/kwin/popupinfo.cpp 2006-04-14 15:33:17.000000000 +0000
594
+++ kdebase/kwin/popupinfo.cpp 2006-04-14 15:29:53.000000000 +0000
602
connect(&m_delayedHideTimer, SIGNAL(timeout()), this, SLOT(hide()));
603
diff -urN tag/kwin/tabbox.cpp kwin/tabbox.cpp
604
--- kdebase/kwin/tabbox.cpp 2006-04-14 15:33:17.000000000 +0000
605
+++ kdebase/kwin/tabbox.cpp 2006-04-14 15:29:53.000000000 +0000
608
if ( tab_grab || control_grab )
610
- if ( options->altTabStyle == Options::CDE )
611
+ if ( options->altTabStyle == Options::CDE || !options->focusPolicyIsReasonable())
613
//XUngrabKeyboard(qt_xdisplay(), qt_x_time); // need that because of accelerator raw mode
614
// CDE style raise / lower
617
if( tab_grab || control_grab )
619
- if ( options->altTabStyle == Options::CDE )
620
+ if ( options->altTabStyle == Options::CDE || !options->focusPolicyIsReasonable())
622
// CDE style raise / lower
623
CDEWalkThroughWindows( false );
626
void Workspace::CDEWalkThroughWindows( bool forward )
628
- Client* c = activeClient();
630
+// this function find the first suitable client for unreasonable focus
631
+// policies - the topmost one, with some exceptions (can't be keepabove/below,
632
+// otherwise it gets stuck on them)
633
+ Q_ASSERT( block_stacking_updates == 0 );
634
+ for( ClientList::ConstIterator it = stacking_order.fromLast();
635
+ it != stacking_order.end();
638
+ if ( (*it)->isOnCurrentDesktop() && !(*it)->isSpecialWindow()
639
+ && (*it)->isShown( false ) && (*it)->wantsTabFocus()
640
+ && !(*it)->keepAbove() && !(*it)->keepBelow())
647
bool options_traverse_all;
651
} while (nc && nc != c &&
652
(( !options_traverse_all && !nc->isOnDesktop(currentDesktop())) ||
653
- nc->isMinimized() || !nc->wantsTabFocus() ) );
654
+ nc->isMinimized() || !nc->wantsTabFocus() || nc->keepAbove() || nc->keepBelow() ) );
658
@@ -1152,14 +1168,13 @@
660
Client* Workspace::nextFocusChainClient( Client* c ) const
662
- int desktop = c->isOnAllDesktops() ? currentDesktop() : c->desktop();
663
- if ( focus_chain[desktop].isEmpty() )
664
+ if ( global_focus_chain.isEmpty() )
666
- ClientList::ConstIterator it = focus_chain[desktop].find( c );
667
- if ( it == focus_chain[desktop].end() )
668
- return focus_chain[desktop].last();
669
- if ( it == focus_chain[desktop].begin() )
670
- return focus_chain[desktop].last();
671
+ ClientList::ConstIterator it = global_focus_chain.find( c );
672
+ if ( it == global_focus_chain.end() )
673
+ return global_focus_chain.last();
674
+ if ( it == global_focus_chain.begin() )
675
+ return global_focus_chain.last();
679
@@ -1170,15 +1185,14 @@
681
Client* Workspace::previousFocusChainClient( Client* c ) const
683
- int desktop = c->isOnAllDesktops() ? currentDesktop() : c->desktop();
684
- if ( focus_chain[desktop].isEmpty() )
685
+ if ( global_focus_chain.isEmpty() )
687
- ClientList::ConstIterator it = focus_chain[desktop].find( c );
688
- if ( it == focus_chain[desktop].end() )
689
- return focus_chain[desktop].first();
690
+ ClientList::ConstIterator it = global_focus_chain.find( c );
691
+ if ( it == global_focus_chain.end() )
692
+ return global_focus_chain.first();
694
- if ( it == focus_chain[desktop].end() )
695
- return focus_chain[desktop].first();
696
+ if ( it == global_focus_chain.end() )
697
+ return global_focus_chain.first();
701
diff -urN tag/kwin/useractions.cpp kwin/useractions.cpp
702
--- kdebase/kwin/useractions.cpp 2006-04-14 15:33:17.000000000 +0000
703
+++ kdebase/kwin/useractions.cpp 2006-04-14 15:29:53.000000000 +0000
706
case Options::RestoreOp:
707
c->maximize( Client::MaximizeRestore );
709
case Options::MinimizeOp:
715
case Options::MouseOperationsMenu:
716
- if ( isActive() & options->clickRaise )
717
+ if ( isActive() && options->clickRaise )
719
workspace()->showWindowMenu( globalPos, this );
721
diff -urN tag/kwin/utils.cpp kwin/utils.cpp
722
--- kdebase/kwin/utils.cpp 2006-04-14 15:33:17.000000000 +0000
723
+++ kdebase/kwin/utils.cpp 2006-04-14 15:29:53.000000000 +0000
725
hostnamebuf[sizeof(hostnamebuf)-1] = 0;
726
if (host == hostnamebuf)
728
- char *dot = strchr(hostnamebuf, '.');
729
- if (dot && !(*dot = 0) && host == hostnamebuf)
731
+ if( char *dot = strchr(hostnamebuf, '.'))
734
+ if( host == hostnamebuf )
740
diff -urN tag/kwin/utils.h kwin/utils.h
741
--- kdebase/kwin/utils.h 2006-04-14 15:33:17.000000000 +0000
742
+++ kdebase/kwin/utils.h 2006-04-14 15:29:53.000000000 +0000
743
@@ -232,15 +232,13 @@
745
int timestampCompare( Time time1, Time time2 ) // like strcmp()
747
- if( time1 == time2 )
749
- return ( time1 - time2 ) < 1000000000 ? 1 : -1; // time1 > time2 -> 1, handle wrapping
750
+ return NET::timestampCompare( time1, time2 );
754
Time timestampDiff( Time time1, Time time2 ) // returns time2 - time1
755
- { // no need to handle wrapping?
756
- return time2 - time1;
758
+ return NET::timestampDiff( time1, time2 );
761
bool isLocalMachine( const QCString& host );
762
diff -urN tag/kwin/workspace.cpp kwin/workspace.cpp
763
--- kdebase/kwin/workspace.cpp 2006-04-14 15:33:17.000000000 +0000
764
+++ kdebase/kwin/workspace.cpp 2006-04-14 15:29:53.000000000 +0000
769
- updateFocusChains( c, true );
770
+ updateFocusChains( c, FocusChainUpdate ); // add to focus chain if not already there
773
if( !unconstrained_stacking_order.contains( c ))
775
i <= numberOfDesktops();
777
focus_chain[ i ].remove( c );
778
+ global_focus_chain.remove( c );
779
attention_chain.remove( c );
786
-void Workspace::updateFocusChains( Client* c, bool make_first )
787
+void Workspace::updateFocusChains( Client* c, FocusChainChange change )
789
if( !c->wantsTabFocus()) // doesn't want tab focus, remove
791
@@ -598,16 +599,21 @@
792
i<= numberOfDesktops();
794
focus_chain[i].remove(c);
795
+ global_focus_chain.remove( c );
798
if(c->desktop() == NET::OnAllDesktops)
799
{ //now on all desktops, add it to focus_chains it is not already in
800
for( int i=1; i<= numberOfDesktops(); i++)
801
- { // make_first works only on current desktop, don't affect all desktops
802
- if( make_first && i == currentDesktop())
803
+ { // making first/last works only on current desktop, don't affect all desktops
804
+ if( i == currentDesktop()
805
+ && ( change == FocusChainMakeFirst || change == FocusChainMakeLast ))
807
focus_chain[ i ].remove( c );
808
- focus_chain[ i ].append( c );
809
+ if( change == FocusChainMakeFirst )
810
+ focus_chain[ i ].append( c );
812
+ focus_chain[ i ].prepend( c );
814
else if( !focus_chain[ i ].contains( c ))
815
focus_chain[ i ].prepend( c ); // otherwise add as the last one
816
@@ -619,11 +625,16 @@
818
if( i == c->desktop())
821
+ if( change == FocusChainMakeFirst )
823
focus_chain[ i ].remove( c );
824
focus_chain[ i ].append( c );
826
+ else if( change == FocusChainMakeLast )
828
+ focus_chain[ i ].remove( c );
829
+ focus_chain[ i ].prepend( c );
831
else if( !focus_chain[ i ].contains( c ))
832
focus_chain[ i ].prepend( c );
835
focus_chain[ i ].remove( c );
838
+ if( change == FocusChainMakeFirst )
840
+ global_focus_chain.remove( c );
841
+ global_focus_chain.append( c );
843
+ else if( change == FocusChainMakeLast )
845
+ global_focus_chain.remove( c );
846
+ global_focus_chain.prepend( c );
848
+ else if( !global_focus_chain.contains( c ))
849
+ global_focus_chain.prepend( c );
852
void Workspace::updateCurrentTopMenu()
853
diff -urN tag/kwin/workspace.h kwin/workspace.h
854
--- kdebase/kwin/workspace.h 2006-04-14 15:33:17.000000000 +0000
855
+++ kdebase/kwin/workspace.h 2006-04-14 15:29:53.000000000 +0000
857
bool checkStartupNotification( Window w, KStartupInfoId& id, KStartupInfoData& data );
859
void focusToNull(); // SELI public?
860
- void updateFocusChains( Client* c, bool make_first );
861
+ enum FocusChainChange { FocusChainMakeFirst, FocusChainMakeLast, FocusChainUpdate };
862
+ void updateFocusChains( Client* c, FocusChainChange change );
864
bool forcedGlobalMouseGrab() const;
865
void clientShortcutUpdated( Client* c );
867
ClientList unconstrained_stacking_order;
868
ClientList stacking_order;
869
QValueVector< ClientList > focus_chain;
870
+ ClientList global_focus_chain; // this one is only for things like tabbox's MRU
871
ClientList should_get_focus; // last is most recent
872
ClientList attention_chain;