Fix overlay layering

This commit is contained in:
kramo
2023-03-11 23:41:25 +01:00
parent ddf73dbc03
commit 4ed6ab2bab
2 changed files with 27 additions and 32 deletions

View File

@@ -30,33 +30,32 @@ template game : Box {
Box {
Overlay overlay {
[overlay]
Revealer button_revealer {
Revealer play_revealer {
reveal-child: false;
transition-type: crossfade;
Button button_play {
halign: start;
label: _("Play");
margin-start: 6;
margin-end: 6;
margin-top: 6;
margin-bottom: 6;
}
}
[overlay]
Revealer menu_revealer {
transition-type: crossfade;
MenuButton menu_button {
icon-name: "view-more-symbolic";
margin-top: 6;
margin-bottom: 6;
margin-end: 6;
margin-start: 6;
menu-model: game_options;
halign: end;
Box {
Button button_play {
halign: start;
label: _("Play");
margin-start: 6;
margin-end: 6;
margin-top: 6;
margin-bottom: 6;
}
MenuButton menu_button {
icon-name: "view-more-symbolic";
margin-top: 6;
margin-bottom: 6;
margin-end: 6;
margin-start: 6;
menu-model: game_options;
hexpand: true;
halign: end;
styles [
"flat",
]
styles [
"flat",
]
}
}
}
Revealer title_revealer {

View File

@@ -30,9 +30,8 @@ class game(Gtk.Box):
cover_button = Gtk.Template.Child()
menu_button = Gtk.Template.Child()
hidden_game_options = Gtk.Template.Child()
button_revealer = Gtk.Template.Child()
play_revealer = Gtk.Template.Child()
title_revealer = Gtk.Template.Child()
menu_revealer = Gtk.Template.Child()
def __init__(self, parent_widget, title, pixbuf, game_id, **kwargs):
super().__init__(**kwargs)
@@ -47,8 +46,7 @@ class game(Gtk.Box):
self.event_contoller_motion = Gtk.EventControllerMotion.new()
self.overlay.add_controller(self.event_contoller_motion)
self.overlay.set_measure_overlay(self.button_revealer, True)
self.overlay.set_measure_overlay(self.menu_revealer, True)
self.overlay.set_measure_overlay(self.play_revealer, True)
self.button_play.connect("clicked", self.launch_game)
self.event_contoller_motion.connect("enter", self.show_play)
@@ -56,15 +54,13 @@ class game(Gtk.Box):
self.menu_button.get_popover().connect("notify::visible", self.hide_play)
def show_play(self, widget, *args):
self.button_revealer.set_reveal_child(True)
self.play_revealer.set_reveal_child(True)
self.title_revealer.set_reveal_child(False)
self.menu_revealer.set_reveal_child(True)
def hide_play(self, widget, *args):
if not self.menu_button.get_active():
self.button_revealer.set_reveal_child(False)
self.play_revealer.set_reveal_child(False)
self.title_revealer.set_reveal_child(True)
self.menu_revealer.set_reveal_child(False)
def launch_game(self, widget):
self.parent_widget.set_active_game(None, None, self.game_id)