Diffstat (limited to 'core/applets/screenshotapplet/screenshot.cpp') (more/less context) (ignore whitespace changes)
-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 | |||
@@ -484,23 +484,39 @@ ScreenshotApplet::ScreenshotApplet( QWidget *parent, const char *name ) | |||
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 | ||