Skip to content

Commit ad61059

Browse files
committed
gtk.cfg: Fix gtk_widget_destroy definition and usage
gtk_widget_destroy is only for GtkWidget derived objects, and in practice should only be used for GtkWindow derived widgets (it is replaced with gtk_window_destroy in gtk4).
1 parent 5d69c9f commit ad61059

2 files changed

Lines changed: 28 additions & 5 deletions

File tree

cfg/gtk.cfg

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,7 +1003,6 @@
10031003
<alloc init="true" no-fail="true">g_zlib_decompressor_new</alloc>
10041004
<use>g_object_ref</use>
10051005
<dealloc>g_object_unref</dealloc>
1006-
<dealloc>gtk_widget_destroy</dealloc>
10071006
</memory>
10081007
<memory>
10091008
<alloc init="true" no-fail="true">g_tree_new</alloc>
@@ -1019,6 +1018,11 @@
10191018
<use>g_file_attribute_matcher_ref</use>
10201019
<dealloc>g_file_attribute_matcher_unref</dealloc>
10211020
</memory>
1021+
<memory>
1022+
<alloc init="true" no-fail="true">gtk_window_new</alloc>
1023+
<dealloc>gtk_widget_destroy</dealloc>
1024+
<dealloc>gtk_window_destroy</dealloc>
1025+
</memory>
10221026
<function name="g_application_get_default">
10231027
<leak-ignore/>
10241028
<noreturn>false</noreturn>
@@ -9787,6 +9791,13 @@
97879791
<leak-ignore/>
97889792
<noreturn>false</noreturn>
97899793
</function>
9794+
<!-- gtk3: GtkWidget * gtk_window_new(GtkWindowType type)
9795+
gtk4: GtkWidget * gtk_window_new() -->
9796+
<function name="gtk_window_new">
9797+
<noreturn>false</noreturn>
9798+
<use-retval/>
9799+
<returnValue type="GtkWidget *"/>
9800+
</function>
97909801
<function name="gtk_window_list_toplevels">
97919802
<leak-ignore/>
97929803
<noreturn>false</noreturn>
@@ -21229,10 +21240,6 @@
2122921240
<leak-ignore/>
2123021241
<noreturn>false</noreturn>
2123121242
</function>
21232-
<function name="gtk_widget_destroy">
21233-
<leak-ignore/>
21234-
<noreturn>false</noreturn>
21235-
</function>
2123621243
<function name="gtk_widget_destroyed">
2123721244
<leak-ignore/>
2123821245
<noreturn>false</noreturn>
@@ -21889,6 +21896,13 @@
2188921896
<leak-ignore/>
2189021897
<noreturn>false</noreturn>
2189121898
</function>
21899+
<function name="gtk_window_destroy">
21900+
<noreturn>false</noreturn>
21901+
<returnValue type="void"/>
21902+
<arg nr="1">
21903+
<not-uninit/>
21904+
</arg>
21905+
</function>
2189221906
<function name="gtk_window_fullscreen">
2189321907
<leak-ignore/>
2189421908
<noreturn>false</noreturn>
@@ -23070,6 +23084,9 @@
2307023084
<define name="GTK_LEVEL_BAR_OFFSET_FULL" value="&quot;full&quot;"/>
2307123085
<define name="GTK_LEVEL_BAR_OFFSET_HIGH" value="&quot;high&quot;"/>
2307223086
<define name="GTK_LEVEL_BAR_OFFSET_LOW" value="&quot;low&quot;"/>
23087+
<!-- gtk/gtkwindow.h -->
23088+
<define name="GTK_WINDOW_TOPLEVEL" value="0"/>
23089+
<define name="GTK_WINDOW_POPUP" value="1"/>
2307323090
<!-- gtk/gtk.h -->
2307423091
<define name="GTK_STOCK_ZOOM_IN" value="&quot;gtk-zoom-in&quot;"/>
2307523092
<define name="GTK_STOCK_ZOOM_FIT" value="&quot;gtk-zoom-fit&quot;"/>

test/cfg/gtk.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,3 +585,9 @@ void g_tree_test() {
585585
printf("%p\n", tree2);
586586
// cppcheck-suppress memleak
587587
}
588+
589+
void gtk_widget_destroy_test() {
590+
GtkWidget *widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
591+
gtk_widget_show(widget);
592+
gtk_widget_destroy(widget);
593+
}

0 commit comments

Comments
 (0)