emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: address@hidden: [21.2.90]: Lesstif menu placement after frame resize


From: Jan D.
Subject: Re: address@hidden: [21.2.90]: Lesstif menu placement after frame resize]
Date: Thu, 3 Oct 2002 20:02:41 +0200 (CEST)

> Are there any X wizards out there who might be able to
> investigate this?
> 
> ------- Start of forwarded message -------
> Envelope-to: address@hidden
> Delivery-date: Thu, 19 Sep 2002 09:29:43 -0400
> X-VirusChecked: Checked
> From: "Marshall, Simon" <address@hidden>
> To: 'Emacs Pretest Bug' <address@hidden>
> Subject: [21.2.90]: Lesstif menu placement after frame resize
> Date: Thu, 19 Sep 2002 14:29:34 +0100
> X-Spam-Status: No, hits=1.1 required=5.0
>       tests=DOUBLE_CAPSWORD
>       version=2.31
> X-Spam-Level: *
> 
> With the above build configuration, start emacs -q.
> Open the Tools menu; it drops down below the Tools menu name.
> The menu is top left aligned with the bottom left of the name.  OK.
> Resize the frame (wider or smaller) from the left edge.
> Open the Tools menu.
> 
> Now it drops down below where the Tools menu name used to be, not
> where it is following the resize.
> 
> In case it's relevant, this is with Solaris CDE 1.2 via Exceed 6.2.
> It applies to any of the menus, including Help.

Yes, this only happens with CDE to my knowledge.  It is because a workaround
for bad ConfigureNotify events that doesn't take into account position
changes because of resize.  This bug is at least as old as Emacs 21.1
(the oldest I got), but could be older.

I've checked in this fix in CVS.  Should it go in RC also?

        Jan D.

Index: xterm.c
*** xterm.c.~1.753.~    2002-10-03 19:25:46.000000000 +0200
--- xterm.c     2002-10-03 19:44:17.000000000 +0200
***************
*** 11179,11186 ****
                     in the emacs widget, which messes up Motif menus.  */
                  if (event.xconfigure.x == 0 && event.xconfigure.y == 0)
                    {
!                     event.xconfigure.x = f->output_data.x->widget->core.x;
!                     event.xconfigure.y = f->output_data.x->widget->core.y;
                    }
  #endif /* USE_MOTIF */
                }
--- 11179,11202 ----
                     in the emacs widget, which messes up Motif menus.  */
                  if (event.xconfigure.x == 0 && event.xconfigure.y == 0)
                    {
!                       Window child;
!                     int count;
! 
!                     /* We can get a ConfigureNotify because of a resize,
!                        so we can't just take x and y from the widget.
!                        Since this event may come on something else than
!                        the top level window,  we can't use x_real_position
!                        either.  So we get the root window x/y for 0/0 in
!                        the window in the event. */
!                     count = x_catch_errors (FRAME_X_DISPLAY (f));
!                       XTranslateCoordinates (FRAME_X_DISPLAY (f),
!                                              event.xconfigure.window,
!                                              FRAME_X_DISPLAY_INFO 
(f)->root_window,
!                                              0, 0,
!                                              &event.xconfigure.x,
!                                              &event.xconfigure.y,
!                                              &child);
!                     x_uncatch_errors (FRAME_X_DISPLAY (f), count);
                    }
  #endif /* USE_MOTIF */
                }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]