To also implement Draco's 'page-at-a-time' search idea we could, during memorization, additionally ask the user to UN-highlight the mat item and then re-clip the (now unhighlighted) mat item from the same screen region that we used for the highlighted clipping. Later, we could search the mats page-by-page, looking for either the highlighted OR unhighlighted version and then selecting accordingly.
But I think there's a catch here. Sometimes, during memorization, the desired mat might be all by itself on a page in the mats list -- so it would be impossible to see an unhighlighted version of the desired mat item; unhighlighting the mat would also have to switch pages.
If this is the case, then the user prompting would probably need to look something like this (after memorizing the highlighted item):
Now, UN-highlight the current material with + or - key, but keep it visible on-screen (if possible).
Press Y if the UN-highlighted material is now visible on-screen.
Press N if the UN-highlighted material can't be shown (i.e. it's all by itself on a mats list page).
Not sure I like this, for a couple reasons. One, it's a little confusing (at least the way it is presented here) and may be non-obvious why QF is asking for this. Two, it's more work for the user: now we have a highlighting step, 2 mouse clicks, an UNhighlighting step, and a Y or N keypress.
Considering that the desired mat for a construction will most often appear within the first 2 pages of the mats list, I'm tending towards just implementing the more naive 'item-at-a-time' approach for now, and thus minimizing the required user interactions.
I've thought about doing memorization in such a way that a previous memorization can be reused on subsequent blueprints/Alt+D's (remembering the chosen mat for reuse). DFWall took a similar approach, requiring you to 'memorize' mats before starting the designation routine. While this would be nice for doing a lot of smaller blueprints with the same mat, it won't work if the user changes their UI zoom level, because those remembered matclip.bmp's would no longer match anything on-screen. So I think at least initially the user will just be required to freshly memorize the desired mat(s) every time Alt+D is used.