fix Gdk-CRITICAL **: IA__gdk_window_get_window_type: assertion 'GDK_IS_WINDOW (window)' failed

This commit is contained in:
Garux 2020-06-05 23:49:04 +03:00
parent 3e7ee32ded
commit 35309c8c6c
7 changed files with 14 additions and 42 deletions

View File

@ -313,12 +313,10 @@ EMessageBoxReturn DoMessageBox( const char* lpText, const char* lpCaption, EMess
gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER_ON_PARENT );
gtk_widget_show( window );
gtk_grab_add( window );
while ( loop )
gtk_main_iteration();
gtk_grab_remove( window );
gtk_widget_destroy( window );
return ret;
@ -397,9 +395,9 @@ EMessageBoxReturn DoIntersectBox( IntersectRS* rs ){
// ---- /vbox ----
gtk_window_set_modal( GTK_WINDOW( window ), TRUE );
gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER );
gtk_widget_show( window );
gtk_grab_add( window );
while ( loop )
gtk_main_iteration();
@ -414,7 +412,6 @@ EMessageBoxReturn DoIntersectBox( IntersectRS* rs ){
rs->bUseDetail = gtk_toggle_button_get_active( (GtkToggleButton*)check1 ) ? true : false;
rs->bDuplicateOnly = gtk_toggle_button_get_active( (GtkToggleButton*)check2 ) ? true : false;
gtk_grab_remove( window );
gtk_widget_destroy( window );
return ret;
@ -561,7 +558,6 @@ EMessageBoxReturn DoPolygonBox( PolygonRS* rs ){
gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER_ON_PARENT );
gtk_window_set_modal( GTK_WINDOW( window ), TRUE );
gtk_widget_show( window );
gtk_grab_add( window );
bool dialogError = TRUE;
while ( dialogError )
@ -589,7 +585,6 @@ EMessageBoxReturn DoPolygonBox( PolygonRS* rs ){
}
}
gtk_grab_remove( window );
gtk_widget_destroy( window );
return ret;
@ -787,9 +782,9 @@ EMessageBoxReturn DoBuildStairsBox( BuildStairsRS* rs ){
ret = eIDCANCEL;
// +djbob: need our "little" modal loop mars :P
gtk_window_set_modal( GTK_WINDOW( window ), TRUE );
gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER );
gtk_widget_show( window );
gtk_grab_add( window );
bool dialogError = TRUE;
while ( dialogError )
@ -835,7 +830,6 @@ EMessageBoxReturn DoBuildStairsBox( BuildStairsRS* rs ){
}
}
gtk_grab_remove( window );
gtk_widget_destroy( window );
return ret;
@ -1028,9 +1022,9 @@ EMessageBoxReturn DoDoorsBox( DoorRS* rs ){
// ----------------- //
//+djbob
gtk_window_set_modal( GTK_WINDOW( window ), TRUE );
gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER );
gtk_widget_show( window );
gtk_grab_add( window );
while ( loop )
gtk_main_iteration();
@ -1050,7 +1044,6 @@ EMessageBoxReturn DoDoorsBox( DoorRS* rs ){
rs->nOrientation = DIRECTION_EW;
}
gtk_grab_remove( window );
gtk_widget_destroy( window );
return ret;
@ -1195,9 +1188,9 @@ EMessageBoxReturn DoPathPlotterBox( PathPlotterRS* rs ){
// ----------------- //
gtk_window_set_modal( GTK_WINDOW( window ), TRUE );
gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER );
gtk_widget_show( window );
gtk_grab_add( window );
bool dialogError = TRUE;
while ( dialogError )
@ -1226,7 +1219,6 @@ EMessageBoxReturn DoPathPlotterBox( PathPlotterRS* rs ){
}
}
gtk_grab_remove( window );
gtk_widget_destroy( window );
return ret;
@ -1287,14 +1279,13 @@ EMessageBoxReturn DoCTFColourChangeBox(){
// ---- /vbox ----
gtk_window_set_modal( GTK_WINDOW( window ), TRUE );
gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER );
gtk_widget_show( window );
gtk_grab_add( window );
while ( loop )
gtk_main_iteration();
gtk_grab_remove( window );
gtk_widget_destroy( window );
return ret;
@ -1570,7 +1561,6 @@ EMessageBoxReturn DoResetTextureBox( ResetTextureRS* rs ){
gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER_ON_PARENT );
gtk_widget_show( window );
gtk_grab_add( window );
Update_TextureReseter();
@ -1627,7 +1617,6 @@ EMessageBoxReturn DoResetTextureBox( ResetTextureRS* rs ){
}
}
gtk_grab_remove( window );
gtk_widget_destroy( window );
return ret;
@ -1849,10 +1838,9 @@ EMessageBoxReturn DoTrainThingBox( TrainThingRS* rs ){
// ---- /hbox ----
gtk_window_set_modal( GTK_WINDOW( window ), TRUE );
gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER );
gtk_widget_show( window );
gtk_grab_add( window );
bool dialogError = TRUE;
while ( dialogError )
@ -1894,7 +1882,6 @@ EMessageBoxReturn DoTrainThingBox( TrainThingRS* rs ){
}
}
gtk_grab_remove( window );
gtk_widget_destroy( window );
return ret;
@ -1985,9 +1972,9 @@ EMessageBoxReturn DoMakeChainBox( MakeChainRS* rs ){
ret = eIDCANCEL;
gtk_window_set_modal( GTK_WINDOW( window ), TRUE );
gtk_window_set_position( GTK_WINDOW( window ),GTK_WIN_POS_CENTER );
gtk_widget_show( window );
gtk_grab_add( window );
bool dialogError = TRUE;
while ( dialogError )
@ -2006,7 +1993,6 @@ EMessageBoxReturn DoMakeChainBox( MakeChainRS* rs ){
}
}
gtk_grab_remove( window );
gtk_widget_destroy( window );
return ret;

View File

@ -85,6 +85,7 @@ int DoMessageBox( const char* lpText, const char* lpCaption, guint32 uType ){
int mode = ( uType & MB_TYPEMASK ), ret, loop = 1;
window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
gtk_window_set_modal( GTK_WINDOW( window ), TRUE );
g_signal_connect( G_OBJECT( window ), "delete_event",
G_CALLBACK( dialog_delete_callback ), NULL );
g_signal_connect( G_OBJECT( window ), "destroy",
@ -179,12 +180,10 @@ int DoMessageBox( const char* lpText, const char* lpCaption, guint32 uType ){
}
gtk_widget_show( window );
gtk_grab_add( window );
while ( loop )
gtk_main_iteration();
gtk_grab_remove( window );
gtk_widget_destroy( window );
return ret;

View File

@ -89,13 +89,11 @@ void DoAboutDlg(){
G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( IDOK ) );
gtk_widget_set_size_request( button, 60, -1 );
gtk_grab_add( dlg );
gtk_widget_show( dlg );
while ( loop )
gtk_main_iteration();
gtk_grab_remove( dlg );
gtk_widget_destroy( dlg );
}

View File

@ -76,14 +76,12 @@ static int DoColor( PackedColour *c ){
g_object_set_data( G_OBJECT( dlg ), "ret", &ret );
gtk_widget_show( dlg );
gtk_grab_add( dlg );
while ( loop )
gtk_main_iteration();
gtk_color_selection_get_current_color( GTK_COLOR_SELECTION( gtk_color_selection_dialog_get_color_selection( GTK_COLOR_SELECTION_DIALOG( dlg ) ) ), &clr );
gtk_grab_remove( dlg );
gtk_widget_destroy( dlg );
if ( ret == IDOK ) {
@ -473,12 +471,10 @@ void DoConfigDialog(){
Set3DTransText( translabel );
SetClipText( cliplabel );
gtk_grab_add( dlg );
gtk_widget_show( dlg );
while ( loop )
gtk_main_iteration();
gtk_grab_remove( dlg );
gtk_widget_destroy( dlg );
}

View File

@ -135,7 +135,6 @@ int DoLoadPortalFileDialog(){
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( check2d ), portals.show_2d );
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( check3d ), portals.show_3d );
gtk_grab_add( dlg );
gtk_widget_show( dlg );
while ( loop )
@ -150,7 +149,6 @@ int DoLoadPortalFileDialog(){
portals.show_2d = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( check2d ) ) ? true : false;
}
gtk_grab_remove( dlg );
gtk_widget_destroy( dlg );
return ret;

View File

@ -86,7 +86,7 @@ gboolean modal_dialog_delete( GtkWidget *widget, GdkEvent* event, ModalDialog* d
}
EMessageBoxReturn modal_dialog_show( GtkWindow* window, ModalDialog& dialog ){
gtk_grab_add( GTK_WIDGET( window ) );
gtk_window_set_modal( GTK_WINDOW( window ), TRUE );
gtk_widget_show( GTK_WIDGET( window ) );
dialog.loop = true;
@ -96,7 +96,6 @@ EMessageBoxReturn modal_dialog_show( GtkWindow* window, ModalDialog& dialog ){
}
gtk_widget_hide( GTK_WIDGET( window ) );
gtk_grab_remove( GTK_WIDGET( window ) );
return dialog.ret;
}

View File

@ -1823,9 +1823,8 @@ void EverySecondTimer_disable(){
}
}
gint window_realize_remove_decoration( GtkWidget* widget, gpointer data ){
void window_realize_remove_decoration( GtkWidget* widget, gpointer data ){
gdk_window_set_decorations( gtk_widget_get_window( widget ), (GdkWMDecoration)( GDK_DECOR_ALL | GDK_DECOR_MENU | GDK_DECOR_MINIMIZE | GDK_DECOR_MAXIMIZE ) );
return FALSE;
}
class WaitDialog
@ -1835,10 +1834,11 @@ GtkWindow* m_window;
GtkLabel* m_label;
};
WaitDialog create_wait_dialog( const char* title, const char* text ){
WaitDialog create_wait_dialog( const char* title, const char* text, bool modal ){
WaitDialog dialog;
dialog.m_window = create_floating_window( title, MainFrame_getWindow() );
gtk_window_set_modal( dialog.m_window, modal );
gtk_window_set_resizable( dialog.m_window, FALSE );
gtk_container_set_border_width( GTK_CONTAINER( dialog.m_window ), 0 );
gtk_window_set_position( dialog.m_window, GTK_WIN_POS_CENTER_ON_PARENT );
@ -1916,11 +1916,8 @@ void ScreenUpdates_Disable( const char* message, const char* title ){
bool isActiveApp = MainFrame_isActiveApp();
g_wait = create_wait_dialog( title, message );
if( !XYWnd::m_mnuDrop || !gtk_widget_get_visible( GTK_WIDGET( XYWnd::m_mnuDrop ) ) ){
gtk_grab_add( GTK_WIDGET( g_wait.m_window ) );
//globalOutputStream() << "grab grab grab\n";
}
g_wait = create_wait_dialog( title, message,
!XYWnd::m_mnuDrop || !gtk_widget_get_visible( GTK_WIDGET( XYWnd::m_mnuDrop ) ) ); //hack: avoid hiding entity menu, clicked with ctrl, by tex/model loading popup
if ( isActiveApp ) {
gtk_widget_show( GTK_WIDGET( g_wait.m_window ) );
@ -1941,7 +1938,6 @@ void ScreenUpdates_Enable(){
EverySecondTimer_enable();
//gtk_widget_set_sensitive(GTK_WIDGET(MainFrame_getWindow()), TRUE);
gtk_grab_remove( GTK_WIDGET( g_wait.m_window ) );
destroy_floating_window( g_wait.m_window );
g_wait.m_window = 0;