From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: bug#5703: 23.1.92; `x-show-tip' and `tooltip-frame-parameters' do not respect `left' and `top' Date: Tue, 30 Mar 2010 16:15:37 +0300 Message-ID: <83pr2mympy.fsf@gnu.org> References: <87pr38rnan.fsf@stupidchicken.com> Reply-To: Eli Zaretskii NNTP-Posting-Host: lo.gmane.org X-Trace: dough.gmane.org 1269955056 17435 80.91.229.12 (30 Mar 2010 13:17:36 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 30 Mar 2010 13:17:36 +0000 (UTC) Cc: jasonr@gnu.org, 5703@debbugs.gnu.org, emacs-devel@gnu.org To: Chong Yidong Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Mar 30 15:17:27 2010 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1NwbJt-0002tQ-Mr for ged-emacs-devel@m.gmane.org; Tue, 30 Mar 2010 15:17:26 +0200 Original-Received: from localhost ([127.0.0.1]:45038 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NwbJs-0000P8-Rx for ged-emacs-devel@m.gmane.org; Tue, 30 Mar 2010 09:17:24 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NwbIC-0008Gy-US for emacs-devel@gnu.org; Tue, 30 Mar 2010 09:15:40 -0400 Original-Received: from [140.186.70.92] (port=49301 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NwbI6-0008Dx-4l for emacs-devel@gnu.org; Tue, 30 Mar 2010 09:15:40 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1NwbI3-0005yH-BA for emacs-devel@gnu.org; Tue, 30 Mar 2010 09:15:33 -0400 Original-Received: from mtaout20.012.net.il ([80.179.55.166]:60780) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1NwbI3-0005xu-3a; Tue, 30 Mar 2010 09:15:31 -0400 Original-Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0L0300K00JG1KP00@a-mtaout20.012.net.il>; Tue, 30 Mar 2010 16:15:29 +0300 (IDT) Original-Received: from HOME-C4E4A596F7 ([77.127.176.135]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0L0300KBMJHSBS10@a-mtaout20.012.net.il>; Tue, 30 Mar 2010 16:15:29 +0300 (IDT) In-reply-to: <87pr38rnan.fsf@stupidchicken.com> X-012-Sender: halo1@inter.net.il X-detected-operating-system: by eggs.gnu.org: Solaris 10 (beta) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:122907 Archived-At: > From: Chong Yidong > Date: Sat, 13 Mar 2010 15:15:12 -0500 > Cc: 5703@debbugs.gnu.org > > "Drew Adams" wrote: > > > M-: (x-show-tip "aaaaaaaa" (selected-frame) '((left . 30) (top . 40)) 10 0 0) > > > > Instead of displaying the tooltip frame at the absolute > > location specified by `left' and `top', it always displays it at the mouse > > position plus the DX and DY (0 and 0 here). > > This is reported to be a regression against Emacs 22. Unfortunately, > it's Windows-only, and I can't reproduce it. Could someone with access > to a Windows box give it a shot? I think the small patch below fixes this. But since this is about pretest, I would like second opinion on that from anyone who is familiar with this stuff (not only on MS-Windows). In particular, I'd like to hear from Jason. Please also try the patched version in as many different use-cases as you can, to make sure it doesn't break anything. Here's what I found to be the reason of the bug: compute_tip_xy relies on the tip frame's parameters (passed to it through the `parms' argument) for figuring out where to display the tooltip. But by the time compute_tip_xy is called, the `top' and `left' parameters were already removed from `parms'. That's because x_create_tip_frame, called a few lines before that, calls x_figure_window_size, which sets up f->top_pos and f->left_pos from `top' and `left', and as a side effect removes them from the frame's parameters alist. I see almost identical code in xfns.c versions of these functions, so I'd be interested to hear how come the X version does not suffer from the same problem. That's because the patch below, although it does the job, feels a bit kludgey, and I wonder if there a cleaner way. === modified file 'src/w32fns.c' --- src/w32fns.c 2010-01-13 08:35:10 +0000 +++ src/w32fns.c 2010-03-30 12:57:13 +0000 @@ -5927,6 +5927,10 @@ Text larger than the specified size is c /* Move the tooltip window where the mouse pointer is. Resize and show it. */ compute_tip_xy (f, parms, dx, dy, width, height, &root_x, &root_y); + if (f->top_pos) + root_y = f->top_pos; + if (f->left_pos) + root_x = f->left_pos; { /* Adjust Window size to take border into account. */