[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r109794: * nsmenu.m (initWithContentR
From: |
Jan D. |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r109794: * nsmenu.m (initWithContentRect:styleMask:backing:defer:): Initialize |
Date: |
Mon, 27 Aug 2012 20:53:10 +0200 |
User-agent: |
Bazaar (2.5.0) |
------------------------------------------------------------
revno: 109794
fixes bug: http://debbugs.gnu.org/12258
committer: Jan D. <address@hidden>
branch nick: trunk
timestamp: Mon 2012-08-27 20:53:10 +0200
message:
* nsmenu.m (initWithContentRect:styleMask:backing:defer:): Initialize
dialog_return.
(windowShouldClose:): Use stop instead of stopModalWithCode.
(clicked:): Ditto, and also set dialog_return.
(timeout_handler:): Use stop instead of abortModal. Send a dummy
event.
(runDialogAt:): Make ret Lisp_Object. Set it from dialog_return when
modal loop returns.
* nsterm.h (NSPanel): New class variable dialog_return.
modified:
src/ChangeLog
src/nsmenu.m
src/nsterm.h
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2012-08-27 17:23:48 +0000
+++ b/src/ChangeLog 2012-08-27 18:53:10 +0000
@@ -1,3 +1,16 @@
+2012-08-27 Jan Djärv <address@hidden>
+
+ * nsterm.h (NSPanel): New class variable dialog_return.
+
+ * nsmenu.m (initWithContentRect:styleMask:backing:defer:): Initialize
+ dialog_return.
+ (windowShouldClose:): Use stop instead of stopModalWithCode.
+ (clicked:): Ditto, and also set dialog_return (Bug#12258).
+ (timeout_handler:): Use stop instead of abortModal. Send a dummy
+ event.
+ (runDialogAt:): Make ret Lisp_Object. Set it from dialog_return when
+ modal loop returns.
+
2012-08-27 Paul Eggert <address@hidden>
* composite.c, data.c, dbusbind.c, dired.c: Use bool for booleans.
=== modified file 'src/nsmenu.m'
--- a/src/nsmenu.m 2012-08-17 21:52:15 +0000
+++ b/src/nsmenu.m 2012-08-27 18:53:10 +0000
@@ -1497,6 +1497,7 @@
FlippedView *contentView;
NSImage *img;
+ dialog_return = Qundefined;
area.origin.x = 3*SPACER;
area.origin.y = 2*SPACER;
area.size.width = ICONSIZE;
@@ -1584,7 +1585,7 @@
- (BOOL)windowShouldClose: (id)sender
{
- [NSApp stopModalWithCode: XHASH (Qnil)]; // FIXME: BIG UGLY HACK!!
+ [NSApp stop:self];
return NO;
}
@@ -1673,7 +1674,11 @@
seltag = [[sellist objectAtIndex: 0] tag];
if (seltag != XHASH (Qundefined)) // FIXME: BIG UGLY HACK!!
- [NSApp stopModalWithCode: seltag];
+ {
+ dialog_return = seltag;
+ [NSApp stop:self];
+ }
+
return self;
}
@@ -1756,13 +1761,27 @@
- (void)timeout_handler: (NSTimer *)timedEntry
{
+ NSEvent *nxev = [NSEvent otherEventWithType: NSApplicationDefined
+ location: NSMakePoint (0, 0)
+ modifierFlags: 0
+ timestamp: 0
+ windowNumber: [[NSApp mainWindow] windowNumber]
+ context: [NSApp context]
+ subtype: 0
+ data1: 0
+ data2: 0];
+
timer_fired = 1;
- [NSApp abortModal];
+ /* We use sto because stopModal/abortModal out of the main loop does not
+ seem to work in 10.6. But as we use stop we must send a real event so
+ the stop is seen and acted upon. */
+ [NSApp stop:self];
+ [NSApp postEvent: nxev atStart: NO];
}
- (Lisp_Object)runDialogAt: (NSPoint)p
{
- NSInteger ret = 0;
+ Lisp_Object ret = Qundefined;
while (popup_activated_flag)
{
@@ -1781,7 +1800,9 @@
forMode: NSModalPanelRunLoopMode];
}
timer_fired = 0;
+ dialog_return = Qundefined;
ret = [NSApp runModalForWindow: self];
+ ret = dialog_return;
if (! timer_fired)
{
if (tmo != nil) [tmo invalidate]; /* Cancels timer */
=== modified file 'src/nsterm.h'
--- a/src/nsterm.h 2012-08-16 06:40:57 +0000
+++ b/src/nsterm.h 2012-08-27 18:53:10 +0000
@@ -196,6 +196,7 @@
NSMatrix *matrix;
int rows, cols;
int timer_fired;
+ Lisp_Object dialog_return;
}
- initFromContents: (Lisp_Object)menu isQuestion: (BOOL)isQ;
- addButton: (char *)str value: (Lisp_Object)val row: (int)row;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r109794: * nsmenu.m (initWithContentRect:styleMask:backing:defer:): Initialize,
Jan D. <=