unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Jared Finder via "Emacs development discussions." <emacs-devel@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: joaotavora@gmail.com, emacs-devel@gnu.org
Subject: Re: Mouse-hovering over 'mouse-face' overlays/regions on a TTY Emacs
Date: Mon, 07 Dec 2020 21:46:28 -0800	[thread overview]
Message-ID: <91a58d2052f11b5f01a6ce41ebe93380@finder.org> (raw)
In-Reply-To: <83blf8cz9l.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 678 bytes --]

On 2020-12-05 2:39 am, Eli Zaretskii wrote:
>> Date: Wed, 02 Dec 2020 00:40:01 -0800
>> From: Jared Finder <jared@finder.org>
>> Cc: joaotavora@gmail.com, emacs-devel@gnu.org
>> 
>> * src/frame.c (Fset_mouse_position, Fset_mouse_pixel_position): Call
>> Fselect_frame in all terminals, independent of defines.
> 
> Maybe I'm missing something, but I don't see how the proposed changes
> cause Fselect_frame to be called fore any display type.

Perhaps I'm using the wrong terminology?  It causes Fselect_frame to be 
called for all terminals, a.k.a *non-graphical* displays, a.k.a. the 
display you get when you specify -nw.

Other comments addressed, patch attached.

   -- MJF

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Remove-incorrect-usage-of-HAVE_GPM.patch --]
[-- Type: text/x-diff; name=0001-Remove-incorrect-usage-of-HAVE_GPM.patch, Size: 5049 bytes --]

From 0998426869aecdf26ae834feeed18c5ca235ef51 Mon Sep 17 00:00:00 2001
From: Jared Finder <jared@finder.org>
Date: Wed, 2 Dec 2020 00:05:59 -0800
Subject: [PATCH] Remove incorrect usage of HAVE_GPM.

* src/frame.c (Fset_mouse_position, Fset_mouse_pixel_position): Call
Fselect_frame and appropriate mouse_moveto function in all terminals,
independent of defines.
* src/term.c (init_tty): Initialize mouse_face_window for all
terminals.
(term_mouse_moveto): Make available even if HAVE_WINDOW_SYSTEM is
defined.
* src/xdisp.c (try_window_id): Call gui_clear_window_mouse_face in all
cases.
---
 src/frame.c     | 59 +++++++++++++++++++++++++++++++------------------
 src/term.c      |  4 +---
 src/termhooks.h |  2 --
 src/xdisp.c     |  3 +--
 4 files changed, 39 insertions(+), 29 deletions(-)

diff --git a/src/frame.c b/src/frame.c
index 17ec455d2d..12e3763fe0 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -2572,23 +2572,30 @@ DEFUN ("set-mouse-position", Fset_mouse_position, Sset_mouse_position, 3, 3, 0,
   int yval = check_integer_range (y, INT_MIN, INT_MAX);
 
   /* I think this should be done with a hook.  */
-#ifdef HAVE_WINDOW_SYSTEM
   if (FRAME_WINDOW_P (XFRAME (frame)))
-    /* Warping the mouse will cause enternotify and focus events.  */
-    frame_set_mouse_position (XFRAME (frame), xval, yval);
-#elif defined MSDOS
-  if (FRAME_MSDOS_P (XFRAME (frame)))
+    {
+#ifdef HAVE_WINDOW_SYSTEM
+      /* Warping the mouse will cause enternotify and focus events.  */
+      frame_set_mouse_position (XFRAME (frame), xval, yval);
+#endif /* HAVE_WINDOW_SYSTEM */
+    }
+  else if (FRAME_MSDOS_P (XFRAME (frame)))
     {
       Fselect_frame (frame, Qnil);
+#ifdef MSDOS
       mouse_moveto (xval, yval);
+#endif /* MSDOS */
     }
-#elif defined HAVE_GPM
-  Fselect_frame (frame, Qnil);
-  term_mouse_moveto (xval, yval);
+  else
+    {
+      Fselect_frame (frame, Qnil);
+#ifdef HAVE_GPM
+      term_mouse_moveto (xval, yval);
 #else
-  (void) xval;
-  (void) yval;
-#endif
+      (void) xval;
+      (void) yval;
+#endif /* HAVE_GPM */
+    }
 
   return Qnil;
 }
@@ -2610,23 +2617,31 @@ DEFUN ("set-mouse-pixel-position", Fset_mouse_pixel_position,
   int yval = check_integer_range (y, INT_MIN, INT_MAX);
 
   /* I think this should be done with a hook.  */
-#ifdef HAVE_WINDOW_SYSTEM
   if (FRAME_WINDOW_P (XFRAME (frame)))
-    /* Warping the mouse will cause enternotify and focus events.  */
-    frame_set_mouse_pixel_position (XFRAME (frame), xval, yval);
-#elif defined MSDOS
-  if (FRAME_MSDOS_P (XFRAME (frame)))
+    {
+      /* Warping the mouse will cause enternotify and focus events.  */
+#ifdef HAVE_WINDOW_SYSTEM
+      frame_set_mouse_pixel_position (XFRAME (frame), xval, yval);
+#endif /* HAVE_WINDOW_SYSTEM */
+    }
+  else if (FRAME_MSDOS_P (XFRAME (frame)))
     {
       Fselect_frame (frame, Qnil);
+#ifdef MSDOS
       mouse_moveto (xval, yval);
+#endif /* MSDOS */
     }
-#elif defined HAVE_GPM
-  Fselect_frame (frame, Qnil);
-  term_mouse_moveto (xval, yval);
+  else
+    {
+      Fselect_frame (frame, Qnil);
+#ifdef HAVE_GPM
+      term_mouse_moveto (xval, yval);
 #else
-  (void) xval;
-  (void) yval;
-#endif
+      (void) xval;
+      (void) yval;
+#endif /* HAVE_GPM */
+
+    }
 
   return Qnil;
 }
diff --git a/src/term.c b/src/term.c
index fee3b55575..2437749d19 100644
--- a/src/term.c
+++ b/src/term.c
@@ -2382,7 +2382,6 @@ DEFUN ("resume-tty", Fresume_tty, Sresume_tty, 0, 1, 0,
 
 #ifdef HAVE_GPM
 
-#ifndef HAVE_WINDOW_SYSTEM
 void
 term_mouse_moveto (int x, int y)
 {
@@ -2396,7 +2395,6 @@ term_mouse_moveto (int x, int y)
   last_mouse_x = x;
   last_mouse_y = y;  */
 }
-#endif /* HAVE_WINDOW_SYSTEM */
 
 /* Implementation of draw_row_with_mouse_face for TTY/GPM.  */
 void
@@ -4246,8 +4244,8 @@ init_tty (const char *name, const char *terminal_type, bool must_succeed)
 
 #ifdef HAVE_GPM
   terminal->mouse_position_hook = term_mouse_position;
-  tty->mouse_highlight.mouse_face_window = Qnil;
 #endif
+  tty->mouse_highlight.mouse_face_window = Qnil;
 
   terminal->kboard = allocate_kboard (Qnil);
   terminal->kboard->reference_count++;
diff --git a/src/termhooks.h b/src/termhooks.h
index 44ab14225f..7ffab7e86f 100644
--- a/src/termhooks.h
+++ b/src/termhooks.h
@@ -367,9 +367,7 @@ #define EVENT_INIT(event) memset (&(event), 0, sizeof (struct input_event))
 #ifdef HAVE_GPM
 #include <gpm.h>
 extern int handle_one_term_event (struct tty_display_info *, Gpm_Event *);
-#ifndef HAVE_WINDOW_SYSTEM
 extern void term_mouse_moveto (int, int);
-#endif
 
 /* The device for which we have enabled gpm support.  */
 extern struct tty_display_info *gpm_tty;
diff --git a/src/xdisp.c b/src/xdisp.c
index 76ef420a36..498e6f1065 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -20779,9 +20779,8 @@ #define GIVE_UP(X) return 0
 		     + window_wants_header_line (w)
 		     + window_internal_height (w));
 
-#if defined (HAVE_GPM) || defined (MSDOS)
 	  gui_clear_window_mouse_face (w);
-#endif
+
 	  /* Perform the operation on the screen.  */
 	  if (dvpos > 0)
 	    {
-- 
2.20.1


  reply	other threads:[~2020-12-08  5:46 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-29 21:33 Mouse-hovering over 'mouse-face' overlays/regions on a TTY Emacs João Távora
2020-11-30  3:28 ` Eli Zaretskii
2020-11-30  8:21   ` João Távora
2020-11-30 16:09     ` Eli Zaretskii
2020-11-30 16:25       ` João Távora
2020-11-30 16:43         ` Eli Zaretskii
2020-11-30 16:47           ` João Távora
2020-11-30 18:05           ` João Távora
2020-11-30 18:24             ` Eli Zaretskii
2020-11-30 18:28               ` João Távora
2020-11-30 18:58                 ` Eli Zaretskii
2020-11-30 19:09                   ` João Távora
2020-11-30 20:07                     ` Stefan Monnier
2020-12-01  7:10                     ` Jared Finder via Emacs development discussions.
2020-12-01 18:20                       ` Eli Zaretskii
2020-12-02  8:40                         ` Jared Finder via Emacs development discussions.
2020-12-05 10:39                           ` Eli Zaretskii
2020-12-08  5:46                             ` Jared Finder via Emacs development discussions. [this message]
2021-01-16  5:31                               ` Jared Finder via Emacs development discussions.
2021-01-16  7:53                                 ` Eli Zaretskii
2021-01-16 13:06                                   ` Eli Zaretskii
2021-01-16 22:27                                     ` jared--- via Emacs development discussions.
2021-01-22 12:20                                       ` Eli Zaretskii
2021-01-22 16:47                                         ` João Távora

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=91a58d2052f11b5f01a6ce41ebe93380@finder.org \
    --to=emacs-devel@gnu.org \
    --cc=eliz@gnu.org \
    --cc=jared@finder.org \
    --cc=joaotavora@gmail.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).