- win = real_window ((sb==NULL) ? GetFocus() : sb->mirror, 1);
- /* "0 as the second parameter" refers to the call to real_window above.
- This comment was taken from Ben's 21.5 code that differs somewhat
- from this, I don't think the 21.4 code ever had a 0 there.
- #### we're still hitting an abort here with 0 as the second
- parameter, although only occasionally. It seems that sometimes we
- receive events for scrollbars that don't exist anymore. I assume
- it must happen like this: The user does something that causes a
- scrollbar to disappear (e.g. Alt-TAB, causing recomputation of
- everything in the new frame) and then immediately uses the mouse
- wheel, generating scrollbar events. Both events get posted before
- we have a chance to process them, and in processing the first, the
- scrollbar mentioned in the second disappears. */
- if (NILP (win))
- return;
- frame = XWINDOW (win)->frame;
- f = XFRAME (frame);
+ if (sb != NULL)
+ {
+ win = real_window (sb->mirror, 1);
+ /* "0 as the second parameter" refers to the call to real_window
+ above. This comment was taken from Ben's 21.5 code that differs
+ somewhat from this, I don't think the 21.4 code ever had a 0
+ there. #### we're still hitting an abort here with 0 as the
+ second parameter, although only occasionally. It seems that
+ sometimes we receive events for scrollbars that don't exist
+ anymore. I assume it must happen like this: The user does
+ something that causes a scrollbar to disappear (e.g. Alt-TAB,
+ causing recomputation of everything in the new frame) and then
+ immediately uses the mouse wheel, generating scrollbar events.
+ Both events get posted before we have a chance to process them,
+ and in processing the first, the scrollbar mentioned in the
+ second disappears. */
+ if (NILP (win))
+ return;
+ frame = XWINDOW (win)->frame;
+ f = XFRAME (frame);
+ }
+ else
+ {
+ /* I'm not sure if this is right, but its much better than
+ passing an HNWD to real_window() - which is what the previous
+ code did -- andyp */
+ frame = mswindows_find_frame (GetFocus());
+ f = XFRAME (frame);
+ win = FRAME_SELECTED_WINDOW (f);
+ }