Unwanted trigger of a button click just after gtk_dialog_run() call

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!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.