5374 |
x_calc_absolute_position (f) |
x_calc_absolute_position (f) |
5375 |
struct frame *f; |
struct frame *f; |
5376 |
{ |
{ |
|
POINT pt; |
|
5377 |
int flags = f->size_hint_flags; |
int flags = f->size_hint_flags; |
5378 |
|
|
|
pt.x = pt.y = 0; |
|
|
|
|
|
/* Find the position of the outside upper-left corner of |
|
|
the inner window, with respect to the outer window. |
|
|
But do this only if we will need the results. */ |
|
|
if (f->output_data.w32->parent_desc != FRAME_W32_DISPLAY_INFO (f)->root_window) |
|
|
{ |
|
|
BLOCK_INPUT; |
|
|
MapWindowPoints (FRAME_W32_WINDOW (f), |
|
|
f->output_data.w32->parent_desc, |
|
|
&pt, 1); |
|
|
UNBLOCK_INPUT; |
|
|
} |
|
|
|
|
|
{ |
|
|
RECT rt; |
|
|
rt.left = rt.right = rt.top = rt.bottom = 0; |
|
|
|
|
|
BLOCK_INPUT; |
|
|
AdjustWindowRect(&rt, f->output_data.w32->dwStyle, |
|
|
FRAME_EXTERNAL_MENU_BAR (f)); |
|
|
UNBLOCK_INPUT; |
|
|
|
|
|
pt.x += (rt.right - rt.left); |
|
|
pt.y += (rt.bottom - rt.top); |
|
|
} |
|
|
|
|
5379 |
/* Treat negative positions as relative to the leftmost bottommost |
/* Treat negative positions as relative to the leftmost bottommost |
5380 |
position that fits on the screen. */ |
position that fits on the screen. */ |
5381 |
if (flags & XNegative) |
if (flags & XNegative) |
5382 |
f->left_pos = (FRAME_W32_DISPLAY_INFO (f)->width |
f->left_pos = (FRAME_W32_DISPLAY_INFO (f)->width |
|
- 2 * f->border_width - pt.x |
|
5383 |
- FRAME_PIXEL_WIDTH (f) |
- FRAME_PIXEL_WIDTH (f) |
5384 |
+ f->left_pos); |
+ f->left_pos); |
5385 |
|
|
5386 |
if (flags & YNegative) |
if (flags & YNegative) |
5387 |
f->top_pos = (FRAME_W32_DISPLAY_INFO (f)->height |
f->top_pos = (FRAME_W32_DISPLAY_INFO (f)->height |
|
- 2 * f->border_width - pt.y |
|
5388 |
- FRAME_PIXEL_HEIGHT (f) |
- FRAME_PIXEL_HEIGHT (f) |
5389 |
+ f->top_pos); |
+ f->top_pos); |
5390 |
/* The left_pos and top_pos |
/* The left_pos and top_pos |