Using GTK4 4.6.6 first app calls the activate signal function, then a second app also signals the activate callback but the result is that another instance of the first app is started
Steps to reproduce
FIRST APP CODE:
#include <gtk/gtk.h>
//gcc $( pkg-config --cflags gtk4 ) -o example-0 example-0.c $( pkg-config --libs gtk4 )
static void activate(GtkApplication* app, gpointer user_data)
{
GtkWidget *window1;
window1 = gtk_application_window_new (app);
gtk_window_set_title (GTK_WINDOW (window1), "Window");
gtk_window_set_default_size (GTK_WINDOW (window1), 200, 200);
gtk_widget_show (window1);
}
int main(int argc, char **argv)
{
GtkApplication *app;
int status;
app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
status = g_application_run (G_APPLICATION (app), argc, argv);
g_object_unref (app);
return status;
}
SECOND APP CODE:
#include <gtk/gtk.h>
static void
print_hello (GtkWidget *widget,
gpointer data)
{
g_print ("Hello World\n");
}
static void
activate (GtkApplication *app,
gpointer user_data)
{
GtkWidget *window;
GtkWidget *button;
GtkWidget *box;
window = gtk_application_window_new (app);
gtk_window_set_title (GTK_WINDOW (window), "Window");
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_widget_set_halign (box, GTK_ALIGN_CENTER);
gtk_widget_set_valign (box, GTK_ALIGN_CENTER);
gtk_window_set_child (GTK_WINDOW (window), box);
button = gtk_button_new_with_label ("Hello World");
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_destroy), window);
gtk_box_append (GTK_BOX (box), button);
gtk_widget_show (window);
}
int
main (int argc,
char **argv)
{
GtkApplication *app;
int status;
app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
status = g_application_run (G_APPLICATION (app), argc, argv);
g_object_unref (app);
return status;
}
GTK4 pkg-config, file named gtk4.pc:
prefix=/usr
libdir=${prefix}/lib/x86_64-linux-gnu
includedir=${prefix}/include
targets=wayland x11
gtk_binary_version=4.0.0
gtk_host=x86_64-linux
Name: GTK
Description: GTK Graphical UI Library
Version: 4.6.6
Requires: pango >= 1.50.0, pangocairo >= 1.50.0, gdk-pixbuf-2.0 >= 2.30.0, cairo >= 1.14.0, cairo-gobject >= 1.14.0, graphene-gobject-1.0 >= 1.9.1, gio-2.0 >= 2.66.0
Requires.private: gio-unix-2.0 >= 2.66.0, epoxy >= 1.4, fontconfig, x11, xext, xi, xrandr, xcursor, xdamage, xfixes, xinerama, wayland-client >= 1.20.0, xkbcommon >= 0.2.0, wayland-egl, cairo-xlib, pangoft2
Libs: -L${libdir} -lgtk-4
Cflags: -I${includedir}/gtk-4.0
Current behavior
When the FIRST APP is executed and running then the SECOND APP is started, the SECOND APP does not run, instead another instance of the FIRST APP is launched
Expected outcome
The SECOND APP should be launched independent from the FIRST APP.
Version information
- Which version of GTK you are using
$pkg-config --modversion gtk4
4.6.6
- What operating system and version
- For Linux, which distribution
$pro --version
Ubuntu 27.13.6~22.04.1
- If you built GTK yourself, the list of options used to configure the build
I used $sudo apt install libgtk-4-dev
Additional information
I see that GTK4 now has version: Latest stable 4.8.3 listed on https://www.gtk.org/ HOW WOULD I UPGRADE??
Edited by Andre Klapper