Fix GTK_CRITICAL errors
authorAntoine Fontaine <antoine.fontaine@epfl.ch>
Sun, 21 Mar 2021 00:03:58 +0000 (01:03 +0100)
committerAntoine Fontaine <antoine.fontaine@epfl.ch>
Sun, 21 Mar 2021 16:43:35 +0000 (17:43 +0100)
libs/gtkutil/dialog.cpp
libs/gtkutil/glwidget.cpp
radiant/mainframe.cpp

index aa8aad47d0a873046151804c55d918f01c5ee973..66470543c48e307c5e0573721c4e90cccac410f9 100644 (file)
@@ -86,8 +86,9 @@ gboolean modal_dialog_delete( ui::Widget widget, GdkEvent* event, ModalDialog* d
 }
 
 EMessageBoxReturn modal_dialog_show( ui::Window window, ModalDialog& dialog ){
-       gtk_grab_add( window  );
        window.show();
+       g_assert( GTK_IS_WINDOW(window) );
+       gtk_grab_add( GTK_WIDGET(window) );
 
        dialog.loop = true;
        while ( dialog.loop )
index 7ab8ebe6d43cbb73e29ca1d6d384b926bf747810..31f5bbdabf35cc9a64985d0a330ac34ef61ea741 100644 (file)
@@ -98,6 +98,7 @@ bool glwidget_make_current(ui::GLArea self)
 
 void glwidget_swap_buffers(ui::GLArea self)
 {
+    g_assert(GTK_IS_GL_AREA(self));
     gtk_gl_area_queue_render(self);
 }
 
index 332d737958f629bbaec0fef3f542aa6545c422f2..f39805bfd3bf09f0896abbf9cafad7415afbb59b 100644 (file)
@@ -1804,9 +1804,11 @@ void Selection_SnapToGrid(){
 
 
 static gint qe_every_second( gpointer data ){
-       GdkModifierType mask;
+       if (g_pParentWnd == nullptr)
+               return TRUE;
 
-       gdk_window_get_pointer( 0, 0, 0, &mask );
+       GdkModifierType mask;
+       gdk_window_get_pointer( gtk_widget_get_window(g_pParentWnd->m_window), nullptr, nullptr, &mask );
 
        if ( ( mask & ( GDK_BUTTON1_MASK | GDK_BUTTON2_MASK | GDK_BUTTON3_MASK ) ) == 0 ) {
                QE_CheckAutoSave();
@@ -1918,15 +1920,18 @@ void ScreenUpdates_Disable( const char* message, const char* title ){
                bool isActiveApp = MainFrame_isActiveApp();
 
                g_wait = create_wait_dialog( title, message );
-               gtk_grab_add( g_wait.m_window  );
 
                if ( isActiveApp ) {
                        g_wait.m_window.show();
+                       gtk_grab_add( g_wait.m_window  );
                        ScreenUpdates_process();
                }
        }
        else if ( g_wait.m_window.visible() ) {
                g_wait.m_label.text(message);
+               if ( GTK_IS_WINDOW(g_wait.m_window) ) {
+                       gtk_grab_add(g_wait.m_window);
+               }
                ScreenUpdates_process();
        }
        g_wait_stack.push_back( message );
@@ -3299,7 +3304,7 @@ void MainFrame::SetStatusText( CopiedString& status_text, const char* pText ){
 }
 
 void Sys_Status( const char* status ){
-       if ( g_pParentWnd != 0 ) {
+       if ( g_pParentWnd != nullptr ) {
                g_pParentWnd->SetStatusText( g_pParentWnd->m_command_status, status );
        }
 }
@@ -3331,7 +3336,7 @@ void MainFrame::SetGridStatus(){
 }
 
 void GridStatus_onTextureLockEnabledChanged(){
-       if ( g_pParentWnd != 0 ) {
+       if ( g_pParentWnd != nullptr ) {
                g_pParentWnd->SetGridStatus();
        }
 }