[Haiku-commits] r31300 - haiku/trunk/src/apps/diskprobe

bonefish at BerliOS bonefish at mail.berlios.de
Sun Jun 28 19:13:49 CEST 2009


Author: bonefish
Date: 2009-06-28 19:13:48 +0200 (Sun, 28 Jun 2009)
New Revision: 31300
ViewCVS: http://svn.berlios.de/viewcvs/haiku?rev=31300&view=rev

Modified:
   haiku/trunk/src/apps/diskprobe/Jamfile
   haiku/trunk/src/apps/diskprobe/ProbeView.cpp
Log:
Added expression support to the position text control. It's not quite the
direly missing "Go To" function, but better than nothing.


Modified: haiku/trunk/src/apps/diskprobe/Jamfile
===================================================================
--- haiku/trunk/src/apps/diskprobe/Jamfile	2009-06-28 17:11:45 UTC (rev 31299)
+++ haiku/trunk/src/apps/diskprobe/Jamfile	2009-06-28 17:13:48 UTC (rev 31300)
@@ -16,6 +16,6 @@
 	ProbeView.cpp
 	OpenWindow.cpp
 	FindWindow.cpp
-	: be tracker translation
+	: be tracker translation libexpression_parser.a libmapm.a
 	: DiskProbe.rdef
 	;

Modified: haiku/trunk/src/apps/diskprobe/ProbeView.cpp
===================================================================
--- haiku/trunk/src/apps/diskprobe/ProbeView.cpp	2009-06-28 17:11:45 UTC (rev 31299)
+++ haiku/trunk/src/apps/diskprobe/ProbeView.cpp	2009-06-28 17:13:48 UTC (rev 31300)
@@ -37,6 +37,8 @@
 #include <PrintJob.h>
 #include <Beep.h>
 
+#include <ExpressionParser.h>
+
 #include "DataView.h"
 #include "DiskProbe.h"
 #include "TypeEditors.h"
@@ -849,7 +851,7 @@
 
 		case kMsgPositionUpdate:
 		{
-			fLastPosition = fPosition;
+			off_t lastPosition = fPosition;
 
 			off_t position;
 			int32 delta;
@@ -862,10 +864,18 @@
 			} else if (message->FindInt32("delta", &delta) == B_OK) {
 				fPosition += delta * off_t(fBlockSize);
 			} else {
-				fPosition = strtoll(fPositionControl->Text(), NULL, 0)
-					* fBlockSize;
+				try {
+					ExpressionParser parser;
+					parser.SetSupportHexInput(true);
+					fPosition = parser.EvaluateToInt64(
+						fPositionControl->Text()) * fBlockSize;
+				} catch (...) {
+					beep();
+					break;
+				}
 			}
 
+			fLastPosition = lastPosition;
 			fPosition = (fPosition / fBlockSize) * fBlockSize;
 				// round to block size
 




More information about the Haiku-commits mailing list