Skip to content

Commit f199027

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 72547b3 commit f199027

2 files changed

Lines changed: 34 additions & 5 deletions

File tree

cfg/gtk.cfg

Lines changed: 23 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,14 @@
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+
<arg nr="1" direction="in" default="0"/>
9801+
</function>
97909802
<function name="gtk_window_list_toplevels">
97919803
<leak-ignore/>
97929804
<noreturn>false</noreturn>
@@ -21229,10 +21241,6 @@
2122921241
<leak-ignore/>
2123021242
<noreturn>false</noreturn>
2123121243
</function>
21232-
<function name="gtk_widget_destroy">
21233-
<leak-ignore/>
21234-
<noreturn>false</noreturn>
21235-
</function>
2123621244
<function name="gtk_widget_destroyed">
2123721245
<leak-ignore/>
2123821246
<noreturn>false</noreturn>
@@ -21889,6 +21897,13 @@
2188921897
<leak-ignore/>
2189021898
<noreturn>false</noreturn>
2189121899
</function>
21900+
<function name="gtk_window_destroy">
21901+
<noreturn>false</noreturn>
21902+
<returnValue type="void"/>
21903+
<arg nr="1">
21904+
<not-uninit/>
21905+
</arg>
21906+
</function>
2189221907
<function name="gtk_window_fullscreen">
2189321908
<leak-ignore/>
2189421909
<noreturn>false</noreturn>
@@ -23070,6 +23085,9 @@
2307023085
<define name="GTK_LEVEL_BAR_OFFSET_FULL" value="&quot;full&quot;"/>
2307123086
<define name="GTK_LEVEL_BAR_OFFSET_HIGH" value="&quot;high&quot;"/>
2307223087
<define name="GTK_LEVEL_BAR_OFFSET_LOW" value="&quot;low&quot;"/>
23088+
<!-- gtk/gtkwindow.h -->
23089+
<define name="GTK_WINDOW_TOPLEVEL" value="0"/>
23090+
<define name="GTK_WINDOW_POPUP" value="1"/>
2307323091
<!-- gtk/gtk.h -->
2307423092
<define name="GTK_STOCK_ZOOM_IN" value="&quot;gtk-zoom-in&quot;"/>
2307523093
<define name="GTK_STOCK_ZOOM_FIT" value="&quot;gtk-zoom-fit&quot;"/>

test/cfg/gtk.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,3 +585,14 @@ 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+
// cppcheck-suppress memleak
593+
594+
widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
595+
gtk_widget_show(widget);
596+
// cppcheck-suppress mismatchAllocDealloc
597+
g_object_unref(widget);
598+
}

0 commit comments

Comments
 (0)