コード例 #1
0
ファイル: event.c プロジェクト: gameplayer22/DXX-Retro
// Process the first event in queue, sending to the appropriate handler
// This is the new object-oriented system
// Uses the old system for now, but this may change
void event_process(void)
{
    d_event event;
    window *wind = window_get_front();

    timer_update();

    event_poll();	// send input events first

    // Doing this prevents problems when a draw event can create a newmenu,
    // such as some network menus when they report a problem
    if (window_get_front() != wind)
        return;

    event.type = EVENT_WINDOW_DRAW;	// then draw all visible windows
    wind = window_get_first();
    while (wind != NULL)
    {
        window *prev = window_get_prev(wind);
        if (window_is_visible(wind))
            window_send_event(wind, &event);
        if (!window_exists(wind))
        {
            if (!prev) // well there isn't a previous window ...
                break; // ... just bail out - we've done everything for this frame we can.
            wind = window_get_next(prev); // the current window seemed to be closed. so take the next one from the previous which should be able to point to the one after the current closed
        }
        else
            wind = window_get_next(wind);
    }

    gr_flip();
}
コード例 #2
0
ファイル: event.c プロジェクト: gameplayer22/DXX-Retro
void event_send(d_event *event)
{
    window *wind;
    int handled = 0;

    for (wind = window_get_front(); wind != NULL && !handled; wind = window_get_prev(wind))
        if (window_is_visible(wind))
        {
            handled = window_send_event(wind, event);

            if (!window_exists(wind)) // break away if necessary: window_send_event() could have closed wind by now
                break;
            if (window_is_modal(wind))
                break;
        }

    if (!handled)
        call_default_handler(event);
}
コード例 #3
0
ファイル: main.c プロジェクト: johanster/window_lib
DECLARE_TEST( window, sizemove )
{
	window_t* window;
#if FOUNDATION_PLATFORM_MACOSX
	window = window_allocate_from_nswindow( delegate_nswindow() );
#elif FOUNDATION_PLATFORM_IOS
	window = window_allocate_from_uiwindow( delegate_uiwindow() );
#endif
	
	EXPECT_NE( window, 0 );
	EXPECT_TRUE( window_is_open( window ) );

	thread_sleep( 1000 );
	
#if FOUNDATION_PLATFORM_IOS || FOUNDATION_PLATFORM_ANDROID
	EXPECT_TRUE( window_is_maximized( window ) );
#else
	EXPECT_FALSE( window_is_maximized( window ) );
#endif
	
	EXPECT_TRUE( window_is_visible( window ) );
	EXPECT_TRUE( window_has_focus( window ) );
	
	window_maximize( window );
	thread_sleep( 1000 );
	EXPECT_TRUE( window_is_maximized( window ) );
	EXPECT_TRUE( window_has_focus( window ) );

#if !FOUNDATION_PLATFORM_IOS && !FOUNDATION_PLATFORM_ANDROID
	window_restore( window );
	thread_sleep( 1000 );
	EXPECT_FALSE( window_is_maximized( window ) );
	EXPECT_TRUE( window_has_focus( window ) );
#endif
	
	window_maximize( window );
	thread_sleep( 1000 );
	EXPECT_TRUE( window_is_maximized( window ) );
		
#if !FOUNDATION_PLATFORM_IOS && !FOUNDATION_PLATFORM_ANDROID
	window_resize( window, 150, 100 );
	thread_sleep( 1000 );
	EXPECT_EQ( window_width( window ), 150 );
	EXPECT_EQ( window_height( window ), 100 );
	EXPECT_FALSE( window_is_maximized( window ) );
	EXPECT_TRUE( window_has_focus( window ) );
	
	window_move( window, 10, 20 );
	thread_sleep( 1000 );
	EXPECT_EQ( window_position_x( window ), 10 );
	EXPECT_EQ( window_position_y( window ), 20 );
	EXPECT_FALSE( window_is_maximized( window ) );
	EXPECT_TRUE( window_has_focus( window ) );
	
	window_minimize( window );
	thread_sleep( 1000 );
	EXPECT_FALSE( window_is_maximized( window ) );
	EXPECT_FALSE( window_has_focus( window ) );

	window_restore( window );
	thread_sleep( 1000 );
	EXPECT_FALSE( window_is_maximized( window ) );
	EXPECT_FALSE( window_is_minimized( window ) );
	EXPECT_TRUE( window_has_focus( window ) );
	
	window_minimize( window );
	thread_sleep( 1000 );
	EXPECT_FALSE( window_is_maximized( window ) );
	EXPECT_TRUE( window_is_minimized( window ) );
#endif
		
	window_deallocate( window );
	window = 0;
	
	EXPECT_FALSE( window_is_open( window ) );
	
	return 0;
}