By default, Bugzilla does not search the list of RESOLVED bugs.
You can force it to do so by putting the upper-case word ALL in front of your search query, e.g.: ALL tdelibs
We recommend searching for bugs this way, as you may discover that your bug has already been resolved and fixed in a later release. View | Details | Raw Unified | Return to bug 1999
Collapse All | Expand All

(-)tdebase/kcontrol/smserver/kcmsmserver.cpp (+2 lines)
Lines 94-99 Link Here
94
94
95
  c->setGroup("Logout");
95
  c->setGroup("Logout");
96
  dialog->showLogoutStatusDialog->setChecked(c->readBoolEntry("showLogoutStatusDlg", true));
96
  dialog->showLogoutStatusDialog->setChecked(c->readBoolEntry("showLogoutStatusDlg", true));
97
  dialog->showFadeAway->setChecked(c->readBoolEntry("doFadeaway", true));
97
  dialog->showFancyFadeAway->setChecked(c->readBoolEntry("doFancyLogout", true));
98
  dialog->showFancyFadeAway->setChecked(c->readBoolEntry("doFancyLogout", true));
98
99
99
  delete c;
100
  delete c;
Lines 124-129 Link Here
124
  c->writeEntry("excludeApps", dialog->excludeLineedit->text());
125
  c->writeEntry("excludeApps", dialog->excludeLineedit->text());
125
  c->setGroup("Logout");
126
  c->setGroup("Logout");
126
  c->writeEntry( "showLogoutStatusDlg", dialog->showLogoutStatusDialog->isChecked());
127
  c->writeEntry( "showLogoutStatusDlg", dialog->showLogoutStatusDialog->isChecked());
128
  c->writeEntry( "doFadeaway", dialog->showFadeAway->isChecked());
127
  c->writeEntry( "doFancyLogout", dialog->showFancyFadeAway->isChecked());
129
  c->writeEntry( "doFancyLogout", dialog->showFancyFadeAway->isChecked());
128
  c->sync();
130
  c->sync();
129
  delete c;
131
  delete c;
(-)tdebase/kcontrol/smserver/smserverconfigdlg.ui (-20 / +52 lines)
Lines 55-72 Link Here
55
                    </property>
55
                    </property>
56
                </widget>
56
                </widget>
57
                <widget class="TQCheckBox">
57
                <widget class="TQCheckBox">
58
                    <property name="name">
58
                  <property name="name">
59
                        <cstring>showFancyFadeAway</cstring>
59
                    <cstring>showFadeAway</cstring>
60
                    </property>
60
                  </property>
61
                    <property name="enabled">
61
                  <property name="enabled">
62
                        <bool>false</bool>
62
                    <bool>false</bool>
63
                    </property>
63
                  </property>
64
                    <property name="text">
64
                  <property name="text">
65
                        <string>Show fancy &amp;logout fadeaway</string>
65
                    <string>Show &amp;logout fadeaway</string>
66
                    </property>
66
                  </property>
67
                    <property name="whatsThis" stdset="0">
67
                  <property name="whatsThis" stdset="0">
68
                        <string>Check this option if you want to see a fancy fadeaway when displaying a logout confirmation dialog box.</string>
68
                    <string>Check this option if you want to see a fadeaway when displaying a logout confirmation dialog box.</string>
69
                    </property>
69
                  </property>
70
                </widget>
71
                <widget class="TQCheckBox">
72
                  <property name="name">
73
                    <cstring>showFancyFadeAway</cstring>
74
                  </property>
75
                  <property name="enabled">
76
                    <bool>false</bool>
77
                  </property>
78
                  <property name="text">
79
                    <string>Sho&amp;w fancy logout fadeaway</string>
80
                  </property>
81
                  <property name="whatsThis" stdset="0">
82
                    <string>Check this option if you want to see a fancy fadeaway when displaying a logout confirmation dialog box.</string>
83
                  </property>
70
                </widget>
84
                </widget>
71
                <widget class="TQCheckBox">
85
                <widget class="TQCheckBox">
72
                    <property name="name">
86
                    <property name="name">
Lines 235-250 Link Here
235
        <slot>configChanged()</slot>
249
        <slot>configChanged()</slot>
236
    </connection>
250
    </connection>
237
    <connection>
251
    <connection>
238
        <sender>confirmLogoutCheck</sender>
252
      <sender>confirmLogoutCheck</sender>
239
        <signal>toggled(bool)</signal>
253
      <signal>toggled(bool)</signal>
240
        <receiver>showFancyFadeAway</receiver>
254
      <receiver>showFadeAway</receiver>
241
        <slot>setEnabled(bool)</slot>
255
      <slot>setEnabled(bool)</slot>
242
    </connection>
256
    </connection>
243
    <connection>
257
    <connection>
244
        <sender>showFancyFadeAway</sender>
258
      <sender>confirmLogoutCheck</sender>
245
        <signal>toggled(bool)</signal>
259
      <signal>toggled(bool)</signal>
246
        <receiver>SMServerConfigDlg</receiver>
260
      <receiver>showFancyFadeAway</receiver>
247
        <slot>configChanged()</slot>
261
      <slot>setEnabled(bool)</slot>
262
    </connection>
263
    <connection>
264
      <sender>showFadeAway</sender>
265
      <signal>toggled(bool)</signal>
266
      <receiver>showFancyFadeAway</receiver>
267
      <slot>setEnabled(bool)</slot>
268
    </connection>
269
    <connection>
270
      <sender>showFadeAway</sender>
271
      <signal>toggled(bool)</signal>
272
      <receiver>SMServerConfigDlg</receiver>
273
      <slot>configChanged()</slot>
274
    </connection>
275
    <connection>
276
      <sender>showFancyFadeAway</sender>
277
      <signal>toggled(bool)</signal>
278
      <receiver>SMServerConfigDlg</receiver>
279
      <slot>configChanged()</slot>
248
    </connection>
280
    </connection>
249
    <connection>
281
    <connection>
250
        <sender>showLogoutStatusDialog</sender>
282
        <sender>showLogoutStatusDialog</sender>
(-)tdebase/ksmserver/shutdowndlg.cpp (-133 / +136 lines)
Lines 113-119 Link Here
113
void KSMShutdownFeedback::slotPaintEffect()
113
void KSMShutdownFeedback::slotPaintEffect()
114
{
114
{
115
	// determine which fade to use
115
	// determine which fade to use
116
	if (TDEConfigGroup(TDEGlobal::config(), "Logout").readBoolEntry("doFancyLogout", true)) {
116
	if ( (TDEConfigGroup(TDEGlobal::config(), "Logout").readBoolEntry("doFadeaway", true)) &&
117
	     (TDEConfigGroup(TDEGlobal::config(), "Logout").readBoolEntry("doFancyLogout", true)) ) {
117
		// fancy logout fade
118
		// fancy logout fade
118
		float doFancyLogoutAdditionalDarkness  = (float)TDEConfigGroup(TDEGlobal::config(), "Logout").readDoubleNumEntry("doFancyLogoutAdditionalDarkness", 0.6);
119
		float doFancyLogoutAdditionalDarkness  = (float)TDEConfigGroup(TDEGlobal::config(), "Logout").readDoubleNumEntry("doFancyLogoutAdditionalDarkness", 0.6);
119
		float doFancyLogoutFadeTime = (float)TDEConfigGroup(TDEGlobal::config(), "Logout").readDoubleNumEntry("doFancyLogoutFadeTime", 4000);
120
		float doFancyLogoutFadeTime = (float)TDEConfigGroup(TDEGlobal::config(), "Logout").readDoubleNumEntry("doFancyLogoutFadeTime", 4000);
Lines 363-511 Link Here
363
		}
364
		}
364
	}
365
	}
365
	else {
366
	else {
366
		// standard logout fade
367
		if (TDEConfigGroup(TDEGlobal::config(), "Logout").readBoolEntry("doFadeaway", true)) {
367
		 if (kapp->isX11CompositionAvailable()) {
368
			// standard logout fade
368
			// We can do this in a different (simpler) manner because we have compositing support!
369
			 if (kapp->isX11CompositionAvailable()) {
369
			// The end effect will be very similar to the old style logout
370
				// We can do this in a different (simpler) manner because we have compositing support!
370
			float doFancyLogoutFadeTime = 1000;
371
				// The end effect will be very similar to the old style logout
371
			float doFancyLogoutFadeBackTime = 0;
372
				float doFancyLogoutFadeTime = 1000;
372
			if ( m_greyImageCreated == false ) {
373
				float doFancyLogoutFadeBackTime = 0;
373
				m_greyImageCreated = true;
374
				if ( m_greyImageCreated == false ) {
374
375
					m_greyImageCreated = true;
375
				// eliminate nasty flicker on first show
376
	
376
				m_root.resize( width(), height() );
377
					// eliminate nasty flicker on first show
377
				TQImage blendedImage = m_grayImage;
378
					m_root.resize( width(), height() );
378
				TQPainter p;
379
					TQImage blendedImage = m_grayImage;
379
				p.begin( &m_root );
380
					TQPainter p;
380
				blendedImage.setAlphaBuffer(false);
381
					p.begin( &m_root );
381
				p.drawImage( 0, 0, blendedImage );
382
					blendedImage.setAlphaBuffer(false);
382
				p.end();
383
					p.drawImage( 0, 0, blendedImage );
383
384
					p.end();
384
				setBackgroundPixmap( m_root );
385
	
385
				setGeometry( TQApplication::desktop()->geometry() );
386
					setBackgroundPixmap( m_root );
386
				setBackgroundMode( TQWidget::NoBackground );
387
					setGeometry( TQApplication::desktop()->geometry() );
387
388
					setBackgroundMode( TQWidget::NoBackground );
388
				m_unfadedImage = m_grayImage.copy();
389
	
389
390
					m_unfadedImage = m_grayImage.copy();
390
				register uchar * r = m_grayImage.bits();
391
	
391
				uchar * end = m_grayImage.bits() + m_grayImage.numBytes();
392
					register uchar * r = m_grayImage.bits();
392
393
					uchar * end = m_grayImage.bits() + m_grayImage.numBytes();
393
				while ( r != end ) {
394
	
394
					*reinterpret_cast<TQRgb*>(r) = tqRgba(0, 0, 0, 107);
395
					while ( r != end ) {
395
					r += 4;
396
						*reinterpret_cast<TQRgb*>(r) = tqRgba(0, 0, 0, 107);
397
						r += 4;
398
					}
399
	
400
					// start timer which is used for cpu-speed-independent fading
401
					m_fadeTime.start();
402
					m_rowsDone = 0;
403
				}
404
	
405
				// return if fading is completely done...
406
				if ( ( m_grayOpacity >= 1.0f && m_fadeBackwards == FALSE ) || ( m_grayOpacity <= 0.0f && m_fadeBackwards == TRUE ) ) {
407
					return;
408
				}
409
	
410
				if ( m_fadeBackwards == FALSE ) {
411
					m_grayOpacity = m_fadeTime.elapsed() / doFancyLogoutFadeTime;
412
					if ( m_grayOpacity > 1.0f )
413
					m_grayOpacity = 1.0f;
414
				}
415
				else {
416
					m_grayOpacity = 1.0f - m_fadeTime.elapsed() / doFancyLogoutFadeBackTime - m_compensation;
417
					if ( m_grayOpacity < 0.0f )
418
					m_grayOpacity = 0.0f;
419
				}
420
	
421
				const int imgWidth = m_unfadedImage.width();
422
				int imgHeight = m_unfadedImage.height();
423
				int heightUnit = imgHeight / 3;
424
				if( heightUnit < 1 )
425
					heightUnit = 1;
426
	
427
				int y1 = static_cast<int>( imgHeight*m_grayOpacity - heightUnit + m_grayOpacity*heightUnit*2.0f );
428
				if( y1 > imgHeight ) {
429
					y1 = imgHeight;
430
				}
431
	
432
				int y2 = y1+heightUnit;
433
				if( y2 > imgHeight ) {
434
					y2 = imgHeight;
396
				}
435
				}
397
436
	
398
				// start timer which is used for cpu-speed-independent fading
437
				if( m_fadeBackwards == FALSE )
399
				m_fadeTime.start();
400
				m_rowsDone = 0;
401
			}
402
403
			// return if fading is completely done...
404
			if ( ( m_grayOpacity >= 1.0f && m_fadeBackwards == FALSE ) || ( m_grayOpacity <= 0.0f && m_fadeBackwards == TRUE ) ) {
405
				return;
406
			}
407
408
			if ( m_fadeBackwards == FALSE ) {
409
				m_grayOpacity = m_fadeTime.elapsed() / doFancyLogoutFadeTime;
410
				if ( m_grayOpacity > 1.0f )
411
				m_grayOpacity = 1.0f;
412
			}
413
			else {
414
				m_grayOpacity = 1.0f - m_fadeTime.elapsed() / doFancyLogoutFadeBackTime - m_compensation;
415
				if ( m_grayOpacity < 0.0f )
416
				m_grayOpacity = 0.0f;
417
			}
418
419
			const int imgWidth = m_unfadedImage.width();
420
			int imgHeight = m_unfadedImage.height();
421
			int heightUnit = imgHeight / 3;
422
			if( heightUnit < 1 )
423
				heightUnit = 1;
424
425
			int y1 = static_cast<int>( imgHeight*m_grayOpacity - heightUnit + m_grayOpacity*heightUnit*2.0f );
426
			if( y1 > imgHeight ) {
427
				y1 = imgHeight;
428
			}
429
430
			int y2 = y1+heightUnit;
431
			if( y2 > imgHeight ) {
432
				y2 = imgHeight;
433
			}
434
435
			if( m_fadeBackwards == FALSE )
436
			{
437
				if( y1 > 0 && y1 < imgHeight && y1-m_rowsDone > 0 && m_rowsDone < imgHeight )
438
				{
438
				{
439
					TQImage img( imgWidth, y1-m_rowsDone, 32 );
439
					if( y1 > 0 && y1 < imgHeight && y1-m_rowsDone > 0 && m_rowsDone < imgHeight )
440
					memcpy( img.bits(), m_grayImage.scanLine( m_rowsDone ), imgWidth*(y1-m_rowsDone)*4 );
440
					{
441
					bitBlt( this, 0, m_rowsDone, &img );
441
						TQImage img( imgWidth, y1-m_rowsDone, 32 );
442
					m_rowsDone = y1;
442
						memcpy( img.bits(), m_grayImage.scanLine( m_rowsDone ), imgWidth*(y1-m_rowsDone)*4 );
443
						bitBlt( this, 0, m_rowsDone, &img );
444
						m_rowsDone = y1;
445
					}
443
				}
446
				}
444
			}
447
				else {
445
			else {
448
					// when fading back we have to blit area which isnt gray anymore to unfaded image
446
				// when fading back we have to blit area which isnt gray anymore to unfaded image
449
					if( y2 > 0 && y2 < imgHeight && m_rowsDone > y2 )
447
				if( y2 > 0 && y2 < imgHeight && m_rowsDone > y2 )
450
					{
448
				{
451
						TQImage img( imgWidth, m_rowsDone-y2, 32 );
449
					TQImage img( imgWidth, m_rowsDone-y2, 32 );
452
						memcpy( img.bits(), m_unfadedImage.scanLine( y2 ), imgWidth*(m_rowsDone-y2)*4 );
450
					memcpy( img.bits(), m_unfadedImage.scanLine( y2 ), imgWidth*(m_rowsDone-y2)*4 );
453
						bitBlt( this, 0, y2, &img );
451
					bitBlt( this, 0, y2, &img );
454
						m_rowsDone = y2;
452
					m_rowsDone = y2;
455
					}
453
				}
456
				}
454
			}
457
	
455
458
				int start_y1 = y1;
456
			int start_y1 = y1;
459
				if( start_y1 < 0 ) {
457
			if( start_y1 < 0 ) {
460
					start_y1 = 0;
458
				start_y1 = 0;
461
				}
459
			}
462
				if( y2 > start_y1 ) {
460
			if( y2 > start_y1 ) {
463
					TQImage img( imgWidth, y2-start_y1, 32 );
461
				TQImage img( imgWidth, y2-start_y1, 32 );
464
					memcpy( img.bits(), m_grayImage.scanLine( start_y1 ), ( y2-start_y1 ) * imgWidth * 4 );
462
				memcpy( img.bits(), m_grayImage.scanLine( start_y1 ), ( y2-start_y1 ) * imgWidth * 4 );
465
					register uchar * rs = m_unfadedImage.scanLine( start_y1 );
463
				register uchar * rs = m_unfadedImage.scanLine( start_y1 );
466
					register uchar * rd = img.bits();
464
				register uchar * rd = img.bits();
467
					for( int y = start_y1; y < y2; ++y )
465
				for( int y = start_y1; y < y2; ++y )
466
				{
467
				// linear gradients look bad, so use cos-function
468
					for( short int x = 0; x < imgWidth; ++x )
469
					{
468
					{
470
						*reinterpret_cast<TQRgb*>(rd) = tqRgba(0, 0, 0, 107);
469
					// linear gradients look bad, so use cos-function
471
						rs += 4; rd += 4;
470
						for( short int x = 0; x < imgWidth; ++x )
471
						{
472
							*reinterpret_cast<TQRgb*>(rd) = tqRgba(0, 0, 0, 107);
473
							rs += 4; rd += 4;
474
						}
472
					}
475
					}
476
					bitBlt( this, 0, start_y1, &img );
473
				}
477
				}
474
				bitBlt( this, 0, start_y1, &img );
478
	
475
			}
479
				TQTimer::singleShot( 1, this, TQT_SLOT( slotPaintEffect() ) );
476
480
			 }
477
			TQTimer::singleShot( 1, this, TQT_SLOT( slotPaintEffect() ) );
481
			 else {
478
		 }
482
				if ( m_currentY >= height() ) {
479
		 else {
483
					if ( backgroundMode() == TQWidget::NoBackground ) {
480
			if ( m_currentY >= height() ) {
484
						setBackgroundMode( TQWidget::NoBackground );
481
				if ( backgroundMode() == TQWidget::NoBackground ) {
485
						setBackgroundPixmap( m_root );
486
					}
487
					return;
488
				}
489
	
490
				if ( m_currentY == 0 ) {
482
					setBackgroundMode( TQWidget::NoBackground );
491
					setBackgroundMode( TQWidget::NoBackground );
483
					setBackgroundPixmap( m_root );
492
					setGeometry( TQApplication::desktop()->geometry() );
493
					m_root.resize( width(), height() ); // for the default logout
494
	
495
					KPixmap pixmap;
496
					pixmap = TQPixmap(TQPixmap::grabWindow( tqt_xrootwin(), 0, 0, width(), height() ));
497
					bitBlt( this, 0, 0, &pixmap );
498
					bitBlt( &m_root, 0, 0, &pixmap );
484
				}
499
				}
485
				return;
500
	
486
			}
487
488
			if ( m_currentY == 0 ) {
489
				setBackgroundMode( TQWidget::NoBackground );
490
				setGeometry( TQApplication::desktop()->geometry() );
491
				m_root.resize( width(), height() ); // for the default logout
492
493
				KPixmap pixmap;
501
				KPixmap pixmap;
494
				pixmap = TQPixmap(TQPixmap::grabWindow( tqt_xrootwin(), 0, 0, width(), height() ));
502
				pixmap = TQPixmap(TQPixmap::grabWindow( tqt_xrootwin(), 0, m_currentY, width(), 10 ));
495
				bitBlt( this, 0, 0, &pixmap );
503
				TQImage image = pixmap.convertToImage();
496
				bitBlt( &m_root, 0, 0, &pixmap );
504
				KImageEffect::blend( Qt::black, image, 0.4 );
505
				KImageEffect::toGray( image, true );
506
				pixmap.convertFromImage( image );
507
				bitBlt( this, 0, m_currentY, &pixmap );
508
				bitBlt( &m_root, 0, m_currentY, &pixmap );
509
				m_currentY += 10;
510
				TQTimer::singleShot( 1, this, TQT_SLOT( slotPaintEffect() ) );
497
			}
511
			}
498
499
			KPixmap pixmap;
500
			pixmap = TQPixmap(TQPixmap::grabWindow( tqt_xrootwin(), 0, m_currentY, width(), 10 ));
501
			TQImage image = pixmap.convertToImage();
502
			KImageEffect::blend( Qt::black, image, 0.4 );
503
			KImageEffect::toGray( image, true );
504
			pixmap.convertFromImage( image );
505
			bitBlt( this, 0, m_currentY, &pixmap );
506
			bitBlt( &m_root, 0, m_currentY, &pixmap );
507
			m_currentY += 10;
508
			TQTimer::singleShot( 1, this, TQT_SLOT( slotPaintEffect() ) );
509
		}
512
		}
510
	}
513
	}
511
514

Return to bug 1999