[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Modal dialogs won't stop

From: Andreas Höschler
Subject: Re: Modal dialogs won't stop
Date: Tue, 31 Mar 2020 17:57:23 +0000 (UTC)

Hi all,

1) I seem to have trouble with modal dialogs with the current GNUstep (haven't had this problem with the ancient tree I was using since recently). My app simply shows a window with a button. If I click on this button I do

   int result = NSRunAlertPanel(@"Test", @"Some Test", @"OK", nil, nil);

This works exactly one time (panel closes when hitting the OK button). If I do this again the modal dialog is not closed anymore when hitting the OK button and the app hangs (in the modal loop). :-(

Here ist the stack:

#0  0x00007f4ac607c74d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007f4ac6b64cc1 in -[GSRunLoopCtxt pollUntil:within:] (self=0xe43950, _cmd=0x7f4ac6f51b40 <_OBJC_SELECTOR_TABLE+1184>, 
    milliseconds=2147483647, contexts=0xe071e0) at GSRunLoopCtxt.m:391
#2  0x00007f4ac6a7e5be in -[NSRunLoop acceptInputForMode:beforeDate:] (self=0xe047c0, _cmd=0x7f4ac6f51b70 <_OBJC_SELECTOR_TABLE+1232>, 
    mode=0x7f4ac8ad3bc0 <_OBJC_INSTANCE_0>, limit_date=0xe40330) at NSRunLoop.m:1224
#3  0x00007f4ac6a7ea96 in -[NSRunLoop runMode:beforeDate:] (self=0xe047c0, _cmd=0x7f4ac8ac9fa0 <_OBJC_SELECTOR_TABLE+768>, 
    mode=0x7f4ac8ad3bc0 <_OBJC_INSTANCE_0>, date=0xe40330) at NSRunLoop.m:1304
#4  0x00007f4ac865c888 in -[GSDisplayServer(EventOps) getEventMatchingMask:beforeDate:inMode:dequeue:] (self=0xd7db20, 
    _cmd=0x7f4abeb1ec10 <_OBJC_SELECTOR_TABLE+48>, mask=4294967295, limit=0xe40330, mode=0x7f4ac8ad3bc0 <_OBJC_INSTANCE_0>, 
    flag=0 '\000') at GSDisplayServer.m:1034
#5  0x00007f4abe8d2bbd in -[XGServer(X11Ops) getEventMatchingMask:beforeDate:inMode:dequeue:] (self=0xd7db20, 
    _cmd=0x7f4ac8998970 <_OBJC_SELECTOR_TABLE+1648>, mask=4294967295, limit=0xe40330, mode=0x7f4ac8ad3bc0 <_OBJC_INSTANCE_0>, 
    flag=0 '\000') at XGServerEvent.m:2567
#6  0x00007f4ac844e391 in DPSPeekEvent (ctxt=0xd7db20, mask=4294967295, limit=0xe40330, mode=0x7f4ac8ad3bc0 <_OBJC_INSTANCE_0>)
    at ../Headers/Additions/GNUstepGUI/GSDisplayServer.h:207
#7  0x00007f4ac8453af5 in -[NSApplication runModalForWindow:] (self=0xd3b210, _cmd=0x7f4ac898dfa0 <_OBJC_SELECTOR_TABLE+1632>, 
    theWindow=0x12a02a0) at NSApplication.m:1769
#8  0x00007f4ac843b243 in -[GSAlertPanel runModal] (self=0x12a02a0, _cmd=0x7f4ac898e1f0 <_OBJC_SELECTOR_TABLE+2224>) at NSAlert.m:812
#9  0x00007f4ac843d92f in NSRunAlertPanel (title=0x61d320 <_OBJC_INSTANCE_53>, msg=0x61d340 <_OBJC_INSTANCE_54>, 
    defaultButton=0x61d360 <_OBJC_INSTANCE_55>, alternateButton=0x0, otherButton=0x0) at NSAlert.m:1490
#10 0x00000000004084d9 in -[Controller commonWeighting] (self=0xe761e0, _cmd=0xb4ad60) at Controller.m:189
#11 0x00007f4ac39b5e40 in ffi_call_unix64 () from /usr/lib/x86_64-linux-gnu/libffi.so.6
#12 0x00007f4ac39b58ab in ffi_call () from /usr/lib/x86_64-linux-gnu/libffi.so.6
#13 0x00007f4ac6b195e7 in GSFFIInvokeWithTargetAndImp (inv=0x1976fa0, anObject=0xe761e0, imp=0x40849f <-[Controller commonWeighting]>)
    at GSFFIInvocation.m:370
#14 0x00007f4ac6b19a24 in -[GSFFIInvocation invokeWithTarget:] (self=0x1976fa0, _cmd=0x7f4ac6f14d10 <_OBJC_SELECTOR_TABLE+240>, 
    anObject=0xe761e0) at GSFFIInvocation.m:452
#15 0x00007f4ac69fd124 in -[NSInvocation invoke] (self=0x1976fa0, _cmd=0x7f4ac477c1b0 <_OBJC_SELECTOR_TABLE+2480>) at NSInvocation.m:673
#16 0x00007f4ac4536a52 in -[GSMarkupActionConnector performAction] (self=0x1d02160, _cmd=0x7f4ac4788c20 <_OBJC_SELECTOR_TABLE+1984>)
    at GSMarkupConnector.m:360
#17 0x00007f4ac6a3b2e5 in -[NSObject performSelector:] (self=0x1d02160, _cmd=0x7f4ac6eb2710 <_OBJC_SELECTOR_TABLE+432>, 
    aSelector=0x7f4ac4788c20 <_OBJC_SELECTOR_TABLE+1984>) at NSObject.m:1986

Any idea? I am on Ubuntu 16.04 with relatively recent GNUstep sources (2-3 months old) and the default Ubuntu desktop environment.

2) I also discovered the following other phenomena. When running an app under WindowMaker, clicking on the "..." of an NSComboBox does nothing. This works when using the Ubuntu window server though. This is no show stopper for me - like the above mentioned problem - but I would prefer to use WindowMaker if possible. Is anybody actually using WindowMaker with GNUstep and possibly has encountered the same problem?

This looks like a problem in NSRunAlertPanel(). If I do

   if ([NSApp runModalForWindow:mainWin] == NSRunStoppedResponse)
      // ...

everything works as expected. So I can work around this by not using NSRunAlertPanel at all but if anyone knows how to quickly fix this ...

Best wishes,


reply via email to

[Prev in Thread] Current Thread [Next in Thread]