Углы окна становятся черными вместо прозрачных после использования 'border-radius' в приложении GTK-3 - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь создать приложение GTK-3 с закругленными углами и пытаюсь использовать для него свойство CSS border-radius. Но пограничные углы становятся черными. В чем причина и как это исправить?

Вот код C ++ в файле "main. cc":

#include <gtkmm/application.h>
#include <iostream>
#include <gtkmm.h>

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);
}

вот стили CSS код в файле ". css ":

window
{
  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`

Я использую Ubuntu 18.04.3 LTS

Конец - вот результат: https://i.stack.imgur.com/5OvV1.png Я ожидаю, что углы должны быть прозрачными, а не черными!

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Оформление вашего скриншота нарисовано оконным менеджером: вы не можете многое сделать на уровне приложения, чтобы изменить это. Таким образом, краткий ответ «невозможен».

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

enter image description here

Я только что выбрал случайное приложение, использующее GTK3 с клиентскими украшениями, и добавил следующее CSS фрагмент:

headerbar {
  border-radius: 0 10px 0 0;
}
window {
  border-radius: 0 0 30px 20px;
}
0 голосов
/ 05 марта 2020

В вашем css вы устанавливаете границу 1px solid black, разве она не должна быть прозрачной на 1px?

...