LINUX.ORG.RU

написание своей gtk3 темы: ширина кнопок

 , , ,


1

2

Решил написать свою тему. Столкнулся с проблемой: как сделать чтоб ширина кнопок была не меньше высоты? Что вставить сюда?

button {
	padding: 2px;
	margin: 2px;
	background-color: #555;
	border-radius: 4px;
	border-width: 1px;
	border-style: solid;
	border-color: #999;
}

Ответ на: комментарий от Kilte

Не понимаю логику. Если просто захардкодить цифры, то можно найти поле отвечающее за минимальную ширину и прописать там. Это не подходит, так как размер кнопок различается: кнопка для закрытия вкладки будет меньше чем кнопка для переключения к примеру в наутилусе. Если прописывать одинаковую ширину, то кнопки закрытия вкладок растянутся образовав избытки места. А их я хочу оставить такими же маленькими(а не как обычная кнопка) и квадратными. Проблема в том что я не понимаю как в случае с css будет выглядеть некое подобие тернарного оператора.

NextGenenration ★★ ()
Ответ на: комментарий от NextGenenration
notebook tab button {
    min-height: 0;
    min-width: 0;
    padding: 0px;
    margin-top: 10px;
    margin-bottom: 10px;
}

Две последние строки?

Deleted ()
Ответ на: комментарий от NextGenenration

Я привел из своего опыта, в дефолтном gtk.css есть эти строки, там высота табов определяется их paddings, чтобы кнопки не наследовали ее, им нужны соответствующие margins.

И, кстати, что определяет твой код? Просто button?

Deleted ()
Ответ на: комментарий от Deleted

там высота табов определяется их paddings

возможно можно будет такой костыль испоьзовать если лучше ничего не будет.

И, кстати, что определяет твой код? Просто button?

да. мои скудные познания css говорят о том что строку с селекторами надо приводить целиком, ведь иначе он будет работать только в отдельных случаях. Как в примере выше код сработает только когда button вложен в tab а он в notebook.

в дефолтном gtk.css

cat /usr/share/themes/Adwaita/gtk-3.0/gtk.css 
/* Adwaita is the default theme of GTK+ 3, this file is not used */
NextGenenration ★★ ()

width: и height: не? Ну или картинка *.svg вместо кнопки.

enso ★★★★ ()
Ответ на: комментарий от NextGenenration

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

cat /usr/share/themes/Adwaita/gtk-3.0/gtk.css
/* Adwaita is the default theme of GTK+ 3, this file is not used */

Это просто ссылка, с некоторых пор файл закомпилирован.
https://github.com/GNOME/gtk/tree/master/gtk/theme/Adwaita
gtk-contained.css или gtk-contained-dark.css

Deleted ()
Ответ на: комментарий от NextGenenration

ЯННП. Какое поле?

Вот, я запилил пример для наглядности: http://codepen.io/anon/pen/GrXgvQ

У close button отступы везде одинаковые и если то, что лежит внутри кнопки имеет равные соотношения сторон, то кнопка будет квадратная. В content button высота меньше ширины. Если захардкодишь высоту и ширину, то часть контента может скрыться или наоборот будет слишком много пустого места. Именно поэтому лучше воспользоваться отступами.

Ну а то, что для одних кнопок нужно применить одни стили, а для других другие, то как можно видеть из примера, следует указать для каких конкретно кнопок ты хочешь задать их. Т.е. смотри что там за классы или айдишники (понятия не имею как это узнать) и вперёд.

Kilte ★★★★★ ()
Ответ на: комментарий от Kilte

Какое поле?

под полем я подразумеваю любое свойство. Не помню как они в css называются.

для одних кнопок нужно применить одни стили, а для других другие

Хочешь сказать что написать универсальный стиль для всех кнопок не получится и нужно для каждого типа переопределять padding?

NextGenenration ★★ ()
Ответ на: комментарий от NextGenenration

под полем я подразумеваю любое свойство. Не помню как они в css называются.

Вроде так и называется: «свойство».

Хочешь сказать что написать универсальный стиль для всех кнопок не получится и нужно для каждого типа переопределять padding?

Если ты хочешь иметь разное соотношение сторон для разных кнопок, то да. Иначе никак.

Kilte ★★★★★ ()
Ответ на: комментарий от Kilte

Зачем padding, если ему нужны min-width и min-height?

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