From ca486a4558dc7aa23e3e5c677f6eedd26ed02746 Mon Sep 17 00:00:00 2001 From: zecke Date: Wed, 14 Jul 2004 11:22:14 +0000 Subject: Problem: Opie-Drawpad loads its document delayed. This means a setDocument like from the Screenshot Applet could be executed prior to the final initialisation of drawpad and the just added page vanishes. Solve: Take the fact into account and 1st) don't create an empty page if there is already a page which is the case with the setDocument call 2nd) if we load but already have pages we need to add the new pages --- (limited to 'noncore/graphics') diff --git a/noncore/graphics/drawpad/drawpadcanvas.cpp b/noncore/graphics/drawpad/drawpadcanvas.cpp index 5d0c6e4..5b1aa7e 100644 --- a/noncore/graphics/drawpad/drawpadcanvas.cpp +++ b/noncore/graphics/drawpad/drawpadcanvas.cpp @@ -177,7 +177,23 @@ void DrawPadCanvas::load(QIODevice* ioDevice) xmlSimpleReader.setContentHandler(&drawPadCanvasXmlHandler); xmlSimpleReader.parse(xmlInputSource); - m_pages = drawPadCanvasXmlHandler.pages(); + /* + * we could have loaded something from setDocument already + * due the delayed loading we need to make sure we do + * not lose pages + */ + if ( !m_pages.isEmpty() ) { + QList pages = drawPadCanvasXmlHandler.pages(); + QListIterator it( pages ); + Page *p; + while ( ( p = it.current() ) ) { + ++it; + m_pages.append( p ); + } + }else + m_pages = drawPadCanvasXmlHandler.pages(); + + if (m_pages.isEmpty()) { m_pages.append(new Page("", @@ -194,6 +210,13 @@ void DrawPadCanvas::load(QIODevice* ioDevice) void DrawPadCanvas::initialPage() { + /* + * by setDocument we've set a page already so + * don't add an empty one. This comes due the delayed initialisation + */ + if (!m_pages.isEmpty() ) + return; + m_pages.append(new Page("", clipper()->width()+(verticalScrollBar()->isVisible()?verticalScrollBar()->width():0), clipper()->height()+(horizontalScrollBar()->isVisible()?horizontalScrollBar()->height():0))); -- cgit v0.9.0.2