-rw-r--r-- | core/applets/screenshotapplet/screenshot.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/core/applets/screenshotapplet/screenshot.cpp b/core/applets/screenshotapplet/screenshot.cpp index 2af860a..f2cc2c5 100644 --- a/core/applets/screenshotapplet/screenshot.cpp +++ b/core/applets/screenshotapplet/screenshot.cpp | |||
@@ -464,43 +464,59 @@ void ScreenshotControl::performGrab() | |||
464 | } | 464 | } |
465 | } | 465 | } |
466 | if ( ok ) | 466 | if ( ok ) |
467 | QMessageBox::information ( 0, tr( "Success" ), QString ( "<p>%1</p>" ). arg ( tr( "Screenshot was uploaded to %1" )). arg ( SCAP_hostname )); | 467 | QMessageBox::information ( 0, tr( "Success" ), QString ( "<p>%1</p>" ). arg ( tr( "Screenshot was uploaded to %1" )). arg ( SCAP_hostname )); |
468 | else | 468 | else |
469 | QMessageBox::warning ( 0, tr( "Error" ), QString ( "<p>%1</p>" ). arg ( tr( "Connection to %1 failed." )). arg ( SCAP_hostname )); | 469 | QMessageBox::warning ( 0, tr( "Error" ), QString ( "<p>%1</p>" ). arg ( tr( "Connection to %1 failed." )). arg ( SCAP_hostname )); |
470 | } | 470 | } |
471 | 471 | ||
472 | } | 472 | } |
473 | 473 | ||
474 | 474 | ||
475 | 475 | ||
476 | //=========================================================================== | 476 | //=========================================================================== |
477 | 477 | ||
478 | ScreenshotApplet::ScreenshotApplet( QWidget *parent, const char *name ) | 478 | ScreenshotApplet::ScreenshotApplet( QWidget *parent, const char *name ) |
479 | : QWidget( parent, name ) | 479 | : QWidget( parent, name ) |
480 | { | 480 | { |
481 | setFixedWidth( AppLnk::smallIconSize()); | 481 | setFixedWidth( AppLnk::smallIconSize()); |
482 | 482 | ||
483 | QImage img = (const char **)snapshot_xpm; | 483 | QImage img = (const char **)snapshot_xpm; |
484 | img = img.smoothScale(AppLnk::smallIconSize(), AppLnk::smallIconSize()); | 484 | img = img.smoothScale(AppLnk::smallIconSize(), AppLnk::smallIconSize()); |
485 | m_icon.convertFromImage(img); | 485 | m_icon.convertFromImage(img); |
486 | } | 486 | } |
487 | 487 | ||
488 | ScreenshotApplet::~ScreenshotApplet() | 488 | ScreenshotApplet::~ScreenshotApplet() |
489 | { | 489 | { |
490 | } | 490 | } |
491 | 491 | ||
492 | void ScreenshotApplet::mousePressEvent( QMouseEvent *) | 492 | void ScreenshotApplet::mousePressEvent( QMouseEvent *) |
493 | { | 493 | { |
494 | ScreenshotControl *sc = new ScreenshotControl ( ); | 494 | ScreenshotControl *sc = new ScreenshotControl ( ); |
495 | QPoint curPos = mapToGlobal ( QPoint ( 0, 0 )); | 495 | QPoint curPos = mapToGlobal ( QPoint ( 0, 0 )); |
496 | sc-> move ( curPos. x ( ) - ( sc-> sizeHint ( ). width ( ) - width ( )) / 2, | 496 | |
497 | curPos. y ( ) - sc-> sizeHint ( ). height ( )); | 497 | // windowPosX is the windows position centered above the applets icon. |
498 | sc-> show ( ); | 498 | // If the icon is near the edge of the screen, the window would leave the visible area |
499 | // so we check the position against the screen width and correct the difference if needed | ||
500 | |||
501 | int screenWidth = qApp->desktop()->width(); | ||
502 | int windowPosX = curPos. x ( ) - ( sc-> sizeHint ( ). width ( ) - width ( )) / 2 ; | ||
503 | int ZwindowPosX, XwindowPosX; | ||
504 | |||
505 | // the window would be placed beyond the screen wich doesn't look tooo good | ||
506 | if ( (windowPosX + sc-> sizeHint ( ). width ( )) > screenWidth ) { | ||
507 | XwindowPosX = windowPosX + sc-> sizeHint ( ). width ( ) - screenWidth; | ||
508 | ZwindowPosX = windowPosX - XwindowPosX - 1; | ||
509 | } else { | ||
510 | ZwindowPosX = windowPosX; | ||
511 | } | ||
512 | |||
513 | sc-> move ( ZwindowPosX, curPos. y ( ) - sc-> sizeHint ( ). height ( ) ); | ||
514 | sc-> show ( ); | ||
499 | } | 515 | } |
500 | 516 | ||
501 | void ScreenshotApplet::paintEvent( QPaintEvent* ) | 517 | void ScreenshotApplet::paintEvent( QPaintEvent* ) |
502 | { | 518 | { |
503 | QPainter p ( this ); | 519 | QPainter p ( this ); |
504 | p.drawPixmap( 0,0, m_icon ); | 520 | p.drawPixmap( 0,0, m_icon ); |
505 | } | 521 | } |
506 | 522 | ||