Mac OS X - Canvas doesn't redraw after RequestFile
Monkey Targets Forums/Desktop/Mac OS X - Canvas doesn't redraw after RequestFile| 
 | ||
| Seems like something is blocking the canvas from redrawing after you called RequestFile. I could reproduce it with the sample below. Click to open the file dialog. After that, the canvas is "dead". Mac OS X GlfW Target Import mojo2
Import brl.requesters
Class MyApp Extends App
	Field canvas:Canvas
	Field txt: String = "Hello World"
    Method OnCreate()
    	canvas=New Canvas
  
    End
    
    Method OnUpdate()
    	If MouseHit(MOUSE_LEFT) Then
	      Local filter:="Image Files:png,jpg,bmp;Text Files:txt;All Files:*"
	        Local file:=RequestFile( "Select graphic file to open",filter )
	        If file txt = file
    	End
    End
    
	Method OnRender()
	
		canvas.Clear 0,0,1
		
		canvas.SetBlendMode 3
		canvas.SetColor 0,0,0,.5
		canvas.DrawText txt,DeviceWidth/2+2,DeviceHeight/2+2,.5,.5
		
		canvas.SetBlendMode 1
		canvas.SetColor 1,1,0,1
		canvas.DrawText txt,DeviceWidth/2,DeviceHeight/2,.5,.5
		
		canvas.SetColor(1,0,0)
		canvas.DrawRect(MouseX, MouseY, 32, 32)
		
		canvas.Flush
	End
            
End
Function Main()
    New MyApp
End | 
| 
 | ||
| You can solve this (and I think it may be only solution) by calling SetUpdateRate in OnCreate. | 
| 
 | ||
| My program already sets the update rate on create but it doesn't work. It doesn't help in the sample program, too. | 
| 
 | ||
| Apologies Ratchet, I didn't test before posting. I have now on Sierra with Monkey-X 85e and your code works as is without the problem you describe. | 
| 
 | ||
| I'm using 86e on Yosemite. | 
| 
 | ||
| I will upgrade and report back. | 
| 
 | ||
| Tested with 87a (built from source after unsuccessful attempt installing 86e) and also works without issue so I suspect this is a Yosemite specific issue. | 
| 
 | ||
| I tested it on Snow Leopard. There I got another behavior: I can't close the file dialog no matter if I click Open, Cancel or press Escape. | 
| 
 | ||
| Unfortunately I don't have access to any legacy Macs. If you run from console you may be able to capture some output that helps fix this issue. %appname%.app/Contents/MacOS/%appname% Having a quick look at the source, it might be worth trying the following mod to comment out a questionable API call in modules/brl/native/requester.cpp[190] 
static void beginPanel(){
	keyWin=[NSApp keyWindow];
//	if( !keyWin ) [NSApp activateIgnoringOtherApps:YES];
}
Another test would be to try triggering the requester from a key press and not a mouse down or key down event (to avoid having the requester open before the up event is properly handled by the app). | 
| 
 | ||
| Commenting the line does the job on Yosemite. I didn't test it on Snow Leopard because I don't need it there. | 
| 
 | ||
| The problem on Snow Leopard is still the same: I can't close the file dialog no matter if I click Open, Cancel or press Escape. And now I need this on Snow Leopard after all. And Mark isn't responding to my bug report I've send to him. | 
| 
 | ||
| Weird: On Yosemite I got the same behavior like on Snow Leopard now. I can't close the file dialog no matter if I click Open, Cancel or press Escape. I don't know what's different now. | 
| 
 | ||
| You may want to try running your app from command line in case the OS is emitting any helpful warnings. | 
| 
 | ||
| The command line says nothing :( |