For info, GDK_NATIVE_WINDOWS=1 "fixes" the problem for me, thanks.

Sven Joachim wrote:
> tags 560573 + fixed-upstream patch
> thanks
> 
> On 2009-12-11 10:12 +0100, Eugen Dedu wrote:
> 
>> Package: emacs23
>> Version: 23.1+1-5
>> Severity: normal
>>
>> Starting with debian's 23.1 emacs, when I click on vertical scrollbar
>> to page-up or page-down the buffer, the text in the buffer is
>> highlighted as if I have clicked in the buffer on the same line as the
>> click.  More precisely, if the cursor is on letter A and I make click
>> on scrollbar near the letter B in the buffer (B is the last character
>> of the line), then the text between A and B is selected.
> 
> As a workaround, setting GDK_NATIVE_WINDOWS=1 in the environment before
> starting Emacs should help.
> 
> Here is the patch that got installed upstream¹, which fixes the issue.
> I haven't looked whether it applies cleanly on Emacs 23.1, though.
> 
> --8<---------------cut here---------------start------------->8---
> diff --git a/src/gtkutil.c b/src/gtkutil.c
> index 543b868..e95601c 100644
> --- a/src/gtkutil.c
> +++ b/src/gtkutil.c
> @@ -3371,38 +3371,6 @@ xg_set_toolkit_scroll_bar_thumb (bar, portion, 
> position, whole)
>      }
>  }
>  
> -/* Return non-zero if EVENT is for a scroll bar in frame F.
> -   When the same X window is used for several Gtk+ widgets, we cannot
> -   say for sure based on the X window alone if an event is for the
> -   frame.  This function does additional checks.
> -
> -   Return non-zero if the event is for a scroll bar, zero otherwise.  */
> -
> -int
> -xg_event_is_for_scrollbar (f, event)
> -     FRAME_PTR f;
> -     XEvent *event;
> -{
> -  int retval = 0;
> -
> -  if (f && event->type == ButtonPress)
> -    {
> -      /* Check if press occurred outside the edit widget.  */
> -      GdkDisplay *gdpy = gdk_x11_lookup_xdisplay (FRAME_X_DISPLAY (f));
> -      retval = gdk_display_get_window_at_pointer (gdpy, NULL, NULL)
> -        != f->output_data.x->edit_widget->window;
> -    }
> -  else if (f && (event->type != ButtonRelease || event->type != 
> MotionNotify))
> -    {
> -      /* If we are releasing or moving the scroll bar, it has the grab.  */
> -      retval = gtk_grab_get_current () != 0
> -        && gtk_grab_get_current () != f->output_data.x->edit_widget;
> -    }
> -
> -  return retval;
> -}
> -
> -
>  
>  /***********************************************************************
>                        Tool bar functions
> diff --git a/src/gtkutil.h b/src/gtkutil.h
> index 6d9f6da..faf5395 100644
> --- a/src/gtkutil.h
> +++ b/src/gtkutil.h
> @@ -179,7 +179,7 @@ extern void xg_set_toolkit_scroll_bar_thumb P_ ((struct 
> scroll_bar *bar,
>                                                   int portion,
>                                                   int position,
>                                                   int whole));
> -extern int xg_event_is_for_scrollbar P_ ((FRAME_PTR f, XEvent *event));
> +
>  
>  extern void update_frame_tool_bar P_ ((FRAME_PTR f));
>  extern void free_frame_tool_bar P_ ((FRAME_PTR f));
> diff --git a/src/xterm.c b/src/xterm.c
> index 545f3a5..1ba367c 100644
> --- a/src/xterm.c
> +++ b/src/xterm.c
> @@ -6688,10 +6688,6 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
>              clear_mouse_face (dpyinfo);
>            }
>  
> -#ifdef USE_GTK
> -        if (f && xg_event_is_for_scrollbar (f, &event))
> -          f = 0;
> -#endif
>          if (f)
>            {
>  
> @@ -6828,10 +6824,6 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
>          else
>            f = x_window_to_frame (dpyinfo, event.xbutton.window);
>  
> -#ifdef USE_GTK
> -        if (f && xg_event_is_for_scrollbar (f, &event))
> -          f = 0;
> -#endif
>          if (f)
>            {
>              /* Is this in the tool-bar?  */
> --8<---------------cut here---------------end--------------->8---
> 
> Cheers,
>        Sven
> 
> 
> ¹ 
> http://git.savannah.gnu.org/gitweb/?p=emacs.git;a=commitdiff;h=05caf88f056600a89b434982df4bda33a532b995
> 




--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to