Commit 5322af54 authored by Martin Flöser's avatar Martin Flöser

Removing screenshot to clipboard functionality.

We have ksnapshot for that which uses a KWin effect to get
screenshots including shadows, which was not possible with
KWin's own implementation.

This invalidates bugs about this functionality.
BUG: 263409
FIXED-IN: 4.7.0
parent 3e8c9a65
......@@ -214,8 +214,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
a->setText( i18n("Miscellaneous") );
DEF( I18N_NOOP("Mouse Emulation"), Qt::ALT+Qt::Key_F12, slotMouseEmulation() );
DEF( I18N_NOOP("Kill Window"), Qt::CTRL+Qt::ALT+Qt::Key_Escape, slotKillWindow() );
DEF( I18N_NOOP("Window Screenshot to Clipboard"), Qt::ALT+Qt::Key_Print, slotGrabWindow() );
DEF( I18N_NOOP("Desktop Screenshot to Clipboard"), Qt::CTRL+Qt::Key_Print, slotGrabDesktop() );
DEF( I18N_NOOP("Block Global Shortcuts"), 0, slotDisableGlobalShortcuts());
DEF( I18N_NOOP("Suspend Compositing"), Qt::SHIFT+Qt::ALT+Qt::Key_F12, slotToggleCompositing());
......
......@@ -1990,70 +1990,6 @@ void Workspace::sendTakeActivity( Client* c, Time timestamp, long flags )
pending_take_activity = c;
}
/**
* Takes a screenshot of the current window and puts it in the clipboard.
*/
void Workspace::slotGrabWindow()
{
if ( active_client )
{
QPixmap snapshot = QPixmap::grabWindow( active_client->frameId() );
// No XShape - no work.
if( Extensions::shapeAvailable() )
{
// As the first step, get the mask from XShape.
int count, order;
XRectangle* rects = XShapeGetRectangles( display(), active_client->frameId(),
ShapeBounding, &count, &order);
// The ShapeBounding region is the outermost shape of the window;
// ShapeBounding - ShapeClipping is defined to be the border.
// Since the border area is part of the window, we use bounding
// to limit our work region
if( rects )
{
// Create a QRegion from the rectangles describing the bounding mask.
QRegion contents;
for( int pos = 0; pos < count; pos++ )
contents += QRegion( rects[pos].x, rects[pos].y,
rects[pos].width, rects[pos].height);
XFree( rects );
// Create the bounding box.
QRegion bbox( 0, 0, snapshot.width(), snapshot.height() );
// Get the masked away area.
QRegion maskedAway = bbox - contents;
QVector<QRect> maskedAwayRects = maskedAway.rects();
// Construct a bitmap mask from the rectangles
QBitmap mask( snapshot.width(), snapshot.height() );
QPainter p( &mask );
p.fillRect( 0, 0, mask.width(), mask.height(), Qt::color1 );
for( int pos = 0; pos < maskedAwayRects.count(); pos++ )
p.fillRect( maskedAwayRects[pos], Qt::color0 );
p.end();
snapshot.setMask( mask );
}
}
QClipboard* cb = QApplication::clipboard();
cb->setPixmap( snapshot );
}
else
slotGrabDesktop();
}
/**
* Takes a screenshot of the whole desktop and puts it in the clipboard.
*/
void Workspace::slotGrabDesktop()
{
QPixmap p = QPixmap::grabWindow( rootWindow() );
QClipboard* cb = QApplication::clipboard();
cb->setPixmap( p );
}
/**
* Invokes keyboard mouse emulation
*/
......
......@@ -698,9 +698,6 @@ class Workspace : public QObject, public KDecorationDefines
void slotKillWindow();
void slotGrabWindow();
void slotGrabDesktop();
void slotSetupWindowShortcut();
void setupWindowShortcutDone( bool );
void slotToggleCompositing();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment