GtkRevealer глюки текстовый вид рисунок - PullRequest
0 голосов
/ 04 мая 2018

Во время разработки моей программы я наткнулся на один глюк рисования, который я не смог решить. Я использую GtkRevealer, чтобы показать и скрыть GtkInfoBar над другим полем, содержащим прокручиваемое окно с GtkTextView (на самом деле GtkSourceView), как в gedit. Все это упаковано в GtkPaned.

Когда я скрываю информационную панель через средство открытия, появляется черная область в текстовом представлении, и она исчезает, когда должна произойти перерисовка виджета (например, когда я щелкаю текстовое представление, чтобы поместить курсор) Кроме того, этот глюк не появляется, если я увеличил разрешение окна по умолчанию, которое по причинам совместимости составляет 640x480. Я понимаю, что это может быть трудно воспроизвести, но я не знаю, кто столкнулся с той же проблемой. Возможно, он знает, как обойти эту проблему. Также любая идея приветствуется. Я нарисую, как именно выглядит сбой на gedit (хотя в gedit этого не происходит или нет, но я не могу найти правильное разрешение). enter image description here

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

1 Ответ

0 голосов
/ 04 мая 2018

В настоящее время эта ошибка встречалась и в других программах с текстовым представлением, но еще не сообщалась как ошибка. Возможно, это как-то связано с тем, что его трудно воспроизвести.

Я обнаружил, что скрытие вида текста gtk с помощью gtk_widget_hide() и последующее его отображение с помощью gtk_widget_show() работает. Мерцание этого визуального сбоя не заметно, возможно, из-за того, что GTK + основан на событиях и ожидает возврата функции к изменениям процесса.

...