Нарисовать закругленные углы в окне с использованием GTK-3
Здравствуйте, форумчане!
Столкнулся со следующей проблемой..
есть код на С++ :
int main (int argc, char *argv[])
{
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example");
Gtk::Window window;
window.set_default_size(200, 200);
Glib::RefPtr<Gtk::CssProvider> css_provider = Gtk::CssProvider::create();
Glib::RefPtr<Gtk::StyleContext> styleContext = Gtk::StyleContext::create();
try
{
css_provider->load_from_path("styles.css");
}
catch (/*Exeption &e*/...)
{
std::cout << "exeption " << std::endl;
}
styleContext->add_provider_for_screen(Gdk::Screen::get_default(), css_provider, GTK_STYLE_PROVIDER_PRIORITY_USER);
return app->run(window);
}
и СSS код (styles.css файл)
GtkWindow
{
border: 1px solid black;
background: none;
background-color : red;
border-radius: 20px;
}
сборка:
g++ `pkg-config --cflags gtkmm-3.0` -o exampl main.cc `pkg-config --libs gtkmm-3.0`
в результате на выходе получаем окно с закругленными углами, но вместо прозрачности у нас черные углы
https://i.stack.imgur.com/5OvV1.png
После долгих поисков, оказалось, что надо включить фичу, которая называется Client Side Decoration
export GTK_CSD=1
сразу после этого окно запустилось как и должно быть: https://imgur.com/hJxJels
Но! на всех других машинах с убунту это решение не работает! там все еще черные углы! а еще почему-то вместо «GtkWindow» в СSS файле надо писать просто «window»
наверное у меня есть еще какой-то дополнительный пакет, который позволяет CSD работать хорошо. Кто с чем похожим сталкивался? В чем проблема? Как сделать так, чтобы работало для любого дистрибутива линукс? Я новичок в этой теме, поэтому не удивлюсь, если есть другой способ добиться закругленных углов
Перемещено Pinkbyte из general