-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 | |||
@@ -493,9 +493,25 @@ 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* ) |