syswindow_move() doesn't move?


    Apr 22 2006 | 12:19 pm
    This seems to be my week for obscure problems.
    Following code snippet, simplified (and making some braindead
    assumptions about Mac OS desktop geometry, but that's not the problem):
    ///////////////////
    BitMap screenBits;
    Rect screenRect,
    windRect,
    visWindRect;
    GetQDGlobalsScreenBits(&screenBits);
    screenRect = screenBits.bounds;
    // myWind has already been initialized to a valid t_wind struct
    windRect.left = myWind->w_x1;
    windRect.right = myWind->w_x2;
    windRect.top = myWind->w_y1;
    windRect.bottom = myWind->w_y2;
    SectRect(&screenRect, &windRect, &visWindRect);
    // Really should iterate through the device list, but the
    // above is good enough for testing...
    if (EmptyRect(&visWindRect)) {
    syswindow_move(wind_syswind(myWind), 20, 20, true);
    }
    ///////////////////
    The window is not moved after the call to syswindow_move().
    For instance, inserting strategic post()s, as follows
    ///////////////////
    post("screenRect (%ld, %ld) (%ld, %ld)",
    (long) screenRect.left, (long) screenRect.top,
    (long) screenRect.right, (long) screenRect.bottom);
    post("windRect (%ld, %ld) (%ld, %ld)",
    (long) windRect.left, (long) windRect.top,
    (long) windRect.right, (long) windRect.bottom);
    SectRect(&screenRect, &windRect, &visWindRect);
    post("visible area (%ld, %ld) (%ld, %ld)",
    (long) visWindRect.left, (long) visWindRect.top,
    (long) visWindRect.right, (long) visWindRect.bottom);
    if (EmptyRect(&visWindRect)) {
    post("about to move window");
    syswindow_move(wind_syswind(myWind), 20, 20, true);
    post("...new top left: %ld %ld", myWind->w_x1, myWind->w_y1);
    }
    ///////////////////
    Can yield the following in the Max window:
    screenRect (0, 0) (1440, 900)
    windRect (-2032, 850) (-1593, 1170)
    visible area (0, 0) (0, 0)
    about to move window
    ...new top left: -2032 850
    Expected result: last line should read "...new top left: 20 20". And
    the window should be visible on the main screen.
    This is on Mac OS 10.4.6, Max/MSP 4.5.6. IDE: CW 8.3.
    If I'm not doing something blindingly obviously stupid, I can strip
    the code down to a minimal object and make it available.
    How does thispatcher do this?
    Greetings, Peter