Yes, this is normal behaviour: holding mouse button while n a top level window blocks timer scheduling (this is called "event-blocking condition"). There are a couple of user events that can cause this to happen and as far as I know the only solution is to use an asyncronous timer (<cvidir>\toolslib\toolbox\asynctmr.fp) instead of a regular timer. More informations about event-blocking conditions can be found in the online help for ATTR_ALLOW_UNSAFE_TIMER_EVENTS in SetSystemAttribute function.
Using an async timer is quite easy: its callback has the same format as standard UI timers callback, with the only difference that the first parameter is not the panel handle (since the timer is executed in a separate thread outside the UI one): in case you are using panelhandle received as a parameter you will need to use a different method to get this value (for example callbackData parameter of the function). Also, considering it executes in a different thread, standard multithreading cautions must be taken while handling variables that are used also in different threads in the program.