Canvas size initializes correctly when drawing from a skia picture

Review URL: https://codereview.appspot.com/6450065

git-svn-id: http://skia.googlecode.com/svn/trunk@4837 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/debugger/QT/SkCanvasWidget.cpp b/debugger/QT/SkCanvasWidget.cpp
index ec6c0c8..47db709 100644
--- a/debugger/QT/SkCanvasWidget.cpp
+++ b/debugger/QT/SkCanvasWidget.cpp
@@ -23,7 +23,7 @@
 
     fHorizontalLayout.addWidget(&fRasterWidget);
     fHorizontalLayout.addWidget(&fGLWidget);
-    fDebugCanvas = new SkDebugCanvas();
+    fDebugCanvas = NULL;
 
     fIndex = 0;
     fPreviousPoint.set(0,0);
@@ -31,6 +31,7 @@
     fScaleFactor = 1.0;
 
     setWidgetVisibility(kGPU_WidgetType, true);
+    this->setDisabled(true);
 }
 
 void SkCanvasWidget::drawTo(int index) {
@@ -45,18 +46,22 @@
 }
 
 void SkCanvasWidget::loadPicture(QString filename) {
+    this->setDisabled(false);
     SkStream* stream = new SkFILEStream(filename.toAscii());
     SkPicture* picture = new SkPicture(stream);
 
     /* TODO(chudy): Implement function that doesn't require new
      * instantiation of debug canvas. */
     delete fDebugCanvas;
-    fDebugCanvas = new SkDebugCanvas();
-    fDebugCanvas->setBounds(this->width(), this->height());
+    fDebugCanvas = new SkDebugCanvas(picture->width(), picture->height());
+
     picture->draw(fDebugCanvas);
     fIndex = fDebugCanvas->getSize();
     fRasterWidget.setDebugCanvas(fDebugCanvas);
     fGLWidget.setDebugCanvas(fDebugCanvas);
+
+    // TODO(chudy): Remove bounds from debug canvas storage.
+    fDebugCanvas->setBounds(this->width(), this->height());
 }
 
 void SkCanvasWidget::mouseMoveEvent(QMouseEvent* event) {
@@ -69,11 +74,13 @@
 
 void SkCanvasWidget::mousePressEvent(QMouseEvent* event) {
     fPreviousPoint.set(event->globalX(), event->globalY());
-    fDebugCanvas->getBoxClass()->setHitPoint(event->x(), event->y());
-    fDebugCanvas->isCalculatingHits(true);
-    drawTo(fIndex);
-    emit hitChanged(fDebugCanvas->getHitBoxPoint());
-    fDebugCanvas->isCalculatingHits(false);
+    if (fDebugCanvas) {
+        fDebugCanvas->getBoxClass()->setHitPoint(event->x(), event->y());
+        fDebugCanvas->isCalculatingHits(true);
+        drawTo(fIndex);
+        emit hitChanged(fDebugCanvas->getHitBoxPoint());
+        fDebugCanvas->isCalculatingHits(false);
+    }
 }
 
 void SkCanvasWidget::mouseDoubleClickEvent(QMouseEvent* event) {