[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r100679: * nsfns.m (compute_tip_xy):
From: |
Jan D |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r100679: * nsfns.m (compute_tip_xy): Do not convert coordinates from frame parameters. |
Date: |
Thu, 01 Jul 2010 14:20:14 +0200 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 100679
committer: Jan D <address@hidden>
branch nick: trunk
timestamp: Thu 2010-07-01 14:20:14 +0200
message:
* nsfns.m (compute_tip_xy): Do not convert coordinates from frame parameters.
modified:
src/ChangeLog
src/nsfns.m
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2010-07-01 12:16:33 +0000
+++ b/src/ChangeLog 2010-07-01 12:20:14 +0000
@@ -1,5 +1,8 @@
2010-07-01 Jan Djärv <address@hidden>
+ * nsfns.m (compute_tip_xy): Do not convert coordinates from frame
+ parameters, they are already absolute.
+
* nsterm.m (x_set_window_size, initFrameFromEmacs): Renamed
FRAME_NS_TOOLBAR_HEIGHT to FRAME_TOOLBAR_HEIGHT.
=== modified file 'src/nsfns.m'
--- a/src/nsfns.m 2010-06-29 09:49:20 +0000
+++ b/src/nsfns.m 2010-07-01 12:20:14 +0000
@@ -2412,22 +2412,27 @@
/* Start with user-specified or mouse position. */
left = Fcdr (Fassq (Qleft, parms));
- if (INTEGERP (left))
- pt.x = XINT (left);
- else
- pt.x = last_mouse_motion_position.x;
top = Fcdr (Fassq (Qtop, parms));
- if (INTEGERP (top))
- pt.y = XINT (top);
+
+ if (!INTEGERP (left) || !INTEGERP (top))
+ {
+ pt = last_mouse_motion_position;
+ /* Convert to screen coordinates */
+ pt = [view convertPoint: pt toView: nil];
+ pt = [[view window] convertBaseToScreen: pt];
+ }
else
- pt.y = last_mouse_motion_position.y;
-
- /* Convert to screen coordinates */
- pt = [view convertPoint: pt toView: nil];
- pt = [[view window] convertBaseToScreen: pt];
-
+ {
+ /* Absolute coordinates. */
+ pt.x = XINT (left);
+ pt.y = x_display_pixel_height (FRAME_NS_DISPLAY_INFO (f)) - XINT (top)
+ - height;
+ }
+
/* Ensure in bounds. (Note, screen origin = lower left.) */
- if (pt.x + XINT (dx) <= 0)
+ if (INTEGERP (left))
+ *root_x = pt.x;
+ else if (pt.x + XINT (dx) <= 0)
*root_x = 0; /* Can happen for negative dx */
else if (pt.x + XINT (dx) + width
<= x_display_pixel_width (FRAME_NS_DISPLAY_INFO (f)))
@@ -2440,7 +2445,9 @@
/* Put it left justified on the screen -- it ought to fit that way. */
*root_x = 0;
- if (pt.y - XINT (dy) - height >= 0)
+ if (INTEGERP (top))
+ *root_y = pt.y;
+ else if (pt.y - XINT (dy) - height >= 0)
/* It fits below the pointer. */
*root_y = pt.y - height - XINT (dy);
else if (pt.y + XINT (dy) + height
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r100679: * nsfns.m (compute_tip_xy): Do not convert coordinates from frame parameters.,
Jan D <=