From: "Drew Adams" <drew.adams@oracle.com>
Subject: RE: Patch to fix frame positioning with negative top/left values onWindows
Date: Fri, 31 Mar 2006 23:44:59 -0800 [thread overview]
Message-ID: <DNEMKBNJBGPAOPIJOOICMEEPDEAA.drew.adams@oracle.com> (raw)
In-Reply-To: <uzmsy60jk.fsf@world.std.com>
I've been using a 2005-06-26 CVS snapshot on Windows that had this bug. I
thought that this had been fixed since that snapshot. I just tried a
2006-03-20 snapshot on Windows, however, and the same bug is still there.
Did Fran's patch never get applied, or doesn't it work? His patch dates from
January of 2005 - soon to be a year and a half! The bug symptoms are the
same as before. See thread "Improved patch to fix frame positioning bug on
Windows" from 2005-01-14.
-----Original Message-----
From: emacs-devel-bounces+drew.adams=oracle.com@gnu.org
[mailto:emacs-devel-bounces+drew.adams=oracle.com@gnu.org]On Behalf Of
Francis Litterio
Sent: Thursday, July 07, 2005 9:24 AM
To: emacs-devel@gnu.org
Cc: help-emacs-windows@gnu.org
Subject: Patch to fix frame positioning with negative top/left values
onWindows
Emacs developers,
This patch to the CVS Emacs sources fixes the way that function
x_calc_absolute_position() accounts for the Windows-drawn borders around
a frame when converting a negative 'top or 'left parameter into the
equivalent positive value.
I have submitted this patch before, but RMS told me that the FSF needed
a copyright assignment from me before it could applied. The FSF now has
mysigned the copyright assignment, so please let me know if there's any
problem with this patch. I've been running Emacs with it for some
months with no problems.
--
Francis Litterio
franl <at> world . std . com
diff -w -u -u -w -r1.228 w32term.c
--- w32term.c 4 Jul 2005 16:06:37 -0000 1.228
+++ w32term.c 7 Jul 2005 16:19:39 -0000
@@ -5438,17 +5438,58 @@
{
int flags = f->size_hint_flags;
- /* Treat negative positions as relative to the leftmost bottommost
+ /* left_right_borders_width holds the sum of the widths of
the frame's left
+ and right borders (in pixels) drawn by Windows. */
+
+ unsigned int left_right_borders_width = 8; /* A sensible
default value. */
+
+ /* top_bottom_borders_height holds the sum of the heights of
the frame's top and
+ bottom borders (in pixels) drawn by Windows. */
+
+ unsigned int top_bottom_borders_height = 32; /* A sensible
default value. */
+
+ /* Now obtain the actual values of the above two variables.
If we fail to
+ obtain the actual values, we will use the defaults
assigned above. 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 };
+
+ BOOL status = GetWindowPlacement (FRAME_W32_WINDOW (f), &wp);
+
+ if (status != FALSE)
+ {
+ RECT client_rect = { 0 };
+
+ status = GetClientRect (FRAME_W32_WINDOW (f), &client_rect);
+
+ if (status != FALSE)
+ {
+ 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);
+ }
+ }
+
+ /* 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);
+ + 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. */
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel
next prev parent reply other threads:[~2006-04-01 7:44 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-07 16:23 Patch to fix frame positioning with negative top/left values on Windows Francis Litterio
2005-07-09 0:30 ` Francis Litterio
2005-07-09 8:07 ` Jason Rumney
2005-07-09 15:16 ` Re: Patch to fix frame positioning with negative top/leftvalues " Drew Adams
2005-07-09 19:38 ` Jason Rumney
2005-07-10 1:17 ` Francis Litterio
2005-07-10 5:19 ` Richard M. Stallman
2006-04-01 7:44 ` Drew Adams [this message]
2006-04-01 16:22 ` Patch to fix frame positioning with negative top/left values onWindows Fran Litterio
2006-04-02 20:38 ` Richard Stallman
2006-04-03 1:23 ` Fran Litterio
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DNEMKBNJBGPAOPIJOOICMEEPDEAA.drew.adams@oracle.com \
--to=drew.adams@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).