Fixed Linux compiler complaints

http://codereview.appspot.com/6269045/



git-svn-id: http://skia.googlecode.com/svn/trunk@4135 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/views/SkView.cpp b/src/views/SkView.cpp
index fc1ddfb..855d6a9 100644
--- a/src/views/SkView.cpp
+++ b/src/views/SkView.cpp
@@ -371,84 +371,99 @@
 
 SkView::Click* SkView::findClickHandler(SkScalar x, SkScalar y)
 {
-	if (x < 0 || y < 0 || x >= fWidth || y >= fHeight) {
-		return NULL;
+    if (x < 0 || y < 0 || x >= fWidth || y >= fHeight) {
+        return NULL;
     }
 
     if (this->onSendClickToChildren(x, y)) {
         F2BIter	iter(this);
         SkView*	child;
-        
+
         while ((child = iter.next()) != NULL)
         {
             SkPoint p;
-            child->globalToLocal(x, y, &p);
-            
+            if (!child->globalToLocal(x, y, &p)) {
+                continue;
+            }
+
             Click* click = child->findClickHandler(p.fX, p.fY);
-            
+
             if (click) {
                 return click;
             }
         }
     }
-	return this->onFindClickHandler(x, y);
+
+    return this->onFindClickHandler(x, y);
 }
 
 void SkView::DoClickDown(Click* click, int x, int y)
 {
-	SkASSERT(click);
+    SkASSERT(click);
 
-	SkView* target = (SkView*)SkEventSink::FindSink(click->fTargetID);
-	if (target == NULL)
-		return;
+    SkView* target = (SkView*)SkEventSink::FindSink(click->fTargetID);
+    if (NULL == target) {
+        return;
+    }
 
-	click->fIOrig.set(x, y);
-	click->fICurr = click->fIPrev = click->fIOrig;
+    click->fIOrig.set(x, y);
+    click->fICurr = click->fIPrev = click->fIOrig;
 
-	click->fOrig.iset(x, y);
-	target->globalToLocal(&click->fOrig);
-	click->fPrev = click->fCurr = click->fOrig;
+    click->fOrig.iset(x, y);
+    if (!target->globalToLocal(&click->fOrig)) {
+        // no history to let us recover from this failure
+        return;
+    }
+    click->fPrev = click->fCurr = click->fOrig;
 
-	click->fState = Click::kDown_State;
-	target->onClick(click);
+    click->fState = Click::kDown_State;
+    target->onClick(click);
 }
 
 void SkView::DoClickMoved(Click* click, int x, int y)
 {
-	SkASSERT(click);
+    SkASSERT(click);
 
-	SkView* target = (SkView*)SkEventSink::FindSink(click->fTargetID);
-	if (target == NULL)
-		return;
+    SkView* target = (SkView*)SkEventSink::FindSink(click->fTargetID);
+    if (NULL == target) {
+        return;
+    }
 
-	click->fIPrev = click->fICurr;
-	click->fICurr.set(x, y);
+    click->fIPrev = click->fICurr;
+    click->fICurr.set(x, y);
 
-	click->fPrev = click->fCurr;
-	click->fCurr.iset(x, y);
-	target->globalToLocal(&click->fCurr);
+    click->fPrev = click->fCurr;
+    click->fCurr.iset(x, y);
+    if (!target->globalToLocal(&click->fCurr)) {
+        // on failure pretend the mouse didn't move
+        click->fCurr = click->fPrev;
+    }
 
-	click->fState = Click::kMoved_State;
-	target->onClick(click);
+    click->fState = Click::kMoved_State;
+    target->onClick(click);
 }
 
 void SkView::DoClickUp(Click* click, int x, int y)
 {
-	SkASSERT(click);
+    SkASSERT(click);
 
-	SkView* target = (SkView*)SkEventSink::FindSink(click->fTargetID);
-	if (target == NULL)
-		return;
+    SkView* target = (SkView*)SkEventSink::FindSink(click->fTargetID);
+    if (NULL == target) {
+        return;
+    }
 
-	click->fIPrev = click->fICurr;
-	click->fICurr.set(x, y);
+    click->fIPrev = click->fICurr;
+    click->fICurr.set(x, y);
 
-	click->fPrev = click->fCurr;
-	click->fCurr.iset(x, y);
-	target->globalToLocal(&click->fCurr);
+    click->fPrev = click->fCurr;
+    click->fCurr.iset(x, y);
+    if (!target->globalToLocal(&click->fCurr)) {
+        // on failure pretend the mouse didn't move
+        click->fCurr = click->fPrev;
+    }
 
-	click->fState = Click::kUp_State;
-	target->onClick(click);
+    click->fState = Click::kUp_State;
+    target->onClick(click);
 }
 
 //////////////////////////////////////////////////////////////////////
@@ -619,18 +634,22 @@
         }
     }
 }
-void SkView::globalToLocal(SkScalar x, SkScalar y, SkPoint* local) const
+bool SkView::globalToLocal(SkScalar x, SkScalar y, SkPoint* local) const
 {
-	SkASSERT(this);
-	if (local)
-	{
+    SkASSERT(this);
+
+    if (NULL != local) {
         SkMatrix m;
         this->localToGlobal(&m);
+        if (!m.invert(&m)) {
+            return false;
+        }
         SkPoint p;
-        m.invert(&m);
         m.mapXY(x, y, &p);
-		local->set(p.fX, p.fY);
-	}
+        local->set(p.fX, p.fY);
+    }
+
+    return true;
 }
 
 //////////////////////////////////////////////////////////////////