Mercurial > emacs
diff src/w32term.c @ 83533:02e39decdc84
Merged from emacs@sv.gnu.org
Patches applied:
* emacs@sv.gnu.org/emacs--devo--0--patch-351
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-352
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-353
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-354
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-355
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-356
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-357
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-358
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-359
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-360
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-361
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-362
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-363
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-364
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-365
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-366
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-367
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-368
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-369
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-370
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-115
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-116
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-117
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-118
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-119
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-120
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-573
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Sat, 29 Jul 2006 09:59:12 +0000 |
parents | b19aaf4ab0ee 99cff808ae1e |
children | 694bbb62a75d |
line wrap: on
line diff
--- a/src/w32term.c Fri Jul 14 05:56:32 2006 +0000 +++ b/src/w32term.c Sat Jul 29 09:59:12 2006 +0000 @@ -5312,20 +5312,52 @@ { int flags = f->size_hint_flags; - /* Treat negative positions as relative to the leftmost bottommost + /* The sum of the widths of the frame's left and right borders, and + the sum of the heights of the frame's top and bottom borders (in + pixels) drawn by Windows. */ + unsigned int left_right_borders_width, top_bottom_borders_height; + + /* Try to get the actual values of these two variables. We compute + the border width (height) by subtracting the width (height) of + the frame's client area from the width (height) of the frame's + entire window. */ + WINDOWPLACEMENT wp = { 0 }; + RECT client_rect = { 0 }; + + if (GetWindowPlacement (FRAME_W32_WINDOW (f), &wp) + && GetClientRect (FRAME_W32_WINDOW (f), &client_rect)) + { + left_right_borders_width = + (wp.rcNormalPosition.right - wp.rcNormalPosition.left) - + (client_rect.right - client_rect.left); + + top_bottom_borders_height = + (wp.rcNormalPosition.bottom - wp.rcNormalPosition.top) - + (client_rect.bottom - client_rect.top); + } + else + { + /* Use sensible default values. */ + left_right_borders_width = 8; + top_bottom_borders_height = 32; + } + + /* Treat negative positions as relative to the rightmost bottommost position that fits on the screen. */ if (flags & XNegative) f->left_pos = (FRAME_W32_DISPLAY_INFO (f)->width - FRAME_PIXEL_WIDTH (f) - + f->left_pos); + + f->left_pos + - (left_right_borders_width - 1)); if (flags & YNegative) f->top_pos = (FRAME_W32_DISPLAY_INFO (f)->height - FRAME_PIXEL_HEIGHT (f) - + f->top_pos); - /* The left_pos and top_pos - are now relative to the top and left screen edges, - so the flags should correspond. */ + + f->top_pos + - (top_bottom_borders_height - 1)); + + /* The left_pos and top_pos are now relative to the top and left + screen edges, so the flags should correspond. */ f->size_hint_flags &= ~ (XNegative | YNegative); }