[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/xterm.c
From: |
Kim F . Storm |
Subject: |
[Emacs-diffs] Changes to emacs/src/xterm.c |
Date: |
Tue, 11 Oct 2005 18:37:02 -0400 |
Index: emacs/src/xterm.c
diff -c emacs/src/xterm.c:1.879 emacs/src/xterm.c:1.880
*** emacs/src/xterm.c:1.879 Mon Oct 10 22:54:19 2005
--- emacs/src/xterm.c Tue Oct 11 22:37:01 2005
***************
*** 3582,3589 ****
static XMotionEvent last_mouse_motion_event;
static Lisp_Object last_mouse_motion_frame;
- static void remember_mouse_glyph P_ ((struct frame *, int, int));
-
static void
note_mouse_movement (frame, event)
FRAME_PTR frame;
--- 3582,3587 ----
***************
*** 3610,3616 ****
last_mouse_scroll_bar = Qnil;
note_mouse_highlight (frame, event->x, event->y);
/* Remember which glyph we're now on. */
! remember_mouse_glyph (frame, event->x, event->y);
}
}
--- 3608,3614 ----
last_mouse_scroll_bar = Qnil;
note_mouse_highlight (frame, event->x, event->y);
/* Remember which glyph we're now on. */
! remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph);
}
}
***************
*** 3630,3727 ****
}
- static int glyph_rect P_ ((struct frame *f, int, int, XRectangle *));
-
-
- /* Try to determine frame pixel position and size of the glyph under
- frame pixel coordinates X/Y on frame F . Return the position and
- size in *RECT. Value is non-zero if we could compute these
- values. */
-
- static int
- glyph_rect (f, x, y, rect)
- struct frame *f;
- int x, y;
- XRectangle *rect;
- {
- Lisp_Object window;
- struct window *w;
- struct glyph_row *r, *end_row;
- enum window_part part;
-
- window = window_from_coordinates (f, x, y, &part, &x, &y, 0);
- if (NILP (window))
- return 0;
-
- w = XWINDOW (window);
- r = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
- end_row = r + w->current_matrix->nrows - 1;
-
- if (part != ON_TEXT)
- return 0;
-
- for (; r < end_row && r->enabled_p; ++r)
- {
- if (r->y >= y)
- {
- struct glyph *g = r->glyphs[TEXT_AREA];
- struct glyph *end = g + r->used[TEXT_AREA];
- int gx = r->x;
- while (g < end && gx < x)
- gx += g->pixel_width, ++g;
- if (g < end)
- {
- rect->width = g->pixel_width;
- rect->height = r->height;
- rect->x = WINDOW_TO_FRAME_PIXEL_X (w, gx);
- rect->y = WINDOW_TO_FRAME_PIXEL_Y (w, r->y);
- return 1;
- }
- break;
- }
- }
-
- return 0;
- }
-
-
- /* Remember which glyph the mouse is over.
- */
- static void
- remember_mouse_glyph (f1, win_x, win_y)
- FRAME_PTR f1;
- int win_x, win_y;
- {
- int width, height, gx, gy;
-
- /* Try getting the rectangle of the actual glyph. */
- if (!glyph_rect (f1, win_x, win_y, &last_mouse_glyph))
- {
- /* If there is no glyph under the mouse, then we divide the screen
- into a grid of the smallest glyph in the frame, and use that
- as our "glyph". */
- width = FRAME_SMALLEST_CHAR_WIDTH (f1);
- height = FRAME_SMALLEST_FONT_HEIGHT (f1);
- gx = win_x;
- gy = win_y;
-
- /* Arrange for the division in FRAME_PIXEL_X_TO_COL etc. to
- round down even for negative values. */
- if (gx < 0)
- gx -= width - 1;
- if (gy < 0)
- gy -= height - 1;
-
- gx = gx / width * width;
- gy = gy / width * width;
-
- last_mouse_glyph.width = width;
- last_mouse_glyph.height = height;
- last_mouse_glyph.x = gx;
- last_mouse_glyph.y = gy;
- }
- }
-
/* Return the current position of the mouse.
*FP should be a frame which indicates which display to ask about.
--- 3628,3633 ----
***************
*** 3909,3915 ****
on it, i.e. into the same rectangles that matrices on
the frame are divided into. */
! remember_mouse_glyph (f1, win_x, win_y);
*bar_window = Qnil;
*part = 0;
--- 3815,3821 ----
on it, i.e. into the same rectangles that matrices on
the frame are divided into. */
! remember_mouse_glyph (f1, win_x, win_y, &last_mouse_glyph);
*bar_window = Qnil;
*part = 0;
- [Emacs-diffs] Changes to emacs/src/xterm.c, YAMAMOTO Mitsuharu, 2005/10/07
- [Emacs-diffs] Changes to emacs/src/xterm.c, Jason Rumney, 2005/10/10
- [Emacs-diffs] Changes to emacs/src/xterm.c, Kim F . Storm, 2005/10/10
- [Emacs-diffs] Changes to emacs/src/xterm.c,
Kim F . Storm <=
- [Emacs-diffs] Changes to emacs/src/xterm.c, YAMAMOTO Mitsuharu, 2005/10/12
- [Emacs-diffs] Changes to emacs/src/xterm.c, Kim F . Storm, 2005/10/12
- [Emacs-diffs] Changes to emacs/src/xterm.c, YAMAMOTO Mitsuharu, 2005/10/12
- [Emacs-diffs] Changes to emacs/src/xterm.c, Kim F . Storm, 2005/10/13
- [Emacs-diffs] Changes to emacs/src/xterm.c, Kim F . Storm, 2005/10/20
- [Emacs-diffs] Changes to emacs/src/xterm.c, Jan Djärv, 2005/10/23
- [Emacs-diffs] Changes to emacs/src/xterm.c, Kenichi Handa, 2005/10/24
- [Emacs-diffs] Changes to emacs/src/xterm.c, Kim F . Storm, 2005/10/24