use GtkApplication for GTK3

This commit is contained in:
wdlkmpx 2021-01-25 11:49:58 +08:00
parent bfed4acda5
commit a9c45a9f9d
2 changed files with 18 additions and 9 deletions

View File

@ -28,8 +28,8 @@ fi
#========================================================================
GTK3_CHECK="gtk+-3.0 >= 3.0.0"
GTK2_CHECK="gtk+-2.0 >= 2.14.0"
GTK3_CHECK="gtk+-3.0 >= 3.4.0"
GTK2_CHECK="gtk+-2.0 >= 2.12.0"
AC_ARG_ENABLE(gtk3,
AS_HELP_STRING([--disable-gtk3],[build with GTK3 (Autodetect)]),[],

View File

@ -39,6 +39,8 @@ enum
W_TEXT_STYLE_UNIQUE,
};
GtkApplication * gmrun_app;
char * gmrun_text = NULL;
static void gmrun_exit (void);
GtkAllocation window_geom = { -1, -1, -1, -1 };
@ -511,7 +513,7 @@ static void gmrun_activate(void)
GtkWidget *label_search;
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget * window = gtk_application_window_new (gmrun_app);
dialog = gtk_dialog_new();
gtk_window_set_transient_for( (GtkWindow*)dialog, (GtkWindow*)window );
gtk_widget_realize(dialog);
@ -715,7 +717,7 @@ void gmrun_exit(void)
{
gtk_widget_destroy (compline);
config_destroy ();
gtk_main_quit ();
g_application_quit (G_APPLICATION (gmrun_app));
}
int main(int argc, char **argv)
@ -724,19 +726,26 @@ int main(int argc, char **argv)
#ifdef MTRACE
mtrace();
#endif
gtk_init(&argc, &argv);
int status = 0;
config_init ();
parse_command_line (argc, argv);
gmrun_activate ();
gtk_main();
#if GTK_CHECK_VERSION(3, 0, 0)
gmrun_app = gtk_application_new ("org.gtk.gmrun", G_APPLICATION_FLAGS_NONE);
g_signal_connect (gmrun_app, "activate", gmrun_activate, NULL);
status = g_application_run (G_APPLICATION (gmrun_app), argc, argv);
g_object_unref (gmrun_app);
#else
gtk_init (&argc, &argv);
gmrun_activate ();
gtk_main ();
#endif
#ifdef MTRACE
muntrace();
#endif
return (0);
return (status);
}