summaryrefslogtreecommitdiff
authorleseb <leseb>2002-04-23 21:24:05 (UTC)
committer leseb <leseb>2002-04-23 21:24:05 (UTC)
commit0b77115683f1b8d339cdf07755e22d443caf310a (patch) (unidiff)
treea37ef63fea1b3dbf9f396f7a79030e4d04629952
parent7200c56e4ccc6aa83d1a3ef86ddda9470492ab52 (diff)
downloadopie-0b77115683f1b8d339cdf07755e22d443caf310a.zip
opie-0b77115683f1b8d339cdf07755e22d443caf310a.tar.gz
opie-0b77115683f1b8d339cdf07755e22d443caf310a.tar.bz2
Fix bug when drawing page with size inferior to view size
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/drawpad/drawpadcanvas.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/noncore/graphics/drawpad/drawpadcanvas.cpp b/noncore/graphics/drawpad/drawpadcanvas.cpp
index b39a633..65b3dea 100644
--- a/noncore/graphics/drawpad/drawpadcanvas.cpp
+++ b/noncore/graphics/drawpad/drawpadcanvas.cpp
@@ -158,387 +158,397 @@ bool DrawPadCanvasXmlHandler::characters(const QString& ch)
158DrawPadCanvas::DrawPadCanvas(DrawPad* drawPad, QWidget* parent, const char* name) 158DrawPadCanvas::DrawPadCanvas(DrawPad* drawPad, QWidget* parent, const char* name)
159 : QScrollView(parent, name) 159 : QScrollView(parent, name)
160{ 160{
161 m_pDrawPad = drawPad; 161 m_pDrawPad = drawPad;
162 m_pages.setAutoDelete(true); 162 m_pages.setAutoDelete(true);
163 m_pageBackups.setAutoDelete(true); 163 m_pageBackups.setAutoDelete(true);
164 164
165 viewport()->setBackgroundMode(QWidget::NoBackground); 165 viewport()->setBackgroundMode(QWidget::NoBackground);
166} 166}
167 167
168DrawPadCanvas::~DrawPadCanvas() 168DrawPadCanvas::~DrawPadCanvas()
169{ 169{
170} 170}
171 171
172void DrawPadCanvas::load(QIODevice* ioDevice) 172void DrawPadCanvas::load(QIODevice* ioDevice)
173{ 173{
174 QTextStream textStream(ioDevice); 174 QTextStream textStream(ioDevice);
175 textStream.setCodec(QTextCodec::codecForName("UTF-8")); 175 textStream.setCodec(QTextCodec::codecForName("UTF-8"));
176 176
177 QXmlInputSource xmlInputSource(textStream); 177 QXmlInputSource xmlInputSource(textStream);
178 QXmlSimpleReader xmlSimpleReader; 178 QXmlSimpleReader xmlSimpleReader;
179 DrawPadCanvasXmlHandler drawPadCanvasXmlHandler; 179 DrawPadCanvasXmlHandler drawPadCanvasXmlHandler;
180 180
181 xmlSimpleReader.setContentHandler(&drawPadCanvasXmlHandler); 181 xmlSimpleReader.setContentHandler(&drawPadCanvasXmlHandler);
182 xmlSimpleReader.parse(xmlInputSource); 182 xmlSimpleReader.parse(xmlInputSource);
183 183
184 m_pages = drawPadCanvasXmlHandler.pixmaps(); 184 m_pages = drawPadCanvasXmlHandler.pixmaps();
185 185
186 if (m_pages.isEmpty()) { 186 if (m_pages.isEmpty()) {
187 m_pages.append(new QPixmap(contentsRect().size())); 187 m_pages.append(new QPixmap(contentsRect().size()));
188 m_pages.current()->fill(Qt::white); 188 m_pages.current()->fill(Qt::white);
189 } 189 }
190 190
191 m_pageBackups.clear(); 191 m_pageBackups.clear();
192 m_pageBackups.append(new QPixmap(*(m_pages.current()))); 192 m_pageBackups.append(new QPixmap(*(m_pages.current())));
193 193
194 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 194 resizeContents(m_pages.current()->width(), m_pages.current()->height());
195 viewport()->update(); 195 viewport()->update();
196 196
197 emit pagesChanged(); 197 emit pagesChanged();
198 emit pageBackupsChanged(); 198 emit pageBackupsChanged();
199} 199}
200 200
201void DrawPadCanvas::initialPage() 201void DrawPadCanvas::initialPage()
202{ 202{
203 m_pages.append(new QPixmap(236, 232)); 203 m_pages.append(new QPixmap(236, 232));
204 m_pages.current()->fill(Qt::white); 204 m_pages.current()->fill(Qt::white);
205 205
206 m_pageBackups.clear(); 206 m_pageBackups.clear();
207 m_pageBackups.append(new QPixmap(*(m_pages.current()))); 207 m_pageBackups.append(new QPixmap(*(m_pages.current())));
208 208
209 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 209 resizeContents(m_pages.current()->width(), m_pages.current()->height());
210 viewport()->update(); 210 viewport()->update();
211 211
212 emit pagesChanged(); 212 emit pagesChanged();
213 emit pageBackupsChanged(); 213 emit pageBackupsChanged();
214} 214}
215 215
216void DrawPadCanvas::save(QIODevice* ioDevice) 216void DrawPadCanvas::save(QIODevice* ioDevice)
217{ 217{
218 QTextStream textStream(ioDevice); 218 QTextStream textStream(ioDevice);
219 textStream.setCodec(QTextCodec::codecForName("UTF-8")); 219 textStream.setCodec(QTextCodec::codecForName("UTF-8"));
220 220
221 textStream << "<drawpad>" << endl; 221 textStream << "<drawpad>" << endl;
222 textStream << " <images>" << endl; 222 textStream << " <images>" << endl;
223 223
224 QListIterator<QPixmap> bufferIterator(m_pages); 224 QListIterator<QPixmap> bufferIterator(m_pages);
225 225
226 for (bufferIterator.toFirst(); bufferIterator.current() != 0; ++bufferIterator) { 226 for (bufferIterator.toFirst(); bufferIterator.current() != 0; ++bufferIterator) {
227 textStream << " <image>" << endl; 227 textStream << " <image>" << endl;
228 228
229 QImage image = bufferIterator.current()->convertToImage(); 229 QImage image = bufferIterator.current()->convertToImage();
230 QByteArray byteArray; 230 QByteArray byteArray;
231 QBuffer buffer(byteArray); 231 QBuffer buffer(byteArray);
232 QImageIO imageIO(&buffer, "PNG"); 232 QImageIO imageIO(&buffer, "PNG");
233 233
234 buffer.open(IO_WriteOnly); 234 buffer.open(IO_WriteOnly);
235 imageIO.setImage(image); 235 imageIO.setImage(image);
236 imageIO.write(); 236 imageIO.write();
237 buffer.close(); 237 buffer.close();
238 238
239 textStream << " <data length=\"" << byteArray.size() << "\" format=\"PNG\">"; 239 textStream << " <data length=\"" << byteArray.size() << "\" format=\"PNG\">";
240 240
241 static const char hexchars[] = "0123456789abcdef"; 241 static const char hexchars[] = "0123456789abcdef";
242 242
243 for (int i = 0; i < (int)byteArray.size(); i++ ) { 243 for (int i = 0; i < (int)byteArray.size(); i++ ) {
244 uchar s = (uchar)byteArray[i]; 244 uchar s = (uchar)byteArray[i];
245 textStream << hexchars[s >> 4]; 245 textStream << hexchars[s >> 4];
246 textStream << hexchars[s & 0x0f]; 246 textStream << hexchars[s & 0x0f];
247 } 247 }
248 248
249 textStream << "</data>" << endl; 249 textStream << "</data>" << endl;
250 textStream << " </image>" << endl; 250 textStream << " </image>" << endl;
251 } 251 }
252 252
253 textStream << " </images>" << endl; 253 textStream << " </images>" << endl;
254 textStream << "</drawpad>"; 254 textStream << "</drawpad>";
255} 255}
256 256
257void DrawPadCanvas::importPage(const QString& fileName) 257void DrawPadCanvas::importPage(const QString& fileName)
258{ 258{
259 QPixmap* importedPixmap = new QPixmap(); 259 QPixmap* importedPixmap = new QPixmap();
260 260
261 importedPixmap->load(fileName); 261 importedPixmap->load(fileName);
262 m_pages.insert(m_pages.at() + 1, importedPixmap); 262 m_pages.insert(m_pages.at() + 1, importedPixmap);
263 263
264 m_pageBackups.clear(); 264 m_pageBackups.clear();
265 m_pageBackups.append(new QPixmap(*(m_pages.current()))); 265 m_pageBackups.append(new QPixmap(*(m_pages.current())));
266 266
267 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 267 resizeContents(m_pages.current()->width(), m_pages.current()->height());
268 viewport()->update(); 268 viewport()->update();
269 269
270 emit pagesChanged(); 270 emit pagesChanged();
271 emit pageBackupsChanged(); 271 emit pageBackupsChanged();
272} 272}
273 273
274void DrawPadCanvas::exportPage(uint fromPage, uint toPage, const QString& name,const QString& format) 274void DrawPadCanvas::exportPage(uint fromPage, uint toPage, const QString& name,const QString& format)
275{ 275{
276 if (fromPage == toPage) { 276 if (fromPage == toPage) {
277 DocLnk docLnk; 277 DocLnk docLnk;
278 MimeType mimeType(format); 278 MimeType mimeType(format);
279 279
280 docLnk.setName(name); 280 docLnk.setName(name);
281 docLnk.setType(mimeType.id()); 281 docLnk.setType(mimeType.id());
282 282
283 FileManager fileManager; 283 FileManager fileManager;
284 QIODevice* ioDevice = fileManager.saveFile(docLnk); 284 QIODevice* ioDevice = fileManager.saveFile(docLnk);
285 QImageIO imageIO(ioDevice, format); 285 QImageIO imageIO(ioDevice, format);
286 286
287 QImage image = m_pages.current()->convertToImage(); 287 QImage image = m_pages.current()->convertToImage();
288 imageIO.setImage(image); 288 imageIO.setImage(image);
289 imageIO.write(); 289 imageIO.write();
290 delete ioDevice; 290 delete ioDevice;
291 } else { 291 } else {
292 for (uint i = fromPage; i <= toPage; i++) { 292 for (uint i = fromPage; i <= toPage; i++) {
293 DocLnk docLnk; 293 DocLnk docLnk;
294 MimeType mimeType(format); 294 MimeType mimeType(format);
295 295
296 docLnk.setName(name + QString::number(i)); 296 docLnk.setName(name + QString::number(i));
297 docLnk.setType(mimeType.id()); 297 docLnk.setType(mimeType.id());
298 298
299 FileManager fileManager; 299 FileManager fileManager;
300 QIODevice* ioDevice = fileManager.saveFile(docLnk); 300 QIODevice* ioDevice = fileManager.saveFile(docLnk);
301 QImageIO imageIO(ioDevice, format); 301 QImageIO imageIO(ioDevice, format);
302 302
303 QImage image = m_pages.at(i - 1)->convertToImage(); 303 QImage image = m_pages.at(i - 1)->convertToImage();
304 imageIO.setImage(image); 304 imageIO.setImage(image);
305 imageIO.write(); 305 imageIO.write();
306 delete ioDevice; 306 delete ioDevice;
307 } 307 }
308 } 308 }
309} 309}
310 310
311QPixmap* DrawPadCanvas::currentPage() 311QPixmap* DrawPadCanvas::currentPage()
312{ 312{
313 return m_pages.current(); 313 return m_pages.current();
314} 314}
315 315
316QList<QPixmap> DrawPadCanvas::pages() 316QList<QPixmap> DrawPadCanvas::pages()
317{ 317{
318 return m_pages; 318 return m_pages;
319} 319}
320 320
321uint DrawPadCanvas::pagePosition() 321uint DrawPadCanvas::pagePosition()
322{ 322{
323 return (m_pages.at() + 1); 323 return (m_pages.at() + 1);
324} 324}
325 325
326uint DrawPadCanvas::pageCount() 326uint DrawPadCanvas::pageCount()
327{ 327{
328 return m_pages.count(); 328 return m_pages.count();
329} 329}
330 330
331void DrawPadCanvas::backupPage() 331void DrawPadCanvas::backupPage()
332{ 332{
333 QPixmap* currentBackup = m_pageBackups.current(); 333 QPixmap* currentBackup = m_pageBackups.current();
334 while (m_pageBackups.last() != currentBackup) { 334 while (m_pageBackups.last() != currentBackup) {
335 m_pageBackups.removeLast(); 335 m_pageBackups.removeLast();
336 } 336 }
337 337
338 while (m_pageBackups.count() >= (5 + 1)) { 338 while (m_pageBackups.count() >= (5 + 1)) {
339 m_pageBackups.removeFirst(); 339 m_pageBackups.removeFirst();
340 } 340 }
341 341
342 m_pageBackups.append(new QPixmap(*(m_pages.current()))); 342 m_pageBackups.append(new QPixmap(*(m_pages.current())));
343 343
344 emit pageBackupsChanged(); 344 emit pageBackupsChanged();
345} 345}
346 346
347void DrawPadCanvas::deleteAll() 347void DrawPadCanvas::deleteAll()
348{ 348{
349 QMessageBox messageBox(tr("Delete All"), tr("Do you want to delete\nall the pages?"), 349 QMessageBox messageBox(tr("Delete All"), tr("Do you want to delete\nall the pages?"),
350 QMessageBox::Information, QMessageBox::Yes, 350 QMessageBox::Information, QMessageBox::Yes,
351 QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, 351 QMessageBox::No | QMessageBox::Escape | QMessageBox::Default,
352 QMessageBox::NoButton, this); 352 QMessageBox::NoButton, this);
353 353
354 if (messageBox.exec() == QMessageBox::Yes) { 354 if (messageBox.exec() == QMessageBox::Yes) {
355 m_pages.clear(); 355 m_pages.clear();
356 356
357 m_pages.append(new QPixmap(contentsRect().size())); 357 m_pages.append(new QPixmap(contentsRect().size()));
358 m_pages.current()->fill(Qt::white); 358 m_pages.current()->fill(Qt::white);
359 359
360 m_pageBackups.clear(); 360 m_pageBackups.clear();
361 m_pageBackups.append(new QPixmap(*(m_pages.current()))); 361 m_pageBackups.append(new QPixmap(*(m_pages.current())));
362 362
363 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 363 resizeContents(m_pages.current()->width(), m_pages.current()->height());
364 viewport()->update(); 364 viewport()->update();
365 365
366 emit pagesChanged(); 366 emit pagesChanged();
367 emit pageBackupsChanged(); 367 emit pageBackupsChanged();
368 } 368 }
369} 369}
370 370
371void DrawPadCanvas::newPage() 371void DrawPadCanvas::newPage()
372{ 372{
373 QRect rect = contentsRect(); 373 QRect rect = contentsRect();
374 374
375 NewPageDialog newPageDialog(rect.width(), rect.height(), m_pDrawPad->pen().color(), 375 NewPageDialog newPageDialog(rect.width(), rect.height(), m_pDrawPad->pen().color(),
376 m_pDrawPad->brush().color(), this); 376 m_pDrawPad->brush().color(), this);
377 377
378 if (newPageDialog.exec() == QDialog::Accepted) { 378 if (newPageDialog.exec() == QDialog::Accepted) {
379 m_pages.insert(m_pages.at() + 1, new QPixmap(newPageDialog.selectedWidth(), 379 m_pages.insert(m_pages.at() + 1, new QPixmap(newPageDialog.selectedWidth(),
380 newPageDialog.selectedHeight())); 380 newPageDialog.selectedHeight()));
381 m_pages.current()->fill(newPageDialog.selectedColor()); 381 m_pages.current()->fill(newPageDialog.selectedColor());
382 382
383 m_pageBackups.clear(); 383 m_pageBackups.clear();
384 m_pageBackups.append(new QPixmap(*(m_pages.current()))); 384 m_pageBackups.append(new QPixmap(*(m_pages.current())));
385 385
386 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 386 resizeContents(m_pages.current()->width(), m_pages.current()->height());
387 viewport()->update(); 387 viewport()->update();
388 388
389 emit pagesChanged(); 389 emit pagesChanged();
390 emit pageBackupsChanged(); 390 emit pageBackupsChanged();
391 } 391 }
392} 392}
393 393
394void DrawPadCanvas::clearPage() 394void DrawPadCanvas::clearPage()
395{ 395{
396 QMessageBox messageBox(tr("Clear Page"), tr("Do you want to clear\nthe current page?"), 396 QMessageBox messageBox(tr("Clear Page"), tr("Do you want to clear\nthe current page?"),
397 QMessageBox::Information, QMessageBox::Yes, 397 QMessageBox::Information, QMessageBox::Yes,
398 QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, 398 QMessageBox::No | QMessageBox::Escape | QMessageBox::Default,
399 QMessageBox::NoButton, this); 399 QMessageBox::NoButton, this);
400 400
401 if (messageBox.exec() == QMessageBox::Yes) { 401 if (messageBox.exec() == QMessageBox::Yes) {
402 m_pages.current()->fill(Qt::white); 402 m_pages.current()->fill(Qt::white);
403 403
404 viewport()->update(); 404 viewport()->update();
405 } 405 }
406} 406}
407 407
408void DrawPadCanvas::deletePage() 408void DrawPadCanvas::deletePage()
409{ 409{
410 QMessageBox messageBox(tr("Delete Page"), tr("Do you want to delete\nthe current page?"), 410 QMessageBox messageBox(tr("Delete Page"), tr("Do you want to delete\nthe current page?"),
411 QMessageBox::Information, QMessageBox::Yes, 411 QMessageBox::Information, QMessageBox::Yes,
412 QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, 412 QMessageBox::No | QMessageBox::Escape | QMessageBox::Default,
413 QMessageBox::NoButton, this); 413 QMessageBox::NoButton, this);
414 414
415 if (messageBox.exec() == QMessageBox::Yes) { 415 if (messageBox.exec() == QMessageBox::Yes) {
416 m_pages.remove(m_pages.current()); 416 m_pages.remove(m_pages.current());
417 417
418 if (m_pages.isEmpty()) { 418 if (m_pages.isEmpty()) {
419 m_pages.append(new QPixmap(contentsRect().size())); 419 m_pages.append(new QPixmap(contentsRect().size()));
420 m_pages.current()->fill(Qt::white); 420 m_pages.current()->fill(Qt::white);
421 } 421 }
422 422
423 m_pageBackups.clear(); 423 m_pageBackups.clear();
424 m_pageBackups.append(new QPixmap(*(m_pages.current()))); 424 m_pageBackups.append(new QPixmap(*(m_pages.current())));
425 425
426 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 426 resizeContents(m_pages.current()->width(), m_pages.current()->height());
427 viewport()->update(); 427 viewport()->update();
428 428
429 emit pagesChanged(); 429 emit pagesChanged();
430 emit pageBackupsChanged(); 430 emit pageBackupsChanged();
431 } 431 }
432} 432}
433 433
434bool DrawPadCanvas::undoEnabled() 434bool DrawPadCanvas::undoEnabled()
435{ 435{
436 return (m_pageBackups.current() != m_pageBackups.getFirst()); 436 return (m_pageBackups.current() != m_pageBackups.getFirst());
437} 437}
438 438
439bool DrawPadCanvas::redoEnabled() 439bool DrawPadCanvas::redoEnabled()
440{ 440{
441 return (m_pageBackups.current() != m_pageBackups.getLast()); 441 return (m_pageBackups.current() != m_pageBackups.getLast());
442} 442}
443 443
444bool DrawPadCanvas::goPreviousPageEnabled() 444bool DrawPadCanvas::goPreviousPageEnabled()
445{ 445{
446 return (m_pages.current() != m_pages.getFirst()); 446 return (m_pages.current() != m_pages.getFirst());
447} 447}
448 448
449bool DrawPadCanvas::goNextPageEnabled() 449bool DrawPadCanvas::goNextPageEnabled()
450{ 450{
451 return (m_pages.current() != m_pages.getLast()); 451 return (m_pages.current() != m_pages.getLast());
452} 452}
453 453
454void DrawPadCanvas::undo() 454void DrawPadCanvas::undo()
455{ 455{
456 *(m_pages.current()) = *(m_pageBackups.prev()); 456 *(m_pages.current()) = *(m_pageBackups.prev());
457 457
458 viewport()->update(); 458 viewport()->update();
459 459
460 emit pageBackupsChanged(); 460 emit pageBackupsChanged();
461} 461}
462 462
463void DrawPadCanvas::redo() 463void DrawPadCanvas::redo()
464{ 464{
465 *(m_pages.current()) = *(m_pageBackups.next()); 465 *(m_pages.current()) = *(m_pageBackups.next());
466 466
467 viewport()->update(); 467 viewport()->update();
468 468
469 emit pageBackupsChanged(); 469 emit pageBackupsChanged();
470} 470}
471 471
472void DrawPadCanvas::goFirstPage() 472void DrawPadCanvas::goFirstPage()
473{ 473{
474 m_pages.first(); 474 m_pages.first();
475 m_pageBackups.clear(); 475 m_pageBackups.clear();
476 m_pageBackups.append(new QPixmap(*(m_pages.current()))); 476 m_pageBackups.append(new QPixmap(*(m_pages.current())));
477 477
478 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 478 resizeContents(m_pages.current()->width(), m_pages.current()->height());
479 viewport()->update(); 479 viewport()->update();
480 480
481 emit pagesChanged(); 481 emit pagesChanged();
482 emit pageBackupsChanged(); 482 emit pageBackupsChanged();
483} 483}
484 484
485void DrawPadCanvas::goPreviousPage() 485void DrawPadCanvas::goPreviousPage()
486{ 486{
487 m_pages.prev(); 487 m_pages.prev();
488 m_pageBackups.clear(); 488 m_pageBackups.clear();
489 m_pageBackups.append(new QPixmap(*(m_pages.current()))); 489 m_pageBackups.append(new QPixmap(*(m_pages.current())));
490 490
491 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 491 resizeContents(m_pages.current()->width(), m_pages.current()->height());
492 viewport()->update(); 492 viewport()->update();
493 493
494 emit pagesChanged(); 494 emit pagesChanged();
495 emit pageBackupsChanged(); 495 emit pageBackupsChanged();
496} 496}
497 497
498void DrawPadCanvas::goNextPage() 498void DrawPadCanvas::goNextPage()
499{ 499{
500 m_pages.next(); 500 m_pages.next();
501 m_pageBackups.clear(); 501 m_pageBackups.clear();
502 m_pageBackups.append(new QPixmap(*(m_pages.current()))); 502 m_pageBackups.append(new QPixmap(*(m_pages.current())));
503 503
504 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 504 resizeContents(m_pages.current()->width(), m_pages.current()->height());
505 viewport()->update(); 505 viewport()->update();
506 506
507 emit pagesChanged(); 507 emit pagesChanged();
508 emit pageBackupsChanged(); 508 emit pageBackupsChanged();
509} 509}
510 510
511void DrawPadCanvas::goLastPage() 511void DrawPadCanvas::goLastPage()
512{ 512{
513 m_pages.last(); 513 m_pages.last();
514 m_pageBackups.clear(); 514 m_pageBackups.clear();
515 m_pageBackups.append(new QPixmap(*(m_pages.current()))); 515 m_pageBackups.append(new QPixmap(*(m_pages.current())));
516 516
517 resizeContents(m_pages.current()->width(), m_pages.current()->height()); 517 resizeContents(m_pages.current()->width(), m_pages.current()->height());
518 viewport()->update(); 518 viewport()->update();
519 519
520 emit pagesChanged(); 520 emit pagesChanged();
521 emit pageBackupsChanged(); 521 emit pageBackupsChanged();
522} 522}
523 523
524void DrawPadCanvas::contentsMousePressEvent(QMouseEvent* e) 524void DrawPadCanvas::contentsMousePressEvent(QMouseEvent* e)
525{ 525{
526 m_pDrawPad->tool()->mousePressEvent(e); 526 m_pDrawPad->tool()->mousePressEvent(e);
527} 527}
528 528
529void DrawPadCanvas::contentsMouseReleaseEvent(QMouseEvent* e) 529void DrawPadCanvas::contentsMouseReleaseEvent(QMouseEvent* e)
530{ 530{
531 m_pDrawPad->tool()->mouseReleaseEvent(e); 531 m_pDrawPad->tool()->mouseReleaseEvent(e);
532} 532}
533 533
534void DrawPadCanvas::contentsMouseMoveEvent(QMouseEvent* e) 534void DrawPadCanvas::contentsMouseMoveEvent(QMouseEvent* e)
535{ 535{
536 m_pDrawPad->tool()->mouseMoveEvent(e); 536 m_pDrawPad->tool()->mouseMoveEvent(e);
537} 537}
538 538
539void DrawPadCanvas::drawContents(QPainter* p, int cx, int cy, int cw, int ch) 539void DrawPadCanvas::drawContents(QPainter* p, int cx, int cy, int cw, int ch)
540{ 540{
541 QRect clipRect(cx, cy, cw, ch); 541 QRect clipRect(cx, cy, cw, ch);
542 QRect pixmapRect(0, 0, m_pages.current()->width(), m_pages.current()->height());
543 QRect drawRect = pixmapRect.intersect(clipRect);
542 544
543 p->drawPixmap(clipRect.topLeft(), *(m_pages.current()), clipRect); 545 p->drawPixmap(drawRect.topLeft(), *(m_pages.current()), drawRect);
546
547 if (drawRect.right() < clipRect.right()) {
548 p->fillRect(drawRect.right() + 1, cy, cw - drawRect.width(), ch, colorGroup().dark());
549 }
550
551 if (drawRect.bottom() < clipRect.bottom()) {
552 p->fillRect(cx, drawRect.bottom() + 1, cw, ch - drawRect.height(), colorGroup().dark());
553 }
544} 554}