* 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🪟, dealloc): Use window instead of win. (getMouseMotionPart🪟x:y:): Remove, unused. (sendScrollEventAtLoc:fromEvent:): Make Lisp_Object win from window. Fixes: debbugs:18889
This commit is contained in:
parent
fda2bc46a8
commit
b7bf631c80
4 changed files with 53 additions and 67 deletions
|
@ -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).
|
||||
|
|
|
@ -913,8 +913,8 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side
|
|||
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 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side
|
|||
{
|
||||
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");
|
||||
|
|
|
@ -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. */
|
||||
|
|
90
src/nsterm.m
90
src/nsterm.m
|
@ -1902,51 +1902,37 @@ Free a pool and temporary objects it refers to (callable from C)
|
|||
|
||||
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
|
||||
f = dpyinfo->x_focus_frame ? dpyinfo->x_focus_frame : SELECTED_FRAME ();
|
||||
|
||||
if (f && FRAME_NS_P (f))
|
||||
{
|
||||
/* 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;
|
||||
view = FRAME_NS_VIEW (*fp);
|
||||
|
||||
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);
|
||||
|
||||
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 @@ + (CGFloat) scrollerWidth
|
|||
[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 @@ - (void)setFrame: (NSRect)newRect
|
|||
- (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 @@ - (int) checkSamePosition: (int) position portion: (int) portion
|
|||
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;
|
||||
|
|
Loading…
Add table
Reference in a new issue