Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Приоритет событий GTK
Форум на CrossPlatform.RU > Библиотеки > GTK+
Гость_raptor_*
Пишу свой виджет, hex-редактор, в нем обрабатываются нажатия клавиатуры, например стрелок, при нажатии двигается каретка и перерисовывается виджет функцией gtk_widget_queue_draw, если нажать кнопку и не отпускать, то получается одно событие expose, при отпускании кнопки, а хотелось бы чтобы оно возникало после каждого события нажатия кнопки. Как это сделать? Тое есть имеем:
key_press
key_press
key_press
key_press
key_press
expose

а хотелось бы
key_press
expose
key_press
expose
key_press
expose
key_press
expose

Гость_Raptor_*
Что то специалистов по GTK негусто, отвечаю сам себе:
при создании виджета надо вместо инициализации функции обработки клавиатуры
widget_class->key_press_event
добавить тот же самый обработчик с помощью
g_signal_connect при создании виджета (я по быстрому сделал это в expose с помощью статической переменной в роли флага)
после этого можно блокировать событие нажатия клавиши функцией g_signal_handlers_block_by_func прямо внутри этого события,
обработать все остальные события чем то вроде

    static void ProcessGTKEvent(DWORD dwMaxEvent=-1)
    {
        while (gtk_events_pending())
        {
            gtk_main_iteration();
            if(dwMaxEvent!=-1)
            {
                dwMaxEvent--;
                if(dwMaxEvent==0)
                break;
            }
        }
    }


и разблокировать события от клавиатуры функцией
g_signal_handlers_unblock_by_func
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2020 IPS, Inc.