Я работаю с
Ada / Gtk 3 / Gtkada / Adacore / Gtk.Css_Provider / Gtk.Style_Context / Gtk.Style_Provider
и я пытаюсь изменить внешний вид кнопки через CSS, но не могу заставить работать функцию Gtk.Style_Context.Add_Provider.
Вот мой код:
https://pastebin.com/xrhXMkpH
function ColorButton_v2( aButton : in out Gtk.Button.Gtk_Button ) return Gtk.Widget.Gtk_Widget is
aCssData : String := "button { background-color: cyan; background-image: none; } " &
"button:hover { background-color: green; background-image: none; } " &
"button:active { background-color: brown; background-image: none; } ";
aError : Glib.Error.GError_Access := null;
isCssProviderSetUp : Boolean := False;
aCssProvider : Gtk.Css_Provider.Gtk_Css_Provider := Gtk.Css_Provider.Gtk_Css_Provider_New;
aStyleContext : Gtk.Style_Context.Gtk_Style_Context := Gtk.Style_Context.Gtk_Style_Context_New;
aStyleProvider : Gtk.Style_Provider.Gtk_Style_Provider := Gtk.Style_Provider.Gtk_Style_Provider( aCssProvider );
begin
Ada.Text_IO.Put_Line( "aCssProvider.Is_Created =" & aCssProvider.Is_Created'Img );
isCssProviderSetUp := Gtk.Css_Provider.Load_From_Data( Self => aCssProvider,
Data => aCssData,
Error => aError );
Ada.Text_IO.Put_Line( "aStyleContext.Is_Created = " & aStyleContext.Is_Created'Img );
aStyleContext := Gtk.Style_Context.Get_Style_Context( Widget => Gtk.Widget.Gtk_Widget( aButton ) );
Ada.Text_IO.Put_Line( "aStyleContext.Is_Created = " & aStyleContext.Is_Created'Img );
Gtk.Style_Context.Add_Provider( Self => aStyleContext,
Provider => aStyleProvider,
Priority => Gtk.Style_Provider.Priority_User );
return Gtk.Widget.Gtk_Widget( aButton );
end;
Он основан на этом посте:
https://github.com/ruby-gnome2/ruby-gnome2/issues/1084