- w_upup = w_up->prev;
- while (1)
- {
- if (w_up->start.y != w_upup->start.y)
- {
- break;
- }
- w_upup = w_upup->prev;
- }
- w_prev_maxy = w_upup->start.y + w_upup->framesize.y;
- widthdiff = (w_upup->start.x + w_upup->framesize.x)
- - (w_up->start.x + w_up->framesize.x);
- if ( w->framesize.y < world.wmeta->padsize.y - w_prev_maxy
- && w->framesize.x < widthdiff)
+ w_thr = w_test->prev;
+ for (; w_test->start.y <= w_thr->start.y; w_thr = w_thr->prev);
+ uint16_t w_thr_bottom = w_thr->start.y + w_thr->framesize.y;
+ uint16_t free_width = (w_thr->start.x + w_thr->framesize.x)
+ - (w_test->start.x + w_test->framesize.x);
+ if ( w->framesize.y < world.wmeta->padsize.y - w_thr_bottom
+ && w->framesize.x < free_width)