unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: Eli Zaretskii <eliz@gnu.org>, Drew Adams <drew.adams@oracle.com>
Cc: 18493@debbugs.gnu.org, dgutov@yandex.ru
Subject: bug#18493: 24.3.93; posn-col-row should take text-scale-mode into account
Date: Thu, 18 Sep 2014 08:37:28 -0700 (PDT)	[thread overview]
Message-ID: <ebad225f-4bc4-426c-a135-8d1d15551fda@default> (raw)
In-Reply-To: <<831tr92cuq.fsf@gnu.org>>

> > getting the column of a mouse click, using:
> >  (car (posn-col-row (event-start event)))
> > And I guess that code must be broken wrt text scaling.
> > I didn't realize that.
> 
> As I wrote elsewhere, whether it is broken depends on what you do
> with the results.  E.g., if you deal with mouse clicks, the
> natural value to use is the underlying buffer position, not
> column/row.  What do you need the column for?

I pass the column and row to `icicle-raise-Completions-frame',
which calls (set-mouse-position (selected-frame) col row)

> > > Does it have explicit support for text scaling?
> >
> > No, my code does not.  From what I understand now, I guess it
> > needs to worry about that now.  Seems nuts that it should have to,
> > but my understanding is limited...
> 
> Welcome to the brave new world of variable-size characters and other
> Emacs display features that break the "normal" interpretation of
> "columns" and "rows".  The only reliable way of expressing screen
> coordinates in the general case is with pixel values.  

OK, I can understand that.

> posn-col-row just converts that to the frame's canonical
> character units, that's all.  

That's precisely the question raised in this thread (at least
by me, and I think maybe by Dmitry).  Why?  Why doesn't
(shouldn't) it take text scaling into account?  What's the
value of using the frame char size for calculating visual
columns in the presence of text scaling?

> We have other functions which map that to buffer position or
> to other objects if the click event is not on buffer text.

OK.  And I see that Martin pointed to `posn-actual-col-row'.
So I guess I will need to use something like this:

(if (fboundp 'posn-actual-col-row)
    (posn-actual-col-row ...)
  (posn-col-row ...))

That's not a problem for me.

But why?  Why wouldn't it be TRT to have `posn-col-row' return
the visual column, i.e., compensate for text scaling?  Is there
an advantage in using frame char size for it instead?

> The question is what you do with what posn-col-row returns.

See above.  I return the mouse pointer to the clicked position.

I do some stuff, redisplay the (updated list of) candidates in 
*Completions*, raise the frame showing *Completions*, optionally
move that frame to the display edge (if one-window-p, and
respecting a user option), and reposition the mouse pointer
where it was when clicked.

I do the last part because user actions on individual candidates
can intentionally call `select-frame-set-input-focus', which
can position the mouse pointer on a standalone minibuffer frame.
(And that is very unhandy.)

> Given the answer, it should be possible to tell you how to
> get at the information even when such advanced display
> features are in use, or maybe identify some missing Emacs
> functionality.

I guess the answer to that is the workaround code above.

I have no problem with doing that.  I still ask the question:
Why?  What is the advantage of disregarding text scaling here?  
Why/when would anyone who wants the column and row not want
the column and row wrt the apparent char size (e.g. due to
text scaling)?  Why/when would s?he instead want the column
and row as determined by the frame default char size?

Just asking.  Maybe there is a good reason (e.g. a use case).
So far, I don't see it.





       reply	other threads:[~2014-09-18 15:37 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <<864mw529bx.fsf@yandex.ru>
     [not found] ` <<38e6b538-3e76-472a-b371-2e74f9a14bf7@default>
     [not found]   ` <<541A1693.4090009@yandex.ru>
     [not found]     ` <<30fb9ae4-3781-4bc7-a1cf-45bf2a195929@default>
     [not found]       ` <<831tr92cuq.fsf@gnu.org>
2014-09-18 15:37         ` Drew Adams [this message]
2014-09-18 16:39           ` bug#18493: 24.3.93; posn-col-row should take text-scale-mode into account Eli Zaretskii
2014-09-19  1:00           ` Stefan Monnier
     [not found]         ` <<ebad225f-4bc4-426c-a135-8d1d15551fda@default>
     [not found]           ` <<83sijo2893.fsf@gnu.org>
2014-09-18 17:12             ` Drew Adams
2014-09-18 17:22               ` Eli Zaretskii
     [not found] ` <<8338bp2cwf.fsf@gnu.org>
2014-09-18 15:52   ` Drew Adams
2014-09-18 17:00     ` Eli Zaretskii
2014-09-17 22:03 Dmitry
2014-09-17 22:53 ` Drew Adams
2014-09-17 23:17   ` Dmitry Gutov
2014-09-18  1:56     ` Drew Adams
2014-09-18  9:46       ` Dmitry Gutov
2014-09-18 15:37         ` Drew Adams
2014-09-18 16:50           ` Eli Zaretskii
2014-09-18 14:59       ` Eli Zaretskii
2014-09-18  9:32 ` martin rudalics
2014-09-18  9:35   ` Dmitry Gutov
2014-09-18 14:58 ` Eli Zaretskii
2014-09-18 20:55   ` Dmitry Gutov
2014-09-19  1:05     ` Stefan Monnier
2014-09-19  1:07       ` Dmitry Gutov
2014-09-19  6:11     ` Eli Zaretskii
2014-09-19 11:17       ` Dmitry Gutov
2014-09-19 13:22         ` Eli Zaretskii
2014-09-19 18:08           ` Dmitry Gutov
2014-09-19 19:46             ` Eli Zaretskii
2014-09-22  3:59               ` Dmitry Gutov
2014-09-19 14:54         ` Stefan Monnier
2014-09-19 15:43           ` Eli Zaretskii
2014-09-19 17:38             ` Dmitry Gutov
2014-09-20  1:17               ` Stefan Monnier
2014-09-22  3:59                 ` Dmitry Gutov

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=ebad225f-4bc4-426c-a135-8d1d15551fda@default \
    --to=drew.adams@oracle.com \
    --cc=18493@debbugs.gnu.org \
    --cc=dgutov@yandex.ru \
    --cc=eliz@gnu.org \
    /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).