GTK + 3.0 - полоса прокрутки в Treeview / ScrolledWindow - свойства CSS для управления полосой прокрутки - PullRequest
0 голосов
/ 18 мая 2018

Разработка на GTK + 3.0 (3.22.30), openbox на X11, сервер Ubuntu 18.04.

Я изо всех сил пытался выяснить модель CSS для управления внешним видом полосы прокрутки в GtkTreeView.ScrolledWindow.У меня был очень ограниченный успех.Единственное, что мне удалось контролировать - это цвет ползунка при нажатии / перемещении по нему и цвет фона корыта.Другие свойства, кажется, не имеют никакого эффекта.Я обнаружил, что свойство цвета впадины не поддерживается и, по-видимому, вызывает ошибку синтаксического анализа.

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

Я попробовал эти определения CSS ниже.Кое-что из этого - просто экспериментальная попытка заставить что-то работать.Я попытался переместить width, min-width и has-xx-stepper, но они, похоже, не имеют никакого эффекта.Я все еще застрял с тем же простым ползунком по умолчанию, но с некоторым базовым контролем цвета.Я не могу понять, как ссылаться на модель узла CSS для полосы прокрутки, так как я не могу найти пример.

scrollbar {
  has-backwards-stepper: true;
  has-forward-stepper: true;
  has-secondary-backward-stepper: true;
  has-secondary-forward-stepper: true;
  min-width: 80;
}

trough {
 background-color: #00ee00;
}

slider {
 color: #00FF00;
 slider-width: 80;
 min-width: 80;
 has-backwards-stepper: true;
 has-forward-stepper: true;
}

С помощью проводника GTK CSS я не могу найти 'has-backwards'-stepper 'и другие свойства, указанные в документации GTK3 GtkScrollbar.Это удобное место для проверки синтаксиса CSS, но я не могу понять, как управлять внешним видом так, как мне нужно.

Какой синтаксис я должен использовать, чтобы получить кнопки шагового перехода, чтобы зафиксировать ширинуи оно появляется постоянно?Указатель на документацию, которая объясняет это, будет полезен.Я уже исчерпывающе ознакомился с обзором CSS GTK 3, который здесь не поможет.

1 Ответ

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

Мне удалось определить, что свойства has-xxxx-stepper выглядят только для чтения, но на самом деле ни к чему не подключаются, поскольку я могу измениться.

Мне удалось заставить полосу прокрутки отображаться справаокна прокрутки со свойством overlay-scrolling.

sw = gtk_scrolled_window_new(NULL, NULL);
gtk_container_set_border_width( GTK_CONTAINER(sw), 0 );
gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(sw), TK_POLICY_NEVER, GTK_POLICY_ALWAYS ); //scroll bars
//Set scrollbar to ALWAYS be displayed and not as temporary overlay
g_object_set( sw , "overlay-scrolling", FALSE , NULL);

Я смог дополнительно контролировать ширину впадины полосы прокрутки с помощью этого:

GtkWidget * ptrVscrollBar = gtk_scrolled_window_get_vscrollbar ( TK_SCROLLED_WINDOW(sw) );    
g_object_set( ptrVscrollBar ,
                "width-request", 30 ,
                "margin-bottom", 30 ,
                "margin-top", 30 ,
                NULL);

Обновление: я нашелэтот синтаксис CSS был немного другим для слайдера.С некоторыми экспериментами я смог переопределить ширину и высоту компонента слайдера.Для этих значений свойств требуются единицы px, и без них они игнорируются.

slider {
  min-width: 28px;
  min-height: 80px;
}

Я так и не понял, как включить кнопки управления шаговым двигателем.Нужно ли создавать их вручную / отдельно с помощью GTK3?У меня есть некоторый прототип кода, использующий свойства объекта vadjustment окна прокрутки, но какая боль зацепить за каждую полосу прокрутки, которую я имею.

...