Commit 62c07cc7 authored by Jim Blandy's avatar Jim Blandy

*** empty log message ***

parent b4da00e9
......@@ -63,6 +63,13 @@ extern int (*read_socket_hook) ();
button releases. */
extern int (*mouse_tracking_enable_hook) ( /* int ENABLE */ );
/* When reading from a minibuffer in a different screen, Emacs wants
to shift the highlight from the selected screen to the minibuffer's
screen; under X, this means it lies about where the focus is.
This hook tells the window system code to re-decide where to put
the highlight. */
extern void (*screen_rehighlight_hook) ( /* SCREEN_PTR s */ );
/* If nonzero, send all terminal output characters to this stream also. */
extern FILE *termscript;
......@@ -83,9 +90,13 @@ struct input_event {
enum {
no_event, /* nothing happened. This should never
actually appear in the event queue. */
ascii_keystroke, /* The ASCII code is in .code. Note that
this includes meta-keys, and the modifiers
field of the event is unused. */
ascii_keystroke, /* The ASCII code is in .code.
.screen is the screen in which the key
was typed.
Note that this includes meta-keys, and
the modifiers field of the event
is unused. */
non_ascii_keystroke, /* .code is a number identifying the
function key. A code N represents
a key whose name is
......@@ -93,7 +104,9 @@ struct input_event {
is a table in keyboard.c to which you
should feel free to add missing keys.
.modifiers holds the state of the
modifier keys. */
modifier keys.
.screen is the screen in which the key
was typed. */
mouse_click, /* The button number is in .code.
.modifiers holds the state of the
modifier keys.
......@@ -118,10 +131,12 @@ struct input_event {
should apply to.
.timestamp gives a timestamp (in
milliseconds) for the click. */
#if 0
screen_selected, /* The user has moved the focus to another
screen.
.screen is the screen that should become
selected at the next convenient time. */
#endif
} kind;
Lisp_Object code;
......
......@@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <stdio.h>
#include "config.h"
#include "lisp.h"
......@@ -27,6 +28,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "commands.h"
#include "indent.h"
#include "termchar.h"
#include "termhooks.h"
#include "disptab.h"
Lisp_Object Qwindowp;
......@@ -350,7 +352,6 @@ window_from_coordinates (screen, x, y, modeline_p)
if (found)
{
*modeline_p = (found == -1);
return tem;
}
......@@ -458,6 +459,8 @@ from overriding motion of point in order to display at this exact start.")
w->force_start = Qt;
w->update_mode_line = Qt;
XFASTINT (w->last_modified) = 0;
if (!EQ (window, selected_window))
windows_or_buffers_changed++;
return pos;
}
......@@ -897,7 +900,7 @@ global minibuffer screen is in use and MINIBUF is t, all screens are used.")
return window;
}
DEFUN ("other-window", Fother_window, Sother_window, 1, 1, "p",
DEFUN ("other-window", Fother_window, Sother_window, 1, 2, "p",
"Select the ARG'th different window on this screen.\n\
All windows on current screen are arranged in a cyclic order.\n\
This command selects the window ARG steps away in that order.\n\
......@@ -1392,13 +1395,24 @@ before each command.")
selected_window = window;
#ifdef MULTI_SCREEN
if (XSCREEN (WINDOW_SCREEN (w)) != selected_screen)
/* If we're selecting the minibuffer window of the selected screen,
don't change the selected screen, even if the minibuffer is on
a different screen. */
if (XSCREEN (WINDOW_SCREEN (w)) != selected_screen
&& ! EQ (SCREEN_MINIBUF_WINDOW (selected_screen), window))
{
XSCREEN (WINDOW_SCREEN (w))->selected_window = window;
Fselect_screen (WINDOW_SCREEN (w), Qnil);
}
else
selected_screen->selected_window = window;
/* When using the global minibuffer screen, we want the highlight to
go to the minibuffer's screen, and when we finish, we want the highlight
to return to the original screen. Call the hook to put the highlight
where it belongs. */
if (screen_rehighlight_hook)
(*screen_rehighlight_hook) ();
#endif
record_buffer (w->buffer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment