Commit 2a92106a authored by Christopher Davis's avatar Christopher Davis

paginator: Use AdwToolbarView, subclass AdwBin

* GtkBox isn't meant to be subclassed, and apps should not do it. Instead they should subclass AdwBin or GtkWidget depending on their use case. * The main reason we were using GtkBox was to contain our header and our content. Now we use AdwToolbarView for that purpose.
parent a91c4ec7
......@@ -521,12 +521,11 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libadwaita"
version = "0.3.1"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1c4efd2020a4fcedbad2c4a97de97bf6045e5dc49d61d5a5d0cfd753db60700"
checksum = "1ab9c0843f9f23ff25634df2743690c3a1faffe0a190e60c490878517eb81abf"
dependencies = [
"bitflags",
"futures-channel",
"gdk-pixbuf",
"gdk4",
"gio",
......@@ -534,15 +533,14 @@ dependencies = [
"gtk4",
"libadwaita-sys",
"libc",
"once_cell",
"pango",
]
[[package]]
name = "libadwaita-sys"
version = "0.3.0"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0727b85b4fe2b1bed5ac90df6343de15cbf8118bfb96d7c3cc1512681a4b34ac"
checksum = "4231cb2499a9f0c4cdfa4885414b33e39901ddcac61150bc0bb4ff8a57ede404"
dependencies = [
"gdk4-sys",
"gio-sys",
......
......@@ -9,6 +9,6 @@ edition = "2021"
gtk = { package = "gtk4", version = "0.6", features= ["gnome_44"]}
log = "0.4"
gettext-rs = { version = "0.7", features = ["gettext-system"] }
adw = {package = "libadwaita", version = "0.3"}
adw = {package = "libadwaita", version = "0.4"}
pretty_env_logger = "0.4"
regex = "1.5"
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="PaginatorWidget" parent="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkHeaderBar">
<property name="show-title-buttons">True</property>
<property name="title-widget">
<object class="AdwCarouselIndicatorDots" id="carousel_dots">
<property name="carousel">carousel</property>
</object>
</property>
<style>
<class name="flat" />
</style>
</object>
</child>
<child>
<object class="GtkOverlay" id="previous_overlay">
<property name="valign">center</property>
<child type="overlay">
<object class="GtkButton" id="previous_btn">
<property name="margin-start">12</property>
<property name="icon-name">left-large-symbolic</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="action-name">win.previous-page</property>
<property name="tooltip-text" translatable="yes">Previous</property>
<style>
<class name="circular" />
</style>
<template class="PaginatorWidget" parent="AdwBin">
<property name="child">
<object class="AdwToolbarView">
<child type="top">
<object class="GtkHeaderBar">
<property name="title-widget">
<object class="AdwCarouselIndicatorDots" id="carousel_dots">
<property name="carousel">carousel</property>
</object>
</property>
</object>
</child>
<child type="overlay">
<object class="GtkButton" id="next_btn">
<property name="margin-end">12</property>
<property name="icon-name">right-large-symbolic</property>
<property name="halign">end</property>
<property name="content">
<object class="GtkOverlay" id="previous_overlay">
<property name="valign">center</property>
<property name="action-name">win.next-page</property>
<property name="tooltip-text" translatable="yes">Next</property>
<style>
<class name="circular" />
</style>
<child type="overlay">
<object class="GtkButton" id="previous_btn">
<property name="margin-start">12</property>
<property name="icon-name">left-large-symbolic</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="action-name">win.previous-page</property>
<property name="tooltip-text" translatable="yes">Previous</property>
<style>
<class name="circular" />
</style>
</object>
</child>
<child type="overlay">
<object class="GtkButton" id="next_btn">
<property name="margin-end">12</property>
<property name="icon-name">right-large-symbolic</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="action-name">win.next-page</property>
<property name="tooltip-text" translatable="yes">Next</property>
<style>
<class name="circular" />
</style>
</object>
</child>
<child type="overlay">
<object class="GtkButton" id="start_btn">
<property name="margin-end">12</property>
<property name="icon-name">right-large-symbolic</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="action-name">win.start-tour</property>
<property name="tooltip-text" translatable="yes">Start</property>
<style>
<class name="suggested-action" />
<class name="circular" />
</style>
</object>
</child>
<child>
<object class="AdwCarousel" id="carousel">
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<signal name="notify::position" handler="on_position_notify" swapped="true" />
</object>
</child>
</object>
</child>
<child type="overlay">
<object class="GtkButton" id="start_btn">
<property name="margin-end">12</property>
<property name="icon-name">right-large-symbolic</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="action-name">win.start-tour</property>
<property name="tooltip-text" translatable="yes">Start</property>
<style>
<class name="suggested-action" />
<class name="circular" />
</style>
</object>
</child>
<child>
<object class="AdwCarousel" id="carousel">
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<signal name="notify::position" handler="on_position_notify" swapped="true" />
</object>
</child>
</property>
</object>
</child>
</property>
<child>
<object class="GtkEventControllerKey">
<signal name="key-pressed" handler="on_key_pressed" swapped="true" />
......
use gtk::{gdk, glib, prelude::*, subclass::prelude::*};
use adw::subclass::prelude::*;
use gtk::{gdk, glib, prelude::*};
mod imp {
use std::cell::{Cell, RefCell};
......@@ -24,7 +25,7 @@ mod imp {
#[glib::object_subclass]
impl ObjectSubclass for PaginatorWidget {
const NAME: &'static str = "PaginatorWidget";
type ParentType = gtk::Box;
type ParentType = adw::Bin;
type Type = super::PaginatorWidget;
type Interfaces = (gtk::Buildable,);
......@@ -46,7 +47,7 @@ mod imp {
}
}
impl WidgetImpl for PaginatorWidget {}
impl BoxImpl for PaginatorWidget {}
impl BinImpl for PaginatorWidget {}
impl BuildableImpl for PaginatorWidget {
fn add_child(&self, builder: &gtk::Builder, child: &glib::Object, type_: Option<&str>) {
if !self.carousel.is_bound() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment