diff options
author | Jan Djärv <jan.h.d@swipnet.se> | 2014-10-30 18:23:52 +0100 |
---|---|---|
committer | Jan Djärv <jan.h.d@swipnet.se> | 2014-10-30 18:23:52 +0100 |
commit | b7bf631c809e7dc31ba423ac93bdf30d092f6129 (patch) | |
tree | 40bb74e18b5ac07035222e10abd189b50dba76d8 /src | |
parent | fda2bc46a80aa8c9e2742f6ca149969664c79dc7 (diff) | |
download | emacs-b7bf631c809e7dc31ba423ac93bdf30d092f6129.tar.gz |
* nsfns.m (x_icon): icon_top/left is int.
* nsterm.h (EmacsScroller): Replace Lisp_Object win with
struct window*.
Remove getMouseMotionPart.
(ns_output): Make icon_top/left int.
* nsterm.m (ns_mouse_position): Remove unused code.
(initFrame:window:, dealloc): Use window instead of win.
(getMouseMotionPart:window:x:y:): Remove, unused.
(sendScrollEventAtLoc:fromEvent:): Make Lisp_Object win from window.
Fixes: debbugs:18889
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 14 | ||||
-rw-r--r-- | src/nsfns.m | 8 | ||||
-rw-r--r-- | src/nsterm.h | 8 | ||||
-rw-r--r-- | src/nsterm.m | 90 |
4 files changed, 53 insertions, 67 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 1fb2c7b00a1..a66026fa091 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,17 @@ +2014-10-30 Jan Djärv <jan.h.d@swipnet.se> + + * nsterm.h (EmacsScroller): Replace Lisp_Object win with + struct window* (Bug#18889). + Remove getMouseMotionPart. + (ns_output): Make icon_top/left int. + + * nsfns.m (x_icon): icon_top/left is int. + + * nsterm.m (ns_mouse_position): Remove unused code. + (initFrame:window:, dealloc): Use window instead of win. + (getMouseMotionPart:window:x:y:): Remove, unused. + (sendScrollEventAtLoc:fromEvent:): Make Lisp_Object win from window. + 2014-10-30 Samuel Bronson <naesten@gmail.com> * unexmacosx.c (copy_data_segment): Port to GCC 4.6+ (Bug#9927). diff --git a/src/nsfns.m b/src/nsfns.m index 58746aed9fa..9d9f5416c86 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -913,8 +913,8 @@ x_icon (struct frame *f, Lisp_Object parms) Lisp_Object icon_x, icon_y; struct ns_display_info *dpyinfo = check_ns_display_info (Qnil); - f->output_data.ns->icon_top = Qnil; - f->output_data.ns->icon_left = Qnil; + f->output_data.ns->icon_top = -1; + f->output_data.ns->icon_left = -1; /* Set the position of the icon. */ icon_x = x_get_arg (dpyinfo, parms, Qicon_left, 0, 0, RES_TYPE_NUMBER); @@ -923,8 +923,8 @@ x_icon (struct frame *f, Lisp_Object parms) { CHECK_NUMBER (icon_x); CHECK_NUMBER (icon_y); - f->output_data.ns->icon_top = icon_y; - f->output_data.ns->icon_left = icon_x; + f->output_data.ns->icon_top = XINT (icon_y); + f->output_data.ns->icon_left = XINT (icon_x); } else if (!EQ (icon_x, Qunbound) || !EQ (icon_y, Qunbound)) error ("Both left and top icon corners of icon must be specified"); diff --git a/src/nsterm.h b/src/nsterm.h index 8c3e4e5c314..a6081e8da57 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -393,7 +393,7 @@ typedef float EmacsCGFloat; @interface EmacsScroller : NSScroller { - Lisp_Object win; + struct window *window; struct frame *frame; NSResponder *prevResponder; @@ -418,8 +418,6 @@ typedef float EmacsCGFloat; - setPosition: (int) position portion: (int) portion whole: (int) whole; - (int) checkSamePosition: (int)position portion: (int)portion whole: (int)whole; -- (void) getMouseMotionPart: (int *)part window: (Lisp_Object *)window - x: (Lisp_Object *)x y: ( Lisp_Object *)y; - (void) sendScrollEventAtLoc: (float)loc fromEvent: (NSEvent *)e; - repeatScroll: (NSTimer *)sender; - condemn; @@ -685,8 +683,8 @@ struct ns_output value contains an ID of the fontset, else -1. */ int fontset; /* only used with font_backend */ - Lisp_Object icon_top; - Lisp_Object icon_left; + int icon_top; + int icon_left; /* The size of the extra width currently allotted for vertical scroll bars, in pixels. */ diff --git a/src/nsterm.m b/src/nsterm.m index 833b8e389a9..45c6214f0d0 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -1902,51 +1902,37 @@ ns_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window, block_input (); - if (dpyinfo->last_mouse_scroll_bar != nil && insist == 0) - { - /* TODO: we do not use this path at the moment because drag events will - go directly to the EmacsScroller. Leaving code in for now. */ - [dpyinfo->last_mouse_scroll_bar - getMouseMotionPart: (int *)part window: bar_window x: x y: y]; - if (time) - *time = dpyinfo->last_mouse_movement_time; - dpyinfo->last_mouse_scroll_bar = nil; - } + /* Clear the mouse-moved flag for every frame on this display. */ + FOR_EACH_FRAME (tail, frame) + if (FRAME_NS_P (XFRAME (frame)) + && FRAME_NS_DISPLAY (XFRAME (frame)) == FRAME_NS_DISPLAY (*fp)) + XFRAME (frame)->mouse_moved = 0; + + dpyinfo->last_mouse_scroll_bar = nil; + if (dpyinfo->last_mouse_frame + && FRAME_LIVE_P (dpyinfo->last_mouse_frame)) + f = dpyinfo->last_mouse_frame; else - { - /* Clear the mouse-moved flag for every frame on this display. */ - FOR_EACH_FRAME (tail, frame) - if (FRAME_NS_P (XFRAME (frame)) - && FRAME_NS_DISPLAY (XFRAME (frame)) == FRAME_NS_DISPLAY (*fp)) - XFRAME (frame)->mouse_moved = 0; + f = dpyinfo->x_focus_frame ? dpyinfo->x_focus_frame : SELECTED_FRAME (); - dpyinfo->last_mouse_scroll_bar = nil; - if (dpyinfo->last_mouse_frame - && FRAME_LIVE_P (dpyinfo->last_mouse_frame)) - f = dpyinfo->last_mouse_frame; - else - f = dpyinfo->x_focus_frame ? dpyinfo->x_focus_frame - : SELECTED_FRAME (); - - if (f && FRAME_NS_P (f)) - { - view = FRAME_NS_VIEW (*fp); + if (f && FRAME_NS_P (f)) + { + view = FRAME_NS_VIEW (*fp); - position = [[view window] mouseLocationOutsideOfEventStream]; - position = [view convertPoint: position fromView: nil]; - remember_mouse_glyph (f, position.x, position.y, - &dpyinfo->last_mouse_glyph); + position = [[view window] mouseLocationOutsideOfEventStream]; + position = [view convertPoint: position fromView: nil]; + remember_mouse_glyph (f, position.x, position.y, + &dpyinfo->last_mouse_glyph); /*fprintf (stderr, "ns_mouse_position: %.0f, %.0f\n", position.x, position.y); */ - if (bar_window) *bar_window = Qnil; - if (part) *part = 0; /*scroll_bar_handle; */ + if (bar_window) *bar_window = Qnil; + if (part) *part = 0; /*scroll_bar_handle; */ - if (x) XSETINT (*x, lrint (position.x)); - if (y) XSETINT (*y, lrint (position.y)); - if (time) - *time = dpyinfo->last_mouse_movement_time; - *fp = f; - } + if (x) XSETINT (*x, lrint (position.x)); + if (y) XSETINT (*y, lrint (position.y)); + if (time) + *time = dpyinfo->last_mouse_movement_time; + *fp = f; } unblock_input (); @@ -7121,13 +7107,13 @@ if (cols > 0 && rows > 0) [self setAutoresizingMask: NSViewMinXMargin | NSViewHeightSizable]; #endif - win = nwin; + window = XWINDOW (nwin); condemned = NO; pixel_height = NSHeight (r); if (pixel_height == 0) pixel_height = 1; min_portion = 20 / pixel_height; - frame = XFRAME (XWINDOW (win)->frame); + frame = XFRAME (window->frame); if (FRAME_LIVE_P (frame)) { int i; @@ -7165,8 +7151,9 @@ if (cols > 0 && rows > 0) - (void)dealloc { NSTRACE (EmacsScroller_dealloc); - if (!NILP (win)) - wset_vertical_scroll_bar (XWINDOW (win), Qnil); + if (window) + wset_vertical_scroll_bar (window, Qnil); + window = 0; [super dealloc]; } @@ -7265,30 +7252,17 @@ if (cols > 0 && rows > 0) return self; } -/* FIXME: unused at moment (see ns_mouse_position) at the moment because - drag events will go directly to the EmacsScroller. Leaving in for now. */ --(void)getMouseMotionPart: (int *)part window: (Lisp_Object *)window - x: (Lisp_Object *)x y: ( Lisp_Object *)y -{ - *part = last_hit_part; - *window = win; - XSETINT (*y, pixel_height); - if ([self floatValue] > 0.999F) - XSETINT (*x, pixel_height); - else - XSETINT (*x, pixel_height * [self floatValue]); -} - - /* set up emacs_event */ - (void) sendScrollEventAtLoc: (float)loc fromEvent: (NSEvent *)e { + Lisp_Object win; if (!emacs_event) return; emacs_event->part = last_hit_part; emacs_event->code = 0; emacs_event->modifiers = EV_MODIFIERS (e) | down_modifier; + XSETWINDOW (win, window); emacs_event->frame_or_window = win; emacs_event->timestamp = EV_TIMESTAMP (e); emacs_event->kind = SCROLL_BAR_CLICK_EVENT; |