Во время разработки моей программы я наткнулся на один глюк рисования, который я не смог решить. Я использую GtkRevealer, чтобы показать и скрыть GtkInfoBar над другим полем, содержащим прокручиваемое окно с GtkTextView (на самом деле GtkSourceView), как в gedit.
Все это упаковано в GtkPaned.
Когда я скрываю информационную панель через средство открытия, появляется черная область в текстовом представлении, и она исчезает, когда должна произойти перерисовка виджета (например, когда я щелкаю текстовое представление, чтобы поместить курсор)
Кроме того, этот глюк не появляется, если я увеличил разрешение окна по умолчанию, которое по причинам совместимости составляет 640x480.
Я понимаю, что это может быть трудно воспроизвести, но я не знаю, кто столкнулся с той же проблемой. Возможно, он знает, как обойти эту проблему.
Также любая идея приветствуется.
Я нарисую, как именно выглядит сбой на gedit (хотя в gedit этого не происходит или нет, но я не могу найти правильное разрешение).
Я пытался перерисовать с помощью gtk_widget_queue_draw()
, но ничего не происходит и не будет, потому что ему нечего перерисовывать.
Я сейчас попробую поставить курсор автоматически. Это может работать, но это не функционально адекватно.
EDIT:
Удивительно, но это не сработало. Захватив фокус и поместив курсор
не оказывал влияния на сбойное визуальное поведение. Я должен был даже сделать новую линию
чтобы исправить это на этот раз.
Тот факт, что мне нужно изменить размер окна со значением, превышающим определенную точку, может означать, что сбой может быть связан с ошибками выравнивания, но это не объясняет, почему добавление новой строки или текстовой метки в желобе, который окрашивает вся строка также удаляет черное поле.