kpaint Patch (3) - was: [Patch:] KClipboard / klipper / kpaint bug fixes
Helge Deller
deller at gmx.de
Mon Oct 28 23:23:41 GMT 2002
last patch of the KClipboard / klipper / kpaint patches:
- fix a few kpaint pixmap copy & paste problems
- use the new KClipboard::provides() function to speed up
menu "Edit"/"Paste" enabling function
- check clipboards contents at startup to initialize the
status of the "Edit"/"Paste" menu entries.
- indenting fixes
Helge
-------------- next part --------------
Index: canvas.cpp
===================================================================
RCS file: /home/kde/kdegraphics/kpaint/canvas.cpp,v
retrieving revision 1.32
diff -u -p -r1.32 canvas.cpp
--- canvas.cpp 2002/09/25 23:45:28 1.32
+++ canvas.cpp 2002/10/28 23:17:23
@@ -129,6 +129,9 @@ void Canvas::cut()
int w = haveSelection_ ? selection_.right() - selection_.left() : pix->width();
int h = haveSelection_ ? selection_.bottom() - selection_.top() : pix->height();
+ if (w <= 0 || h <= 0)
+ return;
+
QPixmap p( w, h );
p.fill(QColor("white"));
@@ -141,16 +144,18 @@ void Canvas::cut()
}
void Canvas::copy()
-{
- int x = haveSelection_ ? selection_.left() : 0;
- int y = haveSelection_ ? selection_.top() : 0;
- int w = haveSelection_ ? selection_.right() - selection_.left() : pix->width();
- int h = haveSelection_ ? selection_.bottom() - selection_.top() : pix->height();
- kdDebug(4400) << "copying: (" << x << ", " << y << ") - (" << w << ", " << h << ")";
+{
+ int x = haveSelection_ ? selection_.left() : 0;
+ int y = haveSelection_ ? selection_.top() : 0;
+ int w = haveSelection_ ? selection_.right() - selection_.left() : pix->width();
+ int h = haveSelection_ ? selection_.bottom() - selection_.top() : pix->height();
+ kdDebug(4400) << "copying: (" << x << ", " << y << ") - (" << w << ", " << h << ")";
+ if (w <= 0 || h <= 0)
+ return;
- QPixmap clipboardPix( w, h );
- bitBlt( &clipboardPix, 0, 0, pix, x, y, w, h, CopyROP);
- kapp->clipboard()->setPixmap( clipboardPix );
+ QPixmap clipboardPix( w, h );
+ bitBlt( &clipboardPix, 0, 0, pix, x, y, w, h, CopyROP);
+ kapp->clipboard()->setPixmap( clipboardPix );
}
void Canvas::paste( int x, int y )
Index: kpaint.cpp
===================================================================
RCS file: /home/kde/kdegraphics/kpaint/kpaint.cpp,v
retrieving revision 1.105
diff -u -p -r1.105 kpaint.cpp
--- kpaint.cpp 2002/09/25 23:45:28 1.105
+++ kpaint.cpp 2002/10/28 23:17:23
@@ -11,6 +11,7 @@
#include <kaction.h>
#include <kapplication.h>
#include <kcolorbutton.h>
+#include <kclipboard.h>
#include <kcolorcombo.h>
#include <kcolordialog.h>
#include <kconfig.h>
@@ -60,6 +61,7 @@ KPaint::KPaint(const KURL & _url) : KMai
initStatus();
readOptions();
+ enableEditPaste();
connect( kapp->clipboard(), SIGNAL( dataChanged() ), SLOT( enableEditPaste() ) );
resize(640,480);
show();
@@ -150,14 +152,7 @@ void KPaint::readOptions()
void KPaint::enableEditPaste()
{
- QClipboard *cb = kapp->clipboard();
-
- bool e;
- if ( cb->pixmap().isNull() )
- e = false;
- else
- e = true;
-
+ bool e = KClipboard::provides("image/");
kdDebug() << "kpaint: clipboard has image: " << e << endl;
pasteAction->setEnabled( e );
pasteImageAction->setEnabled( e );
@@ -661,8 +656,8 @@ void KPaint::editPaste()
kdDebug(4400) << "editPaste()\n" << endl;
QClipboard *cb = kapp->clipboard();
- QPixmap clipPix = cb->pixmap();
- if ( !clipPix.isNull() )
+ QPixmap clipPix = cb->pixmap(QClipboard::Clipboard);
+ if ( !clipPix.isNull() && clipPix.width() && clipPix.height() )
man->setCurrentTool(9);
m_canvas->markModified();
More information about the kde-core-devel
mailing list