소스 검색

Cleanups.

Mark Sibly 9 년 전
부모
커밋
590a733845
2개의 변경된 파일35개의 추가작업 그리고 46개의 파일을 삭제
  1. 20 35
      modules/mojo/app/app.monkey2
  2. 15 11
      modules/mojo/app/window.monkey2

+ 20 - 35
modules/mojo/app/app.monkey2

@@ -71,6 +71,13 @@ Class AppInstance
 	
 	#end	
 	Field MouseEventFilter:Void( event:MouseEvent )
+	
+	#rem monkeydoc Raw SDL_Event filter.
+	
+	The filter is called for all SDL events before mojo processes them.
+	
+	#end
+	Field SdlEventFilter:Void( event:SDL_Event Ptr )
 
 	#rem monkeydoc Create a new app instance.
 	#end
@@ -569,8 +576,6 @@ Class AppInstance
 	Field _modalView:View
 	Field _modalStack:=New Stack<View>
 	
-	Field _polling:Bool
-	
 	Method UpdateFPS()
 	
 		_fpsFrames+=1
@@ -587,24 +592,18 @@ Class AppInstance
 	
 	Method UpdateEvents()
 	
-		Local event:SDL_Event
-
-		_polling=True
-		
 		Mouse.Update()
 		
 		Keyboard.Update()
 		
+		Local event:SDL_Event
+
 		While SDL_PollEvent( Varptr event )
 		
-			Keyboard.SendEvent( Varptr event )
-			
 			DispatchEvent( Varptr event )
 			
 		Wend
 		
-		_polling=False
-		
 		Local idle:=Idle
 		Idle=Null
 		idle()
@@ -669,6 +668,10 @@ Class AppInstance
 	
 	Method DispatchEvent( event:SDL_Event Ptr )
 	
+		SdlEventFilter( event )
+	
+		Keyboard.SendEvent( event )
+	
 		Select event->type
 		
 #If __TARGET__="macos"
@@ -944,29 +947,17 @@ Class AppInstance
 			UpdateWindows()
 			
 		Case SDL_WINDOWEVENT_MAXIMIZED
-		
-			SendWindowEvent( EventType.WindowMaximized )
 			
-			SendWindowEvent( EventType.WindowResized )
-				
-			UpdateWindows()
+			SendWindowEvent( EventType.WindowMaximized )
 			
 		Case SDL_WINDOWEVENT_MINIMIZED
 		
 			SendWindowEvent( EventType.WindowMinimized )
 			
-			SendWindowEvent( EventType.WindowResized )
-				
-			UpdateWindows()
-			
 		Case SDL_WINDOWEVENT_RESTORED
 		
 			SendWindowEvent( EventType.WindowRestored )
 			
-			SendWindowEvent( EventType.WindowResized )
-				
-			UpdateWindows()
-			
 		Case SDL_WINDOWEVENT_EXPOSED
 		
 			RequestRender()
@@ -1004,12 +995,16 @@ Class AppInstance
 			
 			Case SDL_WINDOWEVENT_MOVED
 			
+				SdlEventFilter( event )
+	
 				SendWindowEvent( EventType.WindowMoved )
 			
 				Return 0
 					
 			Case SDL_WINDOWEVENT_RESIZED
 			
+				SdlEventFilter( event )
+	
 				SendWindowEvent( EventType.WindowResized )
 				
 				UpdateWindows()
@@ -1017,31 +1012,21 @@ Class AppInstance
 				Return 0
 				
 			Case SDL_WINDOWEVENT_MAXIMIZED
-			
-				SendWindowEvent( EventType.WindowResized )
 				
 				SendWindowEvent( EventType.WindowMaximized )
 				
-				UpdateWindows()
-			
 				Return 0
 				
 			Case SDL_WINDOWEVENT_MINIMIZED
 			
-				SendWindowEvent( EventType.WindowResized )
-				
 				SendWindowEvent( EventType.WindowMinimized )
 				
-				UpdateWindows()
-			
+				Return 0
+				
 			Case SDL_WINDOWEVENT_RESTORED
 			
-				SendWindowEvent( EventType.WindowResized )
-				
 				SendWindowEvent( EventType.WindowRestored )
 				
-				UpdateWindows()
-			
 				Return 0
 			End
 

+ 15 - 11
modules/mojo/app/window.monkey2

@@ -177,13 +177,7 @@ Class Window Extends View
 	
 		LayoutWindow()
 		
-		If render 
-			If _maxfudge
-				_maxfudge-=1
-				App.RequestRender()
-			Endif
-			RenderWindow()
-		Endif
+		If render RenderWindow()
 	End
 	
 	'***** INTERNAL *****
@@ -267,17 +261,22 @@ Class Window Extends View
 		
 			App.Terminate()
 			
-		Case EventType.WindowMoved
-		
 		Case EventType.WindowResized
 		
 			App.RequestRender()
 			
 		Case EventType.WindowGainedFocus
 		
-			'Need to do this for KDE on linux...
-			App.RequestRender()
+			App.RequestRender()		'Need to do this for KDE on linux...
+		
+		Case EventType.WindowMoved
+		
+		Case EventType.WindowMaximized
 		
+		Case EventType.WindowMinimized
+		
+		Case EventType.WindowRestored
+			
 		Case EventType.WindowLostFocus
 		
 		End
@@ -406,6 +405,11 @@ Class Window Extends View
 	#end
 	Method RenderWindow()
 	
+		If _maxfudge
+			_maxfudge-=1
+			App.RequestRender()
+		Endif
+
 		SDL_GL_MakeCurrent( _sdlWindow,_sdlGLContext )
 
 		SDL_GL_SetSwapInterval( _swapInterval )