Merge branch 'Torbuntu-master-patch-58062' into 'master'
Make compatible with latest cargo deps See merge request World/Phosh/squeekboard!527
This commit is contained in:
		@ -72,6 +72,27 @@ build_deb:arm64:
 | 
				
			|||||||
    - debuild -i -us -uc -b
 | 
					    - debuild -i -us -uc -b
 | 
				
			||||||
    - cp ../*.deb .
 | 
					    - cp ../*.deb .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					build_deb:future:
 | 
				
			||||||
 | 
					  image: debian:sid
 | 
				
			||||||
 | 
					  tags:
 | 
				
			||||||
 | 
					    - aarch64
 | 
				
			||||||
 | 
					  stage: build
 | 
				
			||||||
 | 
					  artifacts:
 | 
				
			||||||
 | 
					    paths:
 | 
				
			||||||
 | 
					      - '*.deb'
 | 
				
			||||||
 | 
					  script:
 | 
				
			||||||
 | 
					    - rm -f ../*.deb
 | 
				
			||||||
 | 
					    - mv debian/control-newer debian/control
 | 
				
			||||||
 | 
					    - apt-get -y build-dep .
 | 
				
			||||||
 | 
					    - apt-get -y install devscripts
 | 
				
			||||||
 | 
					    - REV=$(git log -1 --format=%h)
 | 
				
			||||||
 | 
					    - VER=$(dpkg-parsechangelog -SVersion)
 | 
				
			||||||
 | 
					    - DEBFULLNAME="Librem5 CI"
 | 
				
			||||||
 | 
					    - EMAIL="librem5-builds@lists.community.puri.sm"
 | 
				
			||||||
 | 
					    - dch -v"$VER+librem5ci$CI_PIPELINE_ID.$REV" "$MSG"
 | 
				
			||||||
 | 
					    - debuild -i -us -uc -b
 | 
				
			||||||
 | 
					    - cp ../*.deb .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test_lintian:
 | 
					test_lintian:
 | 
				
			||||||
  stage: test
 | 
					  stage: test
 | 
				
			||||||
  needs:
 | 
					  needs:
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										11
									
								
								Cargo.deps
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								Cargo.deps
									
									
									
									
									
								
							@ -5,6 +5,9 @@ clap = { version = "2.33.*", default-features = false }
 | 
				
			|||||||
[dependencies.cairo-rs]
 | 
					[dependencies.cairo-rs]
 | 
				
			||||||
version = "0.7.*"
 | 
					version = "0.7.*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies.cairo-sys-rs]
 | 
				
			||||||
 | 
					version = "0.9"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[dependencies.gdk]
 | 
					[dependencies.gdk]
 | 
				
			||||||
version = "0.11.*"
 | 
					version = "0.11.*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -16,6 +19,14 @@ features = ["v2_44"]
 | 
				
			|||||||
version = "0.8.*"
 | 
					version = "0.8.*"
 | 
				
			||||||
features = ["v2_44"]
 | 
					features = ["v2_44"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies.glib-sys]
 | 
				
			||||||
 | 
					version = "*"
 | 
				
			||||||
 | 
					features = ["v2_44"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[dependencies.gtk]
 | 
					[dependencies.gtk]
 | 
				
			||||||
version = "0.7.*"
 | 
					version = "0.7.*"
 | 
				
			||||||
features = ["v3_22"]
 | 
					features = ["v3_22"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies.gtk-sys]
 | 
				
			||||||
 | 
					version = "0.9"
 | 
				
			||||||
 | 
					features = ["v3_22"]
 | 
				
			||||||
 | 
				
			|||||||
@ -1,21 +0,0 @@
 | 
				
			|||||||
# Dependencies which change based on build flags
 | 
					 | 
				
			||||||
bitflags = "1.0.*"
 | 
					 | 
				
			||||||
clap = { version = "2.32.*", default-features = false }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[dependencies.cairo-rs]
 | 
					 | 
				
			||||||
version = "0.5.*"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[dependencies.gdk]
 | 
					 | 
				
			||||||
version = "0.9.*"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[dependencies.gio]
 | 
					 | 
				
			||||||
version = "0.5.*"
 | 
					 | 
				
			||||||
features = ["v2_44"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[dependencies.glib]
 | 
					 | 
				
			||||||
version = "0.6.*"
 | 
					 | 
				
			||||||
features = ["v2_44"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[dependencies.gtk]
 | 
					 | 
				
			||||||
version = "0.5.*"
 | 
					 | 
				
			||||||
features = ["v3_22"]
 | 
					 | 
				
			||||||
							
								
								
									
										33
									
								
								Cargo.deps.newer
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								Cargo.deps.newer
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					# Dependencies which change based on build flags
 | 
				
			||||||
 | 
					# For the newer-than-Byzantium config
 | 
				
			||||||
 | 
					bitflags = "1.3.*"
 | 
				
			||||||
 | 
					clap = { version = "2.33.*", default-features = false }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies.cairo-rs]
 | 
				
			||||||
 | 
					version = "0.14.*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies.cairo-sys-rs]
 | 
				
			||||||
 | 
					version = "0.14.*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies.gdk]
 | 
				
			||||||
 | 
					version = "0.14.*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies.gio]
 | 
				
			||||||
 | 
					version = "0.14.*"
 | 
				
			||||||
 | 
					features = ["v2_58"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies.glib]
 | 
				
			||||||
 | 
					version = "0.14.*"
 | 
				
			||||||
 | 
					features = ["v2_58"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies.glib-sys]
 | 
				
			||||||
 | 
					version = "0.14.*"
 | 
				
			||||||
 | 
					features = ["v2_58"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies.gtk]
 | 
				
			||||||
 | 
					version = "0.14.*"
 | 
				
			||||||
 | 
					features = ["v3_22"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dependencies.gtk-sys]
 | 
				
			||||||
 | 
					version = "0.14.*"
 | 
				
			||||||
 | 
					features = ["v3_22"]
 | 
				
			||||||
@ -17,22 +17,9 @@ name = "test_layout"
 | 
				
			|||||||
path = "@path@/examples/test_layout.rs"
 | 
					path = "@path@/examples/test_layout.rs"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[features]
 | 
					[features]
 | 
				
			||||||
gio_v0_5 = []
 | 
					glib_v0_14 = []
 | 
				
			||||||
gtk_v0_5 = []
 | 
					 | 
				
			||||||
rustc_less_1_36 = []
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Dependencies which don't change based on build flags
 | 
					# Dependencies which don't change based on build flags
 | 
				
			||||||
[dependencies.cairo-sys-rs]
 | 
					 | 
				
			||||||
version = "0.9"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[dependencies.glib-sys]
 | 
					 | 
				
			||||||
version = "*"
 | 
					 | 
				
			||||||
features = ["v2_44"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[dependencies.gtk-sys]
 | 
					 | 
				
			||||||
version = "0.9"
 | 
					 | 
				
			||||||
features = ["v3_22"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[dependencies]
 | 
					[dependencies]
 | 
				
			||||||
maplit = "1.0.*"
 | 
					maplit = "1.0.*"
 | 
				
			||||||
serde = { version = "1.0.*", features = ["derive"] }
 | 
					serde = { version = "1.0.*", features = ["derive"] }
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										58
									
								
								debian/control-newer
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								debian/control-newer
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					Source: squeekboard
 | 
				
			||||||
 | 
					Section: x11
 | 
				
			||||||
 | 
					Priority: optional
 | 
				
			||||||
 | 
					Maintainer: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
 | 
				
			||||||
 | 
					Build-Depends:
 | 
				
			||||||
 | 
					 cargo,
 | 
				
			||||||
 | 
					 debhelper-compat (= 13),
 | 
				
			||||||
 | 
					 meson (>=0.51.0),
 | 
				
			||||||
 | 
					 ninja-build,
 | 
				
			||||||
 | 
					 pkg-config,
 | 
				
			||||||
 | 
					 libglib2.0-dev,
 | 
				
			||||||
 | 
					 libgnome-desktop-3-dev,
 | 
				
			||||||
 | 
					 libgtk-3-dev,
 | 
				
			||||||
 | 
					 libfeedback-dev,
 | 
				
			||||||
 | 
					 librust-bitflags-dev (>= 1.0),
 | 
				
			||||||
 | 
					 librust-clap-dev (>= 2.32),
 | 
				
			||||||
 | 
					 librust-gio+v2-58-dev,
 | 
				
			||||||
 | 
					 librust-glib+v2-58-dev,
 | 
				
			||||||
 | 
					 librust-glib-sys-dev,
 | 
				
			||||||
 | 
					 librust-gtk+v3-22-dev (>= 0.5),
 | 
				
			||||||
 | 
					 librust-gtk-sys-dev,
 | 
				
			||||||
 | 
					 librust-maplit-1-dev (>= 1.0),
 | 
				
			||||||
 | 
					 librust-serde-derive-1-dev (>= 1.0),
 | 
				
			||||||
 | 
					 librust-serde-yaml-0.8-dev (>= 0.8),
 | 
				
			||||||
 | 
					 librust-xkbcommon-0.4+wayland-dev (>= 0.4),
 | 
				
			||||||
 | 
					 libwayland-dev (>= 1.16),
 | 
				
			||||||
 | 
					 lsb-release,
 | 
				
			||||||
 | 
					 python3,
 | 
				
			||||||
 | 
					 python3-ruamel.yaml,
 | 
				
			||||||
 | 
					 rustc,
 | 
				
			||||||
 | 
					 wayland-protocols (>= 1.14),
 | 
				
			||||||
 | 
					Standards-Version: 4.1.3
 | 
				
			||||||
 | 
					Homepage: https://source.puri.sm/Librem5/squeekboard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package: squeekboard
 | 
				
			||||||
 | 
					Architecture: linux-any
 | 
				
			||||||
 | 
					Depends:
 | 
				
			||||||
 | 
					# for the Adwaita-dark theme
 | 
				
			||||||
 | 
					 gnome-themes-extra-data,
 | 
				
			||||||
 | 
					 ${shlibs:Depends},
 | 
				
			||||||
 | 
					 ${misc:Depends},
 | 
				
			||||||
 | 
					Breaks:
 | 
				
			||||||
 | 
					 librem5-base (<< 24),
 | 
				
			||||||
 | 
					Description: On-screen keyboard for Wayland
 | 
				
			||||||
 | 
					 Virtual keyboard supporting Wayland, built primarily for the Librem 5 phone.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package: squeekboard-devel
 | 
				
			||||||
 | 
					Architecture: linux-any
 | 
				
			||||||
 | 
					Depends:
 | 
				
			||||||
 | 
					 python3,
 | 
				
			||||||
 | 
					 python3-gi,
 | 
				
			||||||
 | 
					 ${shlibs:Depends},
 | 
				
			||||||
 | 
					 ${misc:Depends},
 | 
				
			||||||
 | 
					Description: Resources for making Squeekboard layouts
 | 
				
			||||||
 | 
					 Tools for creating and testing Squeekboard layouts:
 | 
				
			||||||
 | 
					 .
 | 
				
			||||||
 | 
					  * squeekboard-entry
 | 
				
			||||||
 | 
					  * squeekboard-test-layout
 | 
				
			||||||
							
								
								
									
										8
									
								
								debian/rules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								debian/rules
									
									
									
									
										vendored
									
									
								
							@ -25,10 +25,10 @@ export RUSTFLAGS = --remap-path-prefix=$(CURDIR)=/remap-pwd $(xgot)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
distrel := $(shell lsb_release --codename --short)
 | 
					distrel := $(shell lsb_release --codename --short)
 | 
				
			||||||
ifneq (,$(filter $(distrel),buster amber))
 | 
					ifneq (,$(filter $(distrel),sid))
 | 
				
			||||||
	legacy = true
 | 
						newer = true
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
	legacy = false
 | 
						newer = false
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%:
 | 
					%:
 | 
				
			||||||
@ -38,6 +38,6 @@ endif
 | 
				
			|||||||
# causing Cargo to refuse to build with a crates.io copy
 | 
					# causing Cargo to refuse to build with a crates.io copy
 | 
				
			||||||
override_dh_auto_configure:
 | 
					override_dh_auto_configure:
 | 
				
			||||||
	[ ! -f Cargo.lock ] || rm Cargo.lock
 | 
						[ ! -f Cargo.lock ] || rm Cargo.lock
 | 
				
			||||||
	dh_auto_configure -- -Dlegacy=$(legacy)
 | 
						dh_auto_configure -- -Dnewer=$(newer)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
override_dh_autoreconf:
 | 
					override_dh_autoreconf:
 | 
				
			||||||
 | 
				
			|||||||
@ -99,9 +99,9 @@ cargo_toml_base = configure_file(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
cargo_deps = files('Cargo.deps')
 | 
					cargo_deps = files('Cargo.deps')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if get_option('legacy') == true
 | 
					if get_option('newer') == true
 | 
				
			||||||
    cargo_build_flags += ['--features', 'gtk_v0_5,gio_v0_5,rustc_less_1_36']
 | 
					    cargo_build_flags += ['--features', 'glib_v0_14']
 | 
				
			||||||
    cargo_deps = files('Cargo.deps.legacy')
 | 
					    cargo_deps = files('Cargo.deps.newer')
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
cat = find_program('cat')
 | 
					cat = find_program('cat')
 | 
				
			||||||
 | 
				
			|||||||
@ -7,9 +7,9 @@ option('tests',
 | 
				
			|||||||
       type: 'boolean', value: true,
 | 
					       type: 'boolean', value: true,
 | 
				
			||||||
       description: 'Whether to compile unit tests')
 | 
					       description: 'Whether to compile unit tests')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
option('legacy',
 | 
					option('newer',
 | 
				
			||||||
       type: 'boolean', value: false,
 | 
					       type: 'boolean', value: false,
 | 
				
			||||||
       description: 'Build with Deban Buster versions of dependencies')
 | 
					       description: 'Build with dependencies newer than those of Byzantium')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
option('strict',
 | 
					option('strict',
 | 
				
			||||||
       type: 'boolean', value: true,
 | 
					       type: 'boolean', value: true,
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,7 @@ use ::layout::c::{ Bounds, EekGtkKeyboard, Point };
 | 
				
			|||||||
use ::submission::c::Submission as CSubmission;
 | 
					use ::submission::c::Submission as CSubmission;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use glib::translate::FromGlibPtrNone;
 | 
					use glib::translate::FromGlibPtrNone;
 | 
				
			||||||
use gtk::WidgetExt;
 | 
					use gtk::prelude::WidgetExt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use std::collections::HashSet;
 | 
					use std::collections::HashSet;
 | 
				
			||||||
use std::ffi::CStr;
 | 
					use std::ffi::CStr;
 | 
				
			||||||
 | 
				
			|||||||
@ -87,7 +87,7 @@ mod c {
 | 
				
			|||||||
        let receiver = Rc::try_unwrap(receiver).expect("References still present");
 | 
					        let receiver = Rc::try_unwrap(receiver).expect("References still present");
 | 
				
			||||||
        let receiver = receiver.into_inner();
 | 
					        let receiver = receiver.into_inner();
 | 
				
			||||||
        let ctx = MainContext::default();
 | 
					        let ctx = MainContext::default();
 | 
				
			||||||
        ctx.acquire();
 | 
					        let _acqu = ctx.acquire();
 | 
				
			||||||
        receiver.attach(
 | 
					        receiver.attach(
 | 
				
			||||||
            Some(&ctx),
 | 
					            Some(&ctx),
 | 
				
			||||||
            move |msg| {
 | 
					            move |msg| {
 | 
				
			||||||
@ -95,6 +95,7 @@ mod c {
 | 
				
			|||||||
                Continue(true)
 | 
					                Continue(true)
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					        #[cfg(not(feature = "glib_v0_14"))]
 | 
				
			||||||
        ctx.release();
 | 
					        ctx.release();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -11,16 +11,11 @@ use ::manager;
 | 
				
			|||||||
use ::resources;
 | 
					use ::resources;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Traits
 | 
					// Traits
 | 
				
			||||||
use gio::ActionMapExt;
 | 
					use gio::prelude::ActionMapExt;
 | 
				
			||||||
use gio::SettingsExt;
 | 
					use gio::prelude::SettingsExt;
 | 
				
			||||||
#[cfg(feature = "gio_v0_5")]
 | 
					 | 
				
			||||||
use gio::SimpleActionExt;
 | 
					 | 
				
			||||||
use glib::translate::FromGlibPtrNone;
 | 
					use glib::translate::FromGlibPtrNone;
 | 
				
			||||||
use glib::variant::ToVariant;
 | 
					use glib::variant::ToVariant;
 | 
				
			||||||
#[cfg(not(feature = "gtk_v0_5"))]
 | 
					 | 
				
			||||||
use gtk::prelude::*;
 | 
					use gtk::prelude::*;
 | 
				
			||||||
use gtk::PopoverExt;
 | 
					 | 
				
			||||||
use gtk::WidgetExt;
 | 
					 | 
				
			||||||
use ::logging::Warn;
 | 
					use ::logging::Warn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mod c {
 | 
					mod c {
 | 
				
			||||||
@ -110,8 +105,13 @@ mod variants {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
fn get_settings(schema_name: &str) -> Option<gio::Settings> {
 | 
					fn get_settings(schema_name: &str) -> Option<gio::Settings> {
 | 
				
			||||||
    let mut error_handler = logging::Print{};
 | 
					    let mut error_handler = logging::Print{};
 | 
				
			||||||
    gio::SettingsSchemaSource::get_default()
 | 
					
 | 
				
			||||||
        .or_warn(
 | 
					    #[cfg(feature = "glib_v0_14")]
 | 
				
			||||||
 | 
					    let ss = gio::SettingsSchemaSource::default();
 | 
				
			||||||
 | 
					    #[cfg(not(feature = "glib_v0_14"))]
 | 
				
			||||||
 | 
					    let ss = gio::SettingsSchemaSource::get_default();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    ss.or_warn(
 | 
				
			||||||
            &mut error_handler,
 | 
					            &mut error_handler,
 | 
				
			||||||
            logging::Problem::Surprise,
 | 
					            logging::Problem::Surprise,
 | 
				
			||||||
            "No gsettings schemas installed.",
 | 
					            "No gsettings schemas installed.",
 | 
				
			||||||
@ -130,7 +130,11 @@ fn get_settings(schema_name: &str) -> Option<gio::Settings> {
 | 
				
			|||||||
fn set_layout(kind: String, name: String) {
 | 
					fn set_layout(kind: String, name: String) {
 | 
				
			||||||
    let settings = get_settings("org.gnome.desktop.input-sources");
 | 
					    let settings = get_settings("org.gnome.desktop.input-sources");
 | 
				
			||||||
    if let Some(settings) = settings {
 | 
					    if let Some(settings) = settings {
 | 
				
			||||||
 | 
					        #[cfg(feature = "glib_v0_14")]
 | 
				
			||||||
 | 
					        let inputs = settings.value("sources");
 | 
				
			||||||
 | 
					        #[cfg(not(feature = "glib_v0_14"))]
 | 
				
			||||||
        let inputs = settings.get_value("sources").unwrap();
 | 
					        let inputs = settings.get_value("sources").unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let current = (kind.clone(), name.clone());
 | 
					        let current = (kind.clone(), name.clone());
 | 
				
			||||||
        let inputs = variants::get_tuples(inputs).into_iter()
 | 
					        let inputs = variants::get_tuples(inputs).into_iter()
 | 
				
			||||||
            .filter(|t| t != ¤t);
 | 
					            .filter(|t| t != ¤t);
 | 
				
			||||||
@ -254,7 +258,11 @@ pub fn show(
 | 
				
			|||||||
    let settings = get_settings("org.gnome.desktop.input-sources");
 | 
					    let settings = get_settings("org.gnome.desktop.input-sources");
 | 
				
			||||||
    let inputs = settings
 | 
					    let inputs = settings
 | 
				
			||||||
        .map(|settings| {
 | 
					        .map(|settings| {
 | 
				
			||||||
 | 
					            #[cfg(feature = "glib_v0_14")]
 | 
				
			||||||
 | 
					            let inputs = settings.value("sources");
 | 
				
			||||||
 | 
					            #[cfg(not(feature = "glib_v0_14"))]
 | 
				
			||||||
            let inputs = settings.get_value("sources").unwrap();
 | 
					            let inputs = settings.get_value("sources").unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            variants::get_tuples(inputs)
 | 
					            variants::get_tuples(inputs)
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
        .unwrap_or_else(|| Vec::new());
 | 
					        .unwrap_or_else(|| Vec::new());
 | 
				
			||||||
@ -285,8 +293,18 @@ pub fn show(
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let model: gio::Menu = {
 | 
				
			||||||
 | 
					        #[cfg(feature = "glib_v0_14")]
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            let builder = gtk::Builder::from_resource("/sm/puri/squeekboard/popover.ui");
 | 
				
			||||||
 | 
					            builder.object("app-menu").unwrap()
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        #[cfg(not(feature = "glib_v0_14"))]
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
            let builder = gtk::Builder::new_from_resource("/sm/puri/squeekboard/popover.ui");
 | 
					            let builder = gtk::Builder::new_from_resource("/sm/puri/squeekboard/popover.ui");
 | 
				
			||||||
    let model: gio::Menu = builder.get_object("app-menu").unwrap();
 | 
					            builder.get_object("app-menu").unwrap()
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (tr, l) in human_names.iter().rev() {
 | 
					    for (tr, l) in human_names.iter().rev() {
 | 
				
			||||||
        let detailed_action = format!("layout::{}", l.get_name());
 | 
					        let detailed_action = format!("layout::{}", l.get_name());
 | 
				
			||||||
@ -294,7 +312,11 @@ pub fn show(
 | 
				
			|||||||
        model.prepend_item (&item);
 | 
					        model.prepend_item (&item);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #[cfg(feature = "glib_v0_14")]
 | 
				
			||||||
 | 
					    let menu = gtk::Popover::from_model(Some(&window), &model);
 | 
				
			||||||
 | 
					    #[cfg(not(feature = "glib_v0_14"))]
 | 
				
			||||||
    let menu = gtk::Popover::new_from_model(Some(&window), &model);
 | 
					    let menu = gtk::Popover::new_from_model(Some(&window), &model);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    menu.set_pointing_to(>k::Rectangle {
 | 
					    menu.set_pointing_to(>k::Rectangle {
 | 
				
			||||||
        x: position.x.ceil() as i32,
 | 
					        x: position.x.ceil() as i32,
 | 
				
			||||||
        y: position.y.ceil() as i32,
 | 
					        y: position.y.ceil() as i32,
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										33
									
								
								src/style.rs
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								src/style.rs
									
									
									
									
									
								
							@ -21,7 +21,7 @@
 | 
				
			|||||||
use std::env;
 | 
					use std::env;
 | 
				
			||||||
use ::logging;
 | 
					use ::logging;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use glib::object::ObjectExt;
 | 
					use glib::prelude::ObjectExt;
 | 
				
			||||||
use logging::Warn;
 | 
					use logging::Warn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Gathers stuff defined in C or called by C
 | 
					/// Gathers stuff defined in C or called by C
 | 
				
			||||||
@ -31,7 +31,7 @@ pub mod c {
 | 
				
			|||||||
    use gtk;
 | 
					    use gtk;
 | 
				
			||||||
    use gtk_sys;
 | 
					    use gtk_sys;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    use gtk::CssProviderExt;
 | 
					    use gtk::prelude::CssProviderExt;
 | 
				
			||||||
    use glib::translate::ToGlibPtr;
 | 
					    use glib::translate::ToGlibPtr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// Loads the layout style based on current theme
 | 
					    /// Loads the layout style based on current theme
 | 
				
			||||||
@ -40,8 +40,13 @@ pub mod c {
 | 
				
			|||||||
    pub extern "C"
 | 
					    pub extern "C"
 | 
				
			||||||
    fn squeek_load_style() -> *const gtk_sys::GtkCssProvider {
 | 
					    fn squeek_load_style() -> *const gtk_sys::GtkCssProvider {
 | 
				
			||||||
        unsafe { gtk::set_initialized() };
 | 
					        unsafe { gtk::set_initialized() };
 | 
				
			||||||
        let theme = gtk::Settings::get_default()
 | 
					        
 | 
				
			||||||
            .map(|settings| get_theme_name(&settings));
 | 
					        #[cfg(feature = "glib_v0_14")]
 | 
				
			||||||
 | 
					        let theme = gtk::Settings::default();
 | 
				
			||||||
 | 
					        #[cfg(not(feature = "glib_v0_14"))]
 | 
				
			||||||
 | 
					        let theme = gtk::Settings::get_default();
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        let theme = theme.map(|settings| get_theme_name(&settings));
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        let css_name = path_from_theme(theme);
 | 
					        let css_name = path_from_theme(theme);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -93,19 +98,31 @@ fn get_theme_name(settings: >k::Settings) -> GtkTheme {
 | 
				
			|||||||
            e
 | 
					            e
 | 
				
			||||||
        }).ok();
 | 
					        }).ok();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #[cfg(feature = "glib_v0_14")]
 | 
				
			||||||
 | 
					    let prop = |s: >k::Settings, name| s.property(name);
 | 
				
			||||||
 | 
					    #[cfg(not(feature = "glib_v0_14"))]
 | 
				
			||||||
 | 
					    let prop = |s: >k::Settings, name| s.get_property(name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #[cfg(feature = "glib_v0_14")]
 | 
				
			||||||
 | 
					    fn check<T, E: std::fmt::Display>(v: Result<T, E>) -> Option<T> {
 | 
				
			||||||
 | 
					        v.or_print(logging::Problem::Surprise, "Key not of expected type")
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    #[cfg(not(feature = "glib_v0_14"))]
 | 
				
			||||||
 | 
					    fn check<T>(v: Option<T>) -> Option<T> { v }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    match env_theme {
 | 
					    match env_theme {
 | 
				
			||||||
        Some(theme) => theme,
 | 
					        Some(theme) => theme,
 | 
				
			||||||
        None => GtkTheme {
 | 
					        None => GtkTheme {
 | 
				
			||||||
            name: {
 | 
					            name: {
 | 
				
			||||||
                settings.get_property("gtk-theme-name")
 | 
					                prop(settings, "gtk-theme-name")
 | 
				
			||||||
                    .or_print(logging::Problem::Surprise, "No theme name")
 | 
					                    .or_print(logging::Problem::Surprise, "No theme name")
 | 
				
			||||||
                    .and_then(|value| value.get::<String>())
 | 
					                    .and_then(|value| check(value.get::<String>()))
 | 
				
			||||||
                    .unwrap_or(DEFAULT_THEME_NAME.into())
 | 
					                    .unwrap_or(DEFAULT_THEME_NAME.into())
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            variant: {
 | 
					            variant: {
 | 
				
			||||||
                settings.get_property("gtk-application-prefer-dark-theme")
 | 
					                prop(settings, "gtk-application-prefer-dark-theme")
 | 
				
			||||||
                    .or_print(logging::Problem::Surprise, "No settings key")
 | 
					                    .or_print(logging::Problem::Surprise, "No settings key")
 | 
				
			||||||
                    .and_then(|value| value.get::<bool>())
 | 
					                    .and_then(|value| check(value.get::<bool>()))
 | 
				
			||||||
                    .and_then(|dark_preferred| match dark_preferred {
 | 
					                    .and_then(|dark_preferred| match dark_preferred {
 | 
				
			||||||
                        true => Some("dark".into()),
 | 
					                        true => Some("dark".into()),
 | 
				
			||||||
                        false => None,
 | 
					                        false => None,
 | 
				
			||||||
 | 
				
			|||||||
@ -107,15 +107,8 @@ foreach layout : [
 | 
				
			|||||||
        extra += ['allow_missing_return']
 | 
					        extra += ['allow_missing_return']
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    # Older Cargo seens to be sensitive to something
 | 
					 | 
				
			||||||
    # about the RUST_FLAGS env var, and rebuilds all tests when it's set,
 | 
					 | 
				
			||||||
    # increasing test time by 2 orders of magnitude.
 | 
					 | 
				
			||||||
    # Let it have its way.
 | 
					 | 
				
			||||||
    if get_option('legacy') == true
 | 
					 | 
				
			||||||
        timeout = 300
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
    timeout = 30
 | 
					    timeout = 30
 | 
				
			||||||
    endif
 | 
					
 | 
				
			||||||
    test(
 | 
					    test(
 | 
				
			||||||
        'test_layout_' + layout,
 | 
					        'test_layout_' + layout,
 | 
				
			||||||
        cargo_script,
 | 
					        cargo_script,
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user