LINUX.ORG.RU

Gtk не блокируется сигнал

 , ,


1

1

Здравствуйте. Подскажите, почему не блокируется сигнал.

как видно здесь сигнал создается

void fm_load_file(Page *page)
{
    gchar *text;
    gsize length;
    GFile *file = g_file_new_for_path(page->file_name);
    g_file_load_contents(file, NULL, &text, &length, NULL, NULL);
    page->monitor = g_file_monitor_file(file, G_FILE_MONITOR_SEND_MOVED, NULL, NULL);
    page->handler_number = g_signal_connect(page->monitor, "changed", G_CALLBACK(file_monitor_watcher), page->file_name);
	gtk_text_buffer_set_text(page->buffer, text, -1);
	gtk_text_buffer_set_modified(page->buffer , FALSE);
    g_free(text);
}

Эта функция должна записать текст в файл и заблокированый сигнал не должен сработать, но он срабатывает. Немогу понять почему. Если убрать функцию разблокировки, то он срабатвать не будет.

void fm_save_file(Page *page)
{
    g_signal_handler_block(page->monitor, page->handler_number);
    GtkTextIter start, end;
    gchar *text;
    gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(page->buffer), &start, &end);
    text = gtk_text_iter_get_text(&start, &end);
    g_file_set_contents(page->file_name, text, -1, NULL);
    gtk_text_buffer_set_modified(page->buffer , FALSE);
    g_free(text);
    g_signal_handler_unblock(page->monitor, page->handler_number);
}

На всякий случай при срабатывании сигнала

gboolean file_monitor_watcher(GFileMonitor *monitor, gpointer user_data)
{
	g_print("file changed\n");
}

Как мне добится временного отключения сигнала? Буду весьма признателен за любую помощь.



Последнее исправление: kradwhite (всего исправлений: 1)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.