Hi all,
strange behavior.
In my application I open some secondary windows as dialog box.
One of them, just after the gkt_dialog_run() call, triggers a callback function connected for the ‘clicked’ event.
I’m wondering how it is possible, all the windows are quite similar (as code).
The function is the following:
int startWinUsersPower(Config* pConfig)
{
LOG1("[winUsersPower][startWinUsersPower] START\n");
GtkBuilder *builder = NULL;
builder = gtk_builder_new();
//
if( gtk_builder_add_from_file (builder,"./glade/winUsersPower.glade" , NULL) == 0)
{
printf("gtk_builder_add_from_file FAILED\n");
return(0);
}
g_window = GTK_WIDGET (gtk_builder_get_object (builder,"winUsersPower"));
apply_css_provider( g_window, pConfig->cssProvider);
// Label
gLblPagTitle = GTK_LABEL (gtk_builder_get_object (builder, "pageTitle"));
if (pConfig->utente.tipoUtente == UTENTE_SUPERVISORE)
{
gtk_label_set_text(gLblPagTitle, _("UTENTE SUPERVISORE"));
}
// Bottoni
GtkWidget* btnRestituz = GTK_WIDGET (gtk_builder_get_object(builder,"btnRestituzPdaCasualeTrovato"));
g_signal_connect( btnRestituz, "clicked", G_CALLBACK(on_btnRestituzPdaCasualeTrovato_clicked), pConfig);
/*btn = GTK_WIDGET (gtk_builder_get_object(builder,"btnApriFalla"));
g_signal_connect( btn, "clicked", G_CALLBACK(on_btnApriFalla_clicked), pConfig);*/
GtkWidget* btnVisualizza = GTK_WIDGET (gtk_builder_get_object(builder,"btnVisualizzaStatoLocker"));
g_signal_connect( btnVisualizza, "clicked", G_CALLBACK(on_btnVisualizzaStatoLocker_clicked), pConfig);
GtkWidget* btnFlussoNormale = GTK_WIDGET (gtk_builder_get_object(builder,"btnFlussoNormale"));
g_signal_connect( btnFlussoNormale, "clicked", G_CALLBACK(on_btnFlussoNormale_clicked), pConfig);
GtkWidget* btnRiempimento = GTK_WIDGET (gtk_builder_get_object(builder,"btnRiempimentoLockerConPda"));
g_signal_connect( btnRiempimento, "clicked", G_CALLBACK(on_btnRiempimentoLockerConPda_clicked), pConfig);
GtkWidget* btnBackend = GTK_WIDGET (gtk_builder_get_object(builder,"btnBackend"));
g_signal_connect( btnBackend, "clicked", G_CALLBACK(onBtnBackend_clicked), pConfig);
GtkWidget* btnExit = GTK_WIDGET (gtk_builder_get_object(builder,"btnUscita"));
g_signal_connect( btnExit, "clicked", G_CALLBACK(winUsersPower_onBtnEsci), pConfig);
//
gtk_button_set_label( GTK_BUTTON(btnExit), _("CHIUDI"));
gtk_button_set_label( GTK_BUTTON(btnRiempimento), _("INTRODUZIONE ELEMENTO NEL LOCKER"));
gtk_button_set_label( GTK_BUTTON(btnRestituz), _("RESTITUZIONE ELEMENTO TROVATO"));
gtk_button_set_label( GTK_BUTTON(btnBackend), _("ENTRA NEL BACKEND"));
gtk_button_set_label( GTK_BUTTON(btnVisualizza), _("STATO VANI LOCKER"));
gtk_builder_connect_signals(builder, pConfig);
if (pConfig->utente.tipoUtente == UTENTE_SUPERVISORE)
{
gtk_widget_set_visible( btnRiempimento, FALSE);
gtk_widget_set_visible( btnVisualizza, FALSE);
gtk_widget_set_visible( btnBackend, FALSE);
}
//
gtk_window_set_resizable( GTK_WINDOW(g_window), TRUE);
g_print("eeee\n");
gtk_window_fullscreen(GTK_WINDOW(g_window));
g_print("--> startDialog\n");
gtk_dialog_run(GTK_DIALOG(g_window));
LOG("[winUsersPower][startWinUsersPower] END\n");
gtk_widget_destroy(g_window);
return 0;
}
My log reports this output:
L> [winUsersPower][startWinUsersPower] START - utente: 2 (1=SUPERVISOR, 2=ADMIN)
eeee
--> startDialog
L> [winUsersPower][on_btnRiempimentoLockerConPda_clicked] START
L> [winUsersPower][on_btnRiempimentoLockerConPda_clicked] END
L> [winUsersPower][startWinUsersPower] END
L> [onInput] BACK from startWinUsersPower - currentState: 10
The callback function is:
void on_btnRiempimentoLockerConPda_clicked(
__attribute__((unused)) GtkWidget *widget,
__attribute__((unused)) gpointer data)
{
Config* config = (Config*)data;
LOG("[winUsersPower][on_btnRiempimentoLockerConPda_clicked] START\n");
config->currentState = STATE_USERSPOWER_RIEMPIMENTO;
LOG("[winUsersPower][on_btnRiempimentoLockerConPda_clicked] END\n");
gtk_window_close(GTK_WINDOW(g_window));
}
I’m absolutely sure I don’t click on the button.
Any idea?
Thanks!