[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
feature/pgtk 9e56fa9 034/100: Support focus on click event
From: |
Yuuki Harano |
Subject: |
feature/pgtk 9e56fa9 034/100: Support focus on click event |
Date: |
Tue, 24 Nov 2020 08:02:31 -0500 (EST) |
branch: feature/pgtk
commit 9e56fa9853f5d0114b90d69ff43885a80ca8f5bd
Author: Yuuki Harano <masm+github@masm11.me>
Commit: Jeff Walsh <fejfighter@gmail.com>
Support focus on click event
* src/pgtkterm.c (enter_notify_event, leave_notify_event)
(focus_in_event, focus_out_event): support focus on click
focus-on-click な環境に対応。
---
src/pgtkterm.c | 28 ++++++++++++++++++++--------
1 file changed, 20 insertions(+), 8 deletions(-)
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index 7c908a3..fab6e4e 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -5393,7 +5393,11 @@ enter_notify_event(GtkWidget *widget, GdkEvent *event,
gpointer *user_data)
{
PGTK_TRACE("enter_notify_event");
union buffered_input_event inev;
- struct frame *focus_frame =
pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ struct frame *frame =
pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ if (frame == NULL)
+ return FALSE;
+ struct pgtk_display_info *dpyinfo = FRAME_DISPLAY_INFO (frame);
+ struct frame *focus_frame = dpyinfo->x_focus_frame;
int focus_state
= focus_frame ? focus_frame->output_data.pgtk->focus_state : 0;
@@ -5401,10 +5405,12 @@ enter_notify_event(GtkWidget *widget, GdkEvent *event,
gpointer *user_data)
inev.ie.kind = NO_EVENT;
inev.ie.arg = Qnil;
- if (!(focus_state & FOCUS_EXPLICIT))
+ if (event->crossing.detail != GDK_NOTIFY_INFERIOR
+ && event->crossing.focus
+ && ! (focus_state & FOCUS_EXPLICIT))
x_focus_changed (TRUE,
FOCUS_IMPLICIT,
- FRAME_DISPLAY_INFO(focus_frame), focus_frame, &inev);
+ dpyinfo, frame, &inev);
if (inev.ie.kind != NO_EVENT)
evq_enqueue (&inev);
return TRUE;
@@ -5415,7 +5421,11 @@ leave_notify_event(GtkWidget *widget, GdkEvent *event,
gpointer *user_data)
{
PGTK_TRACE("leave_notify_event");
union buffered_input_event inev;
- struct frame *focus_frame =
pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ struct frame *frame =
pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ if (frame == NULL)
+ return FALSE;
+ struct pgtk_display_info *dpyinfo = FRAME_DISPLAY_INFO (frame);
+ struct frame *focus_frame = dpyinfo->x_focus_frame;
int focus_state
= focus_frame ? focus_frame->output_data.pgtk->focus_state : 0;
@@ -5423,10 +5433,12 @@ leave_notify_event(GtkWidget *widget, GdkEvent *event,
gpointer *user_data)
inev.ie.kind = NO_EVENT;
inev.ie.arg = Qnil;
- if (!(focus_state & FOCUS_EXPLICIT))
+ if (event->crossing.detail != GDK_NOTIFY_INFERIOR
+ && event->crossing.focus
+ && ! (focus_state & FOCUS_EXPLICIT))
x_focus_changed (FALSE,
FOCUS_IMPLICIT,
- FRAME_DISPLAY_INFO(focus_frame), focus_frame, &inev);
+ dpyinfo, frame, &inev);
if (inev.ie.kind != NO_EVENT)
evq_enqueue (&inev);
return TRUE;
@@ -5446,7 +5458,7 @@ focus_in_event(GtkWidget *widget, GdkEvent *event,
gpointer *user_data)
inev.ie.kind = NO_EVENT;
inev.ie.arg = Qnil;
- x_focus_changed (TRUE, FOCUS_IMPLICIT,
+ x_focus_changed (TRUE, FOCUS_EXPLICIT,
FRAME_DISPLAY_INFO(frame), frame, &inev);
if (inev.ie.kind != NO_EVENT)
evq_enqueue (&inev);
@@ -5467,7 +5479,7 @@ focus_out_event(GtkWidget *widget, GdkEvent *event,
gpointer *user_data)
inev.ie.kind = NO_EVENT;
inev.ie.arg = Qnil;
- x_focus_changed (FALSE, FOCUS_IMPLICIT,
+ x_focus_changed (FALSE, FOCUS_EXPLICIT,
FRAME_DISPLAY_INFO(frame), frame, &inev);
if (inev.ie.kind != NO_EVENT)
evq_enqueue(&inev);
- feature/pgtk ed1f7d1 008/100: Simplify compilaiton condtion, (continued)
- feature/pgtk ed1f7d1 008/100: Simplify compilaiton condtion, Yuuki Harano, 2020/11/24
- feature/pgtk cdc04b4 010/100: Implement menubar for pgtk emacs, Yuuki Harano, 2020/11/24
- feature/pgtk 85441c9 016/100: Add Stipple support for PGTK, Yuuki Harano, 2020/11/24
- feature/pgtk bfbcb11 026/100: implement set-tool-bar-position and set-sticky, Yuuki Harano, 2020/11/24
- feature/pgtk af5b725 061/100: * src/pgtkmenu.c: change coding style, Yuuki Harano, 2020/11/24
- feature/pgtk e649275 058/100: * src/pgtkterm.c: change coding style, Yuuki Harano, 2020/11/24
- feature/pgtk de7b0da 049/100: use pgtk_menu_set_in_use., Yuuki Harano, 2020/11/24
- feature/pgtk af1e279 073/100: Restore support for terminal only emacs in PGTK (add --with-pgtk), Yuuki Harano, 2020/11/24
- feature/pgtk 8669feb 054/100: Make icons and titles work like on X, Yuuki Harano, 2020/11/24
- feature/pgtk 20dbd4e 069/100: Change coding style, Yuuki Harano, 2020/11/24
- feature/pgtk 9e56fa9 034/100: Support focus on click event,
Yuuki Harano <=
- feature/pgtk 385e85c 038/100: End Resize flickering by copying surface rather than just clearing, Yuuki Harano, 2020/11/24
- feature/pgtk cbd28cd 046/100: improve code readability., Yuuki Harano, 2020/11/24
- feature/pgtk ef67659 045/100: Set screen/display dpi res to make broadway work as expected, Yuuki Harano, 2020/11/24
- feature/pgtk d109dab 059/100: * src/pgtkfns.c: change coding style, Yuuki Harano, 2020/11/24
- feature/pgtk 9eb35f9 033/100: experimental support of tab-bar., Yuuki Harano, 2020/11/24
- feature/pgtk 25cf592 067/100: Change coding style, Yuuki Harano, 2020/11/24
- feature/pgtk e7190d8 075/100: Fix non-English layout does not work, Yuuki Harano, 2020/11/24
- feature/pgtk 28073ba 083/100: Re-implement childframe with emacsgtkfixed, Yuuki Harano, 2020/11/24
- feature/pgtk 6c43496 074/100: Fix font lock is not applied on continued lines, Yuuki Harano, 2020/11/24
- feature/pgtk 9704e23 081/100: Enable GtkIMContext by default, Yuuki Harano, 2020/11/24