I can't figure out why an expression isn't evaluating, even though there's no Hold* in its FullForm:
Plus[Dynamic[a$65712],Dynamic[Part[MousePosition[List["Graphics",Graphics],List[0,0]],1]]]
I've been stuck for hours now, and have gone through all kinds of threads including the one about Trott-Strzebonski and HoldCondition, but I'm afraid I may have missed the answer even if it was staring me in the face, due to lacking experience.
After reading How to | Evaluate Expressions inside Dynamic or Manipulate, I began to think it must have something to do with Dynamic or perhaps MousePosition, but my understanding is weak.
Here's the full code, before I continue explaining:
opts = {Axes -> False, Frame -> True, ImageSize -> {600, 400}, AspectRatio -> 1/GoldenRatio};
testdata1 = Table[{i, 5 Sin[i/10] + RandomReal[]}, {i, 100}];
testdata2 = {Log[#], #2} & @@@ testdata;
map1 = MapIndexed[Rule[testdata1[[First@#2, 1]], #] &, testdata2[[All, 1]]];
map2 = MapIndexed[Rule[testdata2[[First@#2, 1]], #] &, testdata1[[All, 1]]];
Deploy@DynamicModule[{x1, x2, a, b}, Column[{
Graphics[{PointSize@Tiny, Point /@ testdata}, GridLines -> {{
x1 = test1 = Dynamic[MousePosition[{"Graphics", Graphics}, {0, 0}][[1]]] + Dynamic[a];
b = ((test2 = Nearest[map1[[All, 1]], x1]) /. map1)[[1, 1]];
x1
}, {}}, opts],
Graphics[{PointSize@Tiny, Point /@ testdata2}, GridLines -> {{
x2 = test3 = Dynamic[MousePosition[{"Graphics", Graphics}, {0, 0}][[1]]] + Dynamic[b];
a = ((test4 = Nearest[map2[[All, 1]], x2]) /. map2)[[1, 1]];
x2
}, {}}, opts]
}]]
The line in question is this one:
x1 = test1 = Dynamic[MousePosition[{"Graphics", Graphics}, {0, 0}][[1]]] + Dynamic[a];
Instead of adding up the two Dynamiced expressions, it's passing the held form to Nearest, which, of course, doesn't know what to do with such an input. That is, debug1 and debug2 output, respectively,
Plus[Dynamic[a$69525], Dynamic[Part[MousePosition[List["Graphics", Graphics], List[0, 0]], 1]]]
and
Nearest[{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,
31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,
61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
91,92,93,94,95,96,97,98,99,100},1+0]
I'd greatly appreciate it if someone could point out where I went wrong.

Dynamicbut it not working, and indeed I can't get it to work now either with just that change---I could be doing something else wrong as well. – Andrew Cheong Oct 24 '13 at 07:16Dynamicwas something likebindor listeners in other languages, such that setting/getting from a variable (or all variables inside an expression) would trigger an event to update all other references. I think that was too naive an understanding, even if it's true to some degree as long as the result is displayed. – Andrew Cheong Oct 24 '13 at 07:41Dynamic, which had been covered in other threads. If this question does get closed/deleted, please feel free to add your answer to http://mathematica.stackexchange.com/questions/34434/hovering-mouse-cursor-over-a-plot-to-display-a-corresponding-point-in-another. Meanwhile, I'll link to this thread from there. – Andrew Cheong Oct 24 '13 at 08:03