[fractal] Update gtk-rs stack



commit 38628c43112353c931878da55250646eb75aeaa0
Author: Christopher Davis <brainblasted disroot org>
Date:   Mon May 6 22:08:08 2019 -0400

    Update gtk-rs stack
    
    Closes https://gitlab.gnome.org/GNOME/fractal/issues/489

 Cargo.lock                                     | 618 +++++++++++++------------
 fractal-gtk/Cargo.toml                         |  32 +-
 fractal-gtk/src/actions/account_settings.rs    |   2 +-
 fractal-gtk/src/actions/mod.rs                 |   1 -
 fractal-gtk/src/actions/room_history.rs        |   1 -
 fractal-gtk/src/actions/room_settings.rs       |   2 +-
 fractal-gtk/src/app/connect/direct.rs          |  11 +-
 fractal-gtk/src/app/connect/directory.rs       |   4 +-
 fractal-gtk/src/app/connect/invite.rs          |  12 +-
 fractal-gtk/src/app/connect/markdown.rs        |  15 +-
 fractal-gtk/src/app/connect/roomlist_search.rs |   5 +-
 fractal-gtk/src/app/connect/send.rs            |  10 +-
 fractal-gtk/src/app/mod.rs                     |  19 +-
 fractal-gtk/src/appop/account.rs               |  17 +-
 fractal-gtk/src/appop/attach.rs                |   6 +-
 fractal-gtk/src/appop/directory.rs             |   8 +-
 fractal-gtk/src/appop/invite.rs                |   4 +-
 fractal-gtk/src/appop/login.rs                 |   8 +-
 fractal-gtk/src/appop/member.rs                |   8 +-
 fractal-gtk/src/appop/message.rs               |   3 +-
 fractal-gtk/src/appop/notify.rs                |   4 +-
 fractal-gtk/src/appop/room.rs                  |  17 +-
 fractal-gtk/src/main.rs                        |   2 +-
 fractal-gtk/src/util.rs                        |   1 -
 fractal-gtk/src/widgets/address.rs             |  37 +-
 fractal-gtk/src/widgets/autocomplete.rs        |  44 +-
 fractal-gtk/src/widgets/avatar.rs              |  21 +-
 fractal-gtk/src/widgets/divider.rs             |   4 +-
 fractal-gtk/src/widgets/image.rs               |  42 +-
 fractal-gtk/src/widgets/kicked_dialog.rs       |   4 +-
 fractal-gtk/src/widgets/login.rs               |  15 +-
 fractal-gtk/src/widgets/media_viewer.rs        |   6 +-
 fractal-gtk/src/widgets/member.rs              |  12 +-
 fractal-gtk/src/widgets/members_list.rs        |  21 +-
 fractal-gtk/src/widgets/message.rs             |  48 +-
 fractal-gtk/src/widgets/room.rs                |  14 +-
 fractal-gtk/src/widgets/room_history.rs        |   8 +-
 fractal-gtk/src/widgets/room_settings.rs       |  16 +-
 fractal-gtk/src/widgets/roomlist.rs            |  40 +-
 fractal-gtk/src/widgets/roomrow.rs             |  47 +-
 fractal-gtk/src/widgets/scroll_widget.rs       |  24 +-
 fractal-gtk/src/widgets/sourceview_entry.rs    |  13 +-
 fractal-matrix-api/Cargo.toml                  |   2 +-
 fractal-matrix-api/src/client.rs               |  12 +-
 fractal-matrix-api/src/util.rs                 |   2 +-
 45 files changed, 605 insertions(+), 637 deletions(-)
---
diff --git a/Cargo.lock b/Cargo.lock
index 1996c22d..7bd7c117 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -64,13 +64,26 @@ dependencies = [
  "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
+[[package]]
+name = "atk"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+dependencies = [
+ "atk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
 [[package]]
 name = "atk-sys"
-version = "0.7.0"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
@@ -174,24 +187,23 @@ dependencies = [
 
 [[package]]
 name = "cairo-rs"
-version = "0.5.0"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-sys-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "cairo-sys-rs"
-version = "0.7.0"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
  "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -446,7 +458,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index";
 name = "fractal-gtk"
 version = "4.0.0"
 dependencies = [
- "cairo-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-rs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "comrak 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -454,33 +466,33 @@ dependencies = [
  "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "fractal-matrix-api 4.0.0",
  "fragile 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-pixbuf 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-pixbuf 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-pixbuf-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "gettext-rs 0.4.1 (git+https://github.com/danigm/gettext-rs?branch=no-gettext)",
- "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gspell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-editing-services 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-player 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gtk 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gspell 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-editing-services 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-player 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gtk 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "html2pango 0.1.0 (git+https://gitlab.gnome.org/World/html2pango)",
  "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "letter-avatar 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libhandy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "letter-avatar 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libhandy 0.3.1 (git+https://gitlab.gnome.org/World/Rust/libhandy-rs)",
  "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "loggerv 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "mdl 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "pango 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "pangocairo 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pango 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pangocairo 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "secret-service 0.4.0 
(git+https://github.com/jhaye/secret-service-rs?rev=3c265527e43376fe8e00ddfa645a70813c35f449)",
  "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)",
- "sourceview 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sourceview 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -490,7 +502,7 @@ version = "4.0.0"
 dependencies = [
  "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "directories 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "md5 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -557,61 +569,61 @@ source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
 name = "gdk"
-version = "0.9.0"
+version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "cairo-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-pixbuf 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-rs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-sys-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-pixbuf 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
- "pango 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pango 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gdk-pixbuf"
-version = "0.5.0"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-pixbuf-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gdk-pixbuf-sys"
-version = "0.7.0"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gdk-sys"
-version = "0.7.0"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-sys-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-pixbuf-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
- "pango-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pango-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -642,45 +654,45 @@ dependencies = [
 
 [[package]]
 name = "gio"
-version = "0.5.1"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "fragile 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gio-sys"
-version = "0.7.0"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "glib"
-version = "0.6.1"
+version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "glib-sys"
-version = "0.7.0"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -689,55 +701,55 @@ dependencies = [
 
 [[package]]
 name = "gobject-sys"
-version = "0.7.0"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gspell"
-version = "0.1.0"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "gdk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gspell-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gtk 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gtk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gspell-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gtk 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gtk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gspell-sys"
-version = "0.1.0"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gtk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gtk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gstreamer"
-version = "0.12.2"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "muldiv 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -746,233 +758,236 @@ dependencies = [
 
 [[package]]
 name = "gstreamer-audio-sys"
-version = "0.6.2"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-base-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-base-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gstreamer-base"
-version = "0.12.2"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-base-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-base-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gstreamer-base-sys"
-version = "0.6.2"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gstreamer-editing-services"
-version = "0.12.2"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-base 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-base-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-editing-services-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-pbutils 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-pbutils-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-base 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-base-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-editing-services-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-pbutils 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-pbutils-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gstreamer-editing-services-sys"
-version = "0.6.2"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-base-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-pbutils-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-base-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-pbutils-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gstreamer-pbutils"
-version = "0.12.2"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-pbutils-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-pbutils-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gstreamer-pbutils-sys"
-version = "0.6.2"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-audio-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-video-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-audio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-video-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gstreamer-player"
-version = "0.12.2"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-player-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-video 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-player-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-video 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gstreamer-player-sys"
-version = "0.6.2"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-video-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-video-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gstreamer-sys"
-version = "0.6.2"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gstreamer-video"
-version = "0.12.2"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-base 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-base-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-video-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-base 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-base-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-video-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gstreamer-video-sys"
-version = "0.6.2"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-base-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-base-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gtk"
-version = "0.5.0"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
+ "atk 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "cairo-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-rs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-sys-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-pixbuf 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gtk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-pixbuf 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-pixbuf-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gtk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
- "pango 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pango 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pango-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gtk-source-sys"
-version = "0.7.0"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gtk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-sys-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-pixbuf-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gtk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "gtk-sys"
-version = "0.7.0"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "atk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "atk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-sys-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-pixbuf-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
- "pango-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pango-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -1136,12 +1151,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
 name = "letter-avatar"
-version = "1.0.2"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "cairo-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "pango 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "pangocairo 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-rs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pango 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pangocairo 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -1162,36 +1177,36 @@ dependencies = [
 
 [[package]]
 name = "libhandy"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index";
+version = "0.3.1"
+source = "git+https://gitlab.gnome.org/World/Rust/libhandy-rs#bf87276c7d474e29f2c5668fcb802c3ddd204ba6";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gtk 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gtk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gtk 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gtk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
- "libhandy-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libhandy-sys 0.3.1 (git+https://gitlab.gnome.org/World/Rust/libhandy-rs)",
 ]
 
 [[package]]
 name = "libhandy-sys"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index";
+version = "0.3.1"
+source = "git+https://gitlab.gnome.org/World/Rust/libhandy-rs#bf87276c7d474e29f2c5668fcb802c3ddd204ba6";
 dependencies = [
- "gdk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gtk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gtk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
@@ -1531,55 +1546,55 @@ dependencies = [
 
 [[package]]
 name = "pango"
-version = "0.5.0"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
- "pango-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pango-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "pango-sys"
-version = "0.7.0"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "pangocairo"
-version = "0.6.0"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "cairo-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-rs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-sys-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
- "pango 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "pango-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "pangocairo-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pango 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pango-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pangocairo-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "pangocairo-sys"
-version = "0.8.0"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
- "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-sys-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
- "pango-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pango-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
@@ -2110,25 +2125,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index";
 
 [[package]]
 name = "sourceview"
-version = "0.5.0"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 dependencies = [
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "cairo-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-pixbuf 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gtk 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gtk-source-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "gtk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cairo-rs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-pixbuf 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-pixbuf-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gdk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gtk 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gtk-source-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gtk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)",
- "pango 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pango 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -2550,7 +2565,8 @@ dependencies = [
 "checksum argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = 
"3f67b0b6a86dae6e67ff4ca2b6201396074996379fba2b92ff649126f37cb392"
 "checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = 
"0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee"
 "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = 
"92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71"
-"checksum atk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"c7017e53393e713212aed7aea336b6553be4927f58c37070a56c2fe3d107e489"
+"checksum atk 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"7ce8fd2055aa2ce617754c5a701682a06b4b57093cbbcbd8f068622a8debae96"
+"checksum atk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"83744274abbcc2242f845a25cf84b9adb5991eaecc8f7c67cffd69ea636f4ff8"
 "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = 
"9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652"
 "checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799"
 "checksum backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = 
"cd5a90e2b463010cd0e0ce9a11d4a9d5d58d9f41d4a6ba3dcaf9e68b466e88b4"
@@ -2563,8 +2579,8 @@ dependencies = [
 "checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40"
 "checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb"
 "checksum bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = 
"40ade3d27603c2cb345eb0912aec461a6dec7e06a4ae48589904e808335c7afa"
-"checksum cairo-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"dd940f0d609699e343ef71c4af5f66423afbf30d666f796dabd8fd15229cf5b6"
-"checksum cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"d25596627380be4381247dba06c69ad05ca21b3b065bd9827e416882ac41dcd2"
+"checksum cairo-rs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"9e09d8a818b2ccc8983f04d95a9350c3cf8d24cc456cedca3b88fa3a81fdc0e2"
+"checksum cairo-sys-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"b3fa13914fdc013387afa771f554f2f71d6ae931f4e5be9246c337d60c3dc484"
 "checksum cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)" = 
"4390a3b5f4f6bce9c1d0c00128379df433e53777fdd30e92f16a529332baec4e"
 "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = 
"082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4"
 "checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = 
"45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878"
@@ -2602,36 +2618,36 @@ dependencies = [
 "checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = 
"49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b"
 "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = 
"ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4"
 "checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = 
"8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"
-"checksum gdk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"bcc52c7244046df9d959df87289f1fc5cca23f9f850bab0c967963e2ecb83a96"
-"checksum gdk-pixbuf 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"bc3aa730cb4df3de5d9fed59f43afdf9e5fb2d3d10bfcbd04cec031435ce87f5"
-"checksum gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"08284f16ce4d909b10d785a763ba190e222d2c1557b29908bf0a661e27a8ac3b"
-"checksum gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"108548ebf5329b551f2b97ab356908d14627905abb74b936c3372de1535aee81"
+"checksum gdk 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"9c229b642a3cf701f92246b131fda2eaabaa5f44f4a255dee65939ebd0ab0141"
+"checksum gdk-pixbuf 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"9a1bcb11b461ff5638f6bf03c9f173d3dc250eabc8e57a60644b6f529d3a7c91"
+"checksum gdk-pixbuf-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"10e1115ca451907b6d775fc0392641d14c89277662d98828412fb68555e7e8c8"
+"checksum gdk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"458dc6243bdda4aa1693f5f18231f55b98e9c99c50b3b9bd673cf461ef1710ea"
 "checksum generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"ef25c5683767570c2bbd7deba372926a55eaae9982d7726ee2a1050239d45b9d"
 "checksum gettext-rs 0.4.1 (git+https://github.com/danigm/gettext-rs?branch=no-gettext)" = "<none>"
 "checksum gettext-sys 0.19.8 (git+https://github.com/danigm/gettext-rs?branch=no-gettext)" = "<none>"
-"checksum gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"29a44b051990573448edc80b1995237f8b97b5734d2aec05105b9242aa10af11"
-"checksum gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"6975ada29f7924dc1c90b30ed3b32d777805a275556c05e420da4fbdc22eb250"
-"checksum glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"7a333edf5b9f1411c246ef14e7881b087255f04c56dbef48c64a0cb039b4b340"
-"checksum glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"3573351e846caed9f11207b275cd67bc07f0c2c94fb628e5d7c92ca056c7882d"
-"checksum gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"08475e4a08f27e6e2287005950114735ed61cec2cb8c1187682a5aec8c69b715"
-"checksum gspell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"eb1549f01aede5bf1e3b007b042757cc8dcad68bae0e04db4ed4c12ca36ebd40"
-"checksum gspell-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"c9ed32adbf4038cbcef544ca89e83aa1fa4ca26a87fe66e5d30fac1a16c164c0"
-"checksum gstreamer 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"fe29f74c4ae5ac7d2b82fd833ddf7d74672a5ecbfddcab460f84348ec95ba6ec"
-"checksum gstreamer-audio-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"8c413b34cd8755d68f43ad0c13518722e3465e939d34a8a1c6fa848a7bc5743a"
-"checksum gstreamer-base 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"434513ab1a75e1a36c0f7b89912ab6be6e1fdb5a4a3a63e578e04b7221db6b06"
-"checksum gstreamer-base-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"c18fe8a1719e030e046e63b3b1093ef57ed63e04a4ececcf5f76b63137c446b9"
-"checksum gstreamer-editing-services 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"67e2ada05902429c8d40197f5fbea5cec4025ad67b7853294397fe23ad8938ce"
-"checksum gstreamer-editing-services-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"5f36a514c4e724cb120f48cc8250c4689c3035d4a0bdd9225c89c34022590bf8"
-"checksum gstreamer-pbutils 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"df50236e4cdafe7fe68d5b77a81e8f2f5c7c6ff22efe63ec5eeb0444595e6a8a"
-"checksum gstreamer-pbutils-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"1b3e456fdd32e7f3af41217c47a36244b87a655330866f965c223a9046eedcca"
-"checksum gstreamer-player 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"4ef9c1cc83930451652a03d2b1e5cfb7ace7605de5cc8ac4cdc3ee70262665f2"
-"checksum gstreamer-player-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"785dfedc70b3ae7dbc7b1a51e9323c17dc8b5bb6f939b61a4b26a228960c679e"
-"checksum gstreamer-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"548bbd6a222826340953d2c1d50c3695463719cfb6414499300de5909a6ba1ea"
-"checksum gstreamer-video 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"c75f8a4d080f3bb970d2a3dd755d46d018fe1ae3d644791bd28007983059b57c"
-"checksum gstreamer-video-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"9a13d4328b37137c66349836fe0898c962b7b714f27e1ac4717de0fab536592c"
-"checksum gtk 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"56a6b30f194f09a17bb7ffa95c3ecdb405abd3b75ff981f831b1f6d18fe115ff"
-"checksum gtk-source-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"8b2d123493c306e4b9c6f1f25afc420c1d1eee05e5e1146cb7bdfa6370c550e7"
-"checksum gtk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"d487d333a4b87072e6bf9f2e55befa0ebef01b9496c2e263c0f4a1ff3d6c04b1"
+"checksum gio 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"ff120a666f4a0f41cca7554fbac82defc2562e90eccf3b26a30e6461fa1bbde8"
+"checksum gio-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"04957c40df00dd72f7c9ec8e382b01ff8ed4a904fcd2fa608b7ae7fbaccfda8f"
+"checksum glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"0c4e8fdc159c196a5dfa53a92929ac4c10c8a6637ffb43951f3fff89c2cd2365"
+"checksum glib-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"5bda542f3caee39a027638e9644ff89204101ad916fd7370b585ad2c5fc97e61"
+"checksum gobject-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"23e05a14290d3dc255223cba51db4b0f3da438d5250657996fa99b2a30faf43e"
+"checksum gspell 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"fa0e1f2c639e9dd00c501db60a8924b1440cb19d724f8578f3819f1089199662"
+"checksum gspell-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"bd6f44a1b1b8ac9698380f39aaa01c81340f581eb7bf4a555cef3b28e283b7aa"
+"checksum gstreamer 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"7edd8690dc3fb124e02d06c266c0b2a1ff4617910a26bbf2afb6d8183e76bf8c"
+"checksum gstreamer-audio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"2be21b626cbb00f15582da5fc8e254dea95b728fe79a862687a3ad43918a4e8c"
+"checksum gstreamer-base 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"d5125abdd41935c39cf0525160882c18610ee9332496fd4ca69c1218069126ae"
+"checksum gstreamer-base-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"5a3f7c5624775ddfdc34a0e5932e1f3786a305390f26844e7567fb0179b985f2"
+"checksum gstreamer-editing-services 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"abd0b48a33ba7c2830b8e3680d9b8fc29cf04ad30c7aa4c88c50950e39edb3f7"
+"checksum gstreamer-editing-services-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"6438d16ba0dabc4624240076ab8c7b16d57fd7e059872af75af8e9e4c737003b"
+"checksum gstreamer-pbutils 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"ff2e63b50507c26429fbd8a25390acf3159db5c346b3b5db839c5dce01d7e038"
+"checksum gstreamer-pbutils-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"22dc84c70b09ff022bdc9b598cb87681262d4a399a32e8c52e405f3cc8245f03"
+"checksum gstreamer-player 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"e5341030ff6c8fb0e83ed01abab236a74cbcbe88afd0f4870e3a6b34a1fd61c4"
+"checksum gstreamer-player-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"8ac29007ef1f9abc0e35ea0b65c4331ddae5355ad6869e1099f3497db606c40a"
+"checksum gstreamer-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"79e3a47e15245892cfa722e5f64714c9e2de5683eef0a706f56a8899b78100c8"
+"checksum gstreamer-video 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"1ac4da6efce179977de2337d392574c6e6c00f502a8fef6f6bfc11f8e16a93ed"
+"checksum gstreamer-video-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"da2b2bc12f6cbb96f2735e4b9e3241a9832139de042cf67415025c282b2ff9b7"
+"checksum gtk 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"b52cfbd8c3e4a000c8374676352f3850c2d62c0f42ef0a993e5d3fcf47e0be64"
+"checksum gtk-source-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"7650de7c6aa08344de96931ab51973d20eb72e2847d366bd2f45614b973e8a56"
+"checksum gtk-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"849835f05d46f605b00ee9fefb6d5921238c570af406f35ee7426ed01cd6795c"
 "checksum h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = 
"ddb2b25a33e231484694267af28fec74ac63b5ccf51ee2065a5e313b834d836e"
 "checksum html2pango 0.1.0 (git+https://gitlab.gnome.org/World/html2pango)" = "<none>"
 "checksum html5ever 0.22.5 (registry+https://github.com/rust-lang/crates.io-index)" = 
"c213fa6a618dc1da552f54f85cba74b05d8e883c92ec4e89067736938084c26e"
@@ -2648,11 +2664,11 @@ dependencies = [
 "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = 
"76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73"
 "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1"
 "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
-"checksum letter-avatar 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"31e8841f2fccbbb27eb87c477550affcf99ffe486c8e46aad4f867a982173636"
+"checksum letter-avatar 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"b4f5eeb09ab525c1e635893cc339a99292c16e16e5848c3b90b64b2d32b42f24"
 "checksum libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)" = 
"413f3dfc802c5dc91dc570b05125b6cda9855edfaa9825c9849807876376e70e"
 "checksum libflate 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = 
"54d1ddf9c52870243c5689d7638d888331c1116aa5b398f3ba1acfa7d8758ca1"
-"checksum libhandy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"380bbbdea2dd78a4dd63a50d139f02fa71b7d74fb295c8a8c3a8fb15351369e5"
-"checksum libhandy-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"7385c04617d29e60c1d53a693a7d5a21252fa36f89e37beaee2fd11a4fc877f3"
+"checksum libhandy 0.3.1 (git+https://gitlab.gnome.org/World/Rust/libhandy-rs)" = "<none>"
+"checksum libhandy-sys 0.3.1 (git+https://gitlab.gnome.org/World/Rust/libhandy-rs)" = "<none>"
 "checksum linkify 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"9ce9439c6f4a1092dc1861272bef01034891da39f13aa1cdcf40ca3e4081de5f"
 "checksum lmdb 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"5b0908efb5d6496aa977d96f91413da2635a902e5e31dbef0bfb88986c248539"
 "checksum lmdb-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"d5b392838cfe8858e86fac37cf97a0e8c55cc60ba0a18365cadc33092f128ce9"
@@ -2690,10 +2706,10 @@ dependencies = [
 "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
 "checksum openssl-sys 0.9.41 (registry+https://github.com/rust-lang/crates.io-index)" = 
"e4c77cdd67d31759b22aa72cfda3c65c12348f9e6c5420946b403c022fd0311a"
 "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13"
-"checksum pango 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"4c2cb169402a3eb1ba034a7cc7d95b8b1c106e9be5ba4be79a5a93dc1a2795f4"
-"checksum pango-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"d6eb49268e69dd0c1da5d3001a61aac08e2e9d2bfbe4ae4b19b9963c998f6453"
-"checksum pangocairo 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"4325b65f44487564a18d6402bed48c1bc4642167bfe972a753d039d1ac938c21"
-"checksum pangocairo-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"9e79ffb01eae5bc130b44fde529fa493ad6308c340da1358eaa2435ed3580e4f"
+"checksum pango 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"4e36b55d7cd522bd183efeb3dfabc547bda1f26eadf8a1241dac09ab3fd3242c"
+"checksum pango-sys 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"747ab9cd4d537e6dc5ef0e4308c10dde8b706673b0237fed4e056b8d2c0b23c8"
+"checksum pangocairo 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"706e885b46a16ba96f46f3c8d880ca6082c2c62693b75f3d167bd3aa4e34b0d4"
+"checksum pangocairo-sys 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"868310e83da5269323c28bd47b641557d032426f396cddfa45e247ff44da9a12"
 "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337"
 "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9"
 "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
@@ -2753,7 +2769,7 @@ dependencies = [
 "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = 
"0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac"
 "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = 
"c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
 "checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = 
"c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be"
-"checksum sourceview 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"21873b35a44fec1fd3ff993532a760577361e1f648b268d3ecc67fe2d1f7ca2c"
+"checksum sourceview 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = 
"823c96229dadeb397a64507b5e813c685f48530cfae45b948db1af531c3c8d69"
 "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = 
"dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8"
 "checksum string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = 
"b639411d0b9c738748b5397d5ceba08e648f4f1992231aa859af1a017f31f60b"
 "checksum string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = 
"25d70109977172b127fe834e5449e5ab1740b9ba49fa18a2020f509174f25423"
diff --git a/fractal-gtk/Cargo.toml b/fractal-gtk/Cargo.toml
index 7c4f0987..f8816623 100644
--- a/fractal-gtk/Cargo.toml
+++ b/fractal-gtk/Cargo.toml
@@ -11,40 +11,40 @@ comrak = "0.4.0"
 dirs = "1.0.4"
 failure = "0.1.3"
 fragile = "0.3.0"
-gspell = "0.1.0"
-gdk = "0.9.0"
-gdk-pixbuf = "0.5.0"
-gdk-pixbuf-sys = "0.7.0"
-gstreamer-editing-services = "0.12.2"
-glib = "0.6.1"
+gspell = "0.2.0"
+gdk = "0.10.0"
+gdk-pixbuf = "0.6.0"
+gdk-pixbuf-sys = "0.8.0"
+gstreamer-editing-services = "0.13.0"
+glib = "0.7.1"
 itertools = "0.8.0"
 lazy_static = "1.2.0"
 letter-avatar = "1.0.2"
 log = "0.4.6"
 loggerv = "0.7.1"
 mdl = "1.0.4"
-pango = "0.5.0"
-pangocairo = "0.6.0"
+pango = "0.6.0"
+pangocairo = "0.7.0"
 rand = "0.6.1"
 regex = "1.1.0"
 secret-service = "0.4.0"
 serde_json = "1.0.33"
-sourceview = "0.5.0"
+sourceview = "0.6.0"
 url = "1.7.2"
 
 [dependencies.gst]
-version = "0.12.2"
+version = "0.13.0"
 package = "gstreamer"
 
 [dependencies.gst_player]
-version = "0.12.2"
+version = "0.13.0"
 package = "gstreamer-player"
 
 [dependencies.html2pango]
 git = "https://gitlab.gnome.org/World/html2pango";
 
 [dependencies.cairo-rs]
-version = "0.5.0"
+version = "0.6.0"
 features = ["png"]
 
 [dependencies.chrono]
@@ -56,8 +56,8 @@ path = "../fractal-matrix-api"
 package = "fractal-matrix-api"
 
 [dependencies.libhandy]
-version = "0.2.0"
-features = ["v0_0_7"]
+git = "https://gitlab.gnome.org/World/Rust/libhandy-rs";
+features = ["v0_0_9"]
 
 [dependencies.gettext-rs]
 git = "https://github.com/danigm/gettext-rs";
@@ -65,7 +65,7 @@ branch = "no-gettext"
 features = ["gettext-system"]
 
 [dependencies.gtk]
-version = "0.5.0"
+version = "0.6.0"
 features = ["v3_22"]
 
 [dependencies.serde]
@@ -73,5 +73,5 @@ version = "1.0.82"
 features = ["derive"]
 
 [dependencies.gio]
-version = "0.5.1"
+version = "0.6.0"
 features = ["v2_56"]
diff --git a/fractal-gtk/src/actions/account_settings.rs b/fractal-gtk/src/actions/account_settings.rs
index 76986d9a..68184e60 100644
--- a/fractal-gtk/src/actions/account_settings.rs
+++ b/fractal-gtk/src/actions/account_settings.rs
@@ -28,7 +28,7 @@ pub fn new(window: &gtk::Window, backend: &Sender<BKCommand>) -> gio::SimpleActi
         let window = upgrade_weak!(window_weak);
         let filter = gtk::FileFilter::new();
         filter.add_mime_type("image/*");
-        FileFilterExt::set_name(&filter, Some(i18n("Images").as_str()));
+        filter.set_name(Some(i18n("Images").as_str()));
         if let Some(path) = open(&window, i18n("Select a new avatar").as_str(), &[filter]) {
             if let Some(file) = path.to_str() {
                 a.change_state(&ButtonState::Insensitive.into());
diff --git a/fractal-gtk/src/actions/mod.rs b/fractal-gtk/src/actions/mod.rs
index 72235b56..9ca00650 100644
--- a/fractal-gtk/src/actions/mod.rs
+++ b/fractal-gtk/src/actions/mod.rs
@@ -1,5 +1,4 @@
 use gio::SimpleAction;
-use gio::SimpleActionExt;
 use glib::Cast;
 use glib::ObjectExt;
 use glib::ToVariant;
diff --git a/fractal-gtk/src/actions/room_history.rs b/fractal-gtk/src/actions/room_history.rs
index 3c7e4657..d0fd286e 100644
--- a/fractal-gtk/src/actions/room_history.rs
+++ b/fractal-gtk/src/actions/room_history.rs
@@ -11,7 +11,6 @@ use crate::uibuilder::UI;
 use crate::App;
 use gio::ActionMapExt;
 use gio::SimpleAction;
-use gio::SimpleActionExt;
 use gio::SimpleActionGroup;
 use gtk;
 use gtk::prelude::*;
diff --git a/fractal-gtk/src/actions/room_settings.rs b/fractal-gtk/src/actions/room_settings.rs
index 26deef15..f0fbbbf8 100644
--- a/fractal-gtk/src/actions/room_settings.rs
+++ b/fractal-gtk/src/actions/room_settings.rs
@@ -32,7 +32,7 @@ pub fn new(window: &gtk::Window, backend: &Sender<BKCommand>) -> gio::SimpleActi
         if let Some(id) = data.as_ref().map(|x| x.to_string()) {
             let window = upgrade_weak!(window_weak);
             let filter = gtk::FileFilter::new();
-            FileFilterExt::set_name(&filter, Some(i18n("Images").as_str()));
+            filter.set_name(Some(i18n("Images").as_str()));
             filter.add_mime_type("image/*");
             if let Some(path) = open(&window, i18n("Select a new avatar").as_str(), &[filter]) {
                 if let Some(file) = path.to_str() {
diff --git a/fractal-gtk/src/app/connect/direct.rs b/fractal-gtk/src/app/connect/direct.rs
index b5f141a7..26289a73 100644
--- a/fractal-gtk/src/app/connect/direct.rs
+++ b/fractal-gtk/src/app/connect/direct.rs
@@ -69,7 +69,8 @@ impl App {
                     let start = buffer.get_start_iter();
                     let end = buffer.get_end_iter();
 
-                    let text = buffer.get_text(&start, &end, false);
+                    let text = buffer.get_text(&start, &end, false)
+                        .map_or(None, |gstr| Some(gstr.to_string()));
 
                     op.lock().unwrap().search_invite_user(text);
                 }
@@ -83,9 +84,7 @@ impl App {
         }));
 
         to_chat_entry.connect_focus_in_event(clone!(op, to_chat_entry_box => move |_, _| {
-            if let Some(style) = to_chat_entry_box.get_style_context() {
-                style.add_class("message-input-focused");
-            }
+            to_chat_entry_box.get_style_context().add_class("message-input-focused");
 
             op.lock().unwrap().remove_invite_user_dialog_placeholder();
 
@@ -93,9 +92,7 @@ impl App {
         }));
 
         to_chat_entry.connect_focus_out_event(clone!(op, to_chat_entry_box => move |_, _| {
-            if let Some(style) = to_chat_entry_box.get_style_context() {
-                style.remove_class("message-input-focused");
-            }
+            to_chat_entry_box.get_style_context().remove_class("message-input-focused");
 
             op.lock().unwrap().set_invite_user_dialog_placeholder();
 
diff --git a/fractal-gtk/src/app/connect/directory.rs b/fractal-gtk/src/app/connect/directory.rs
index a2c86830..a5688e28 100644
--- a/fractal-gtk/src/app/connect/directory.rs
+++ b/fractal-gtk/src/app/connect/directory.rs
@@ -133,7 +133,7 @@ impl App {
                 other_homeserver_url_entry.set_sensitive(false);
             }
 
-            let active = protocol_combo.get_active();
+            let active = protocol_combo.get_active().map_or(-1, |uint| uint as i32);
             let protocol: String = match protocol_model.iter_nth_child(None, active) {
                 Some(it) => {
                     let v = protocol_model.get_value(&it, 0);
@@ -147,7 +147,7 @@ impl App {
 
         protocol_combo.connect_changed(
             clone!(directory_choice_label, protocol_combo, protocol_model => move |_| {
-                let active = protocol_combo.get_active();
+                let active = protocol_combo.get_active().map_or(-1, |uint| uint as i32);
                 let protocol: String = match protocol_model.iter_nth_child(None, active) {
                     Some(it) => {
                         let v = protocol_model.get_value(&it, 0);
diff --git a/fractal-gtk/src/app/connect/invite.rs b/fractal-gtk/src/app/connect/invite.rs
index d86a3dc9..a88cb3c7 100644
--- a/fractal-gtk/src/app/connect/invite.rs
+++ b/fractal-gtk/src/app/connect/invite.rs
@@ -105,7 +105,9 @@ impl App {
 
                     let text = buffer.get_text(&start, &end, false);
 
-                    op.lock().unwrap().search_invite_user(text);
+                    op.lock().unwrap().search_invite_user(
+                        text.map_or(None, |gstr| Some(gstr.to_string()))
+                    );
                 }
 
                 *(source_id.lock().unwrap()) = None;
@@ -117,9 +119,7 @@ impl App {
         }));
 
         invite_entry.connect_focus_in_event(clone!(op, invite_entry_box => move |_, _| {
-            if let Some(style) = invite_entry_box.get_style_context() {
-                style.add_class("message-input-focused");
-            }
+            invite_entry_box.get_style_context().add_class("message-input-focused");
 
             op.lock().unwrap().remove_invite_user_dialog_placeholder();
 
@@ -127,9 +127,7 @@ impl App {
         }));
 
         invite_entry.connect_focus_out_event(clone!(op, invite_entry_box => move |_, _| {
-            if let Some(style) = invite_entry_box.get_style_context() {
-                style.remove_class("message-input-focused");
-            }
+            invite_entry_box.get_style_context().remove_class("message-input-focused");
 
             op.lock().unwrap().set_invite_user_dialog_placeholder();
 
diff --git a/fractal-gtk/src/app/connect/markdown.rs b/fractal-gtk/src/app/connect/markdown.rs
index 0752371d..5314eb25 100644
--- a/fractal-gtk/src/app/connect/markdown.rs
+++ b/fractal-gtk/src/app/connect/markdown.rs
@@ -41,8 +41,8 @@ impl App {
         if md_active {
             op.lock().unwrap().md_enabled = true;
             markdown_switch.set_active(true);
-            md_img.set_from_icon_name("format-indent-more-symbolic", 1);
-            txt.get_style_context().unwrap().remove_class("dim-label");
+            md_img.set_from_icon_name("format-indent-more-symbolic", gtk::IconSize::Menu);
+            txt.get_style_context().remove_class("dim-label");
         }
 
         let op = op.clone();
@@ -52,16 +52,17 @@ impl App {
                 op.lock().unwrap().md_enabled = markdown_switch.get_active();
 
                 if !markdown_switch.get_active() {
-                    md_img.set_from_icon_name("format-justify-left-symbolic", 1);
-                    txt.get_style_context().unwrap().add_class("dim-label");
+                    md_img.set_from_icon_name("format-justify-left-symbolic", gtk::IconSize::Menu);
+                    txt.get_style_context().add_class("dim-label");
                     util::set_markdown_schema(false);
 
+                    let lang: Option<&sourceview::Language> = None;
                     buffer.set_highlight_matching_brackets(false);
-                    buffer.set_language(None);
+                    buffer.set_language(lang);
                     buffer.set_highlight_syntax(false);
                 } else {
-                    md_img.set_from_icon_name("format-indent-more-symbolic", 1);
-                    txt.get_style_context().unwrap().remove_class("dim-label");
+                    md_img.set_from_icon_name("format-indent-more-symbolic", gtk::IconSize::Menu);
+                    txt.get_style_context().remove_class("dim-label");
                     util::set_markdown_schema(true);
 
                     if let Some(md_lang) = md_lang.clone() {
diff --git a/fractal-gtk/src/app/connect/roomlist_search.rs b/fractal-gtk/src/app/connect/roomlist_search.rs
index d9480d2c..9d2a7d56 100644
--- a/fractal-gtk/src/app/connect/roomlist_search.rs
+++ b/fractal-gtk/src/app/connect/roomlist_search.rs
@@ -33,7 +33,10 @@ impl App {
         }));
 
         search_entry.connect_search_changed(clone!(op => move |entry| {
-            op.lock().unwrap().filter_rooms(entry.get_text());
+            op.lock().unwrap().filter_rooms(
+                entry.get_text()
+                    .map_or(None, |gstr| Some(gstr.to_string()))
+            );
         }));
 
         // hidding left and right boxes to align with top buttons
diff --git a/fractal-gtk/src/app/connect/send.rs b/fractal-gtk/src/app/connect/send.rs
index dd9dfedd..29ebc7db 100644
--- a/fractal-gtk/src/app/connect/send.rs
+++ b/fractal-gtk/src/app/connect/send.rs
@@ -44,7 +44,7 @@ impl App {
                     let end = buffer.get_end_iter();
 
                     if let Some(text) = buffer.get_text(&start, &end, false) {
-                        op.lock().unwrap().send_message(text);
+                        op.lock().unwrap().send_message(text.to_string());
                     }
 
                     buffer.set_text("");
@@ -61,17 +61,13 @@ impl App {
         });
 
         msg_entry.connect_focus_in_event(clone!(msg_entry_box => move |_, _| {
-            if let Some(style) = msg_entry_box.get_style_context() {
-                style.add_class("message-input-focused");
-            }
+            msg_entry_box.get_style_context().add_class("message-input-focused");
 
             Inhibit(false)
         }));
 
         msg_entry.connect_focus_out_event(clone!(msg_entry_box => move |_, _| {
-            if let Some(style) = msg_entry_box.get_style_context() {
-                style.remove_class("message-input-focused");
-            }
+            msg_entry_box.get_style_context().remove_class("message-input-focused");
 
             Inhibit(false)
         }));
diff --git a/fractal-gtk/src/app/mod.rs b/fractal-gtk/src/app/mod.rs
index 47dfd04a..885e5640 100644
--- a/fractal-gtk/src/app/mod.rs
+++ b/fractal-gtk/src/app/mod.rs
@@ -124,7 +124,7 @@ impl App {
             .get_application_id()
             .map_or(false, |s| s.ends_with("Devel"))
         {
-            window.get_style_context().map(|c| c.add_class("devel"));
+            window.get_style_context().add_class("devel");
         }
 
         let leaflet = ui
@@ -137,10 +137,7 @@ impl App {
             .expect("Can't find history_container in ui file.");
 
         if let libhandy::Fold::Folded = leaflet.get_fold() {
-            container
-                .get_style_context()
-                .unwrap()
-                .add_class("folded-history");
+            container.get_style_context().add_class("folded-history");
         }
 
         let weak_container = container.downgrade();
@@ -148,14 +145,10 @@ impl App {
             let container = upgrade_weak!(weak_container);
 
             match leaflet.get_fold() {
-                libhandy::Fold::Folded => container
-                    .get_style_context()
-                    .unwrap()
-                    .add_class("folded-history"),
-                libhandy::Fold::Unfolded => container
-                    .get_style_context()
-                    .unwrap()
-                    .remove_class("folded-history"),
+                libhandy::Fold::Folded => container.get_style_context().add_class("folded-history"),
+                libhandy::Fold::Unfolded => {
+                    container.get_style_context().remove_class("folded-history");
+                }
                 _ => (),
             }
         });
diff --git a/fractal-gtk/src/appop/account.rs b/fractal-gtk/src/appop/account.rs
index c589bb02..f2fc1af5 100644
--- a/fractal-gtk/src/appop/account.rs
+++ b/fractal-gtk/src/appop/account.rs
@@ -96,7 +96,7 @@ impl AppOp {
                             id_server.clone(),
                             secret.clone(),
                             sid.clone(),
-                            token,
+                            token.to_string(),
                         ));
                     }
                 }
@@ -284,7 +284,7 @@ impl AppOp {
 
         name_btn.hide();
         name.set_editable(true);
-        let image = gtk::Image::new_from_icon_name("emblem-ok-symbolic", 1);
+        let image = gtk::Image::new_from_icon_name("emblem-ok-symbolic", gtk::IconSize::Menu);
         name_btn.set_image(&image);
         name_btn.set_sensitive(true);
 
@@ -480,7 +480,7 @@ impl AppOp {
             .expect("Can't find account_settings_name_button in ui file.");
         if let Some(name) = name.clone() {
             button.hide();
-            let image = gtk::Image::new_from_icon_name("emblem-ok-symbolic", 1);
+            let image = gtk::Image::new_from_icon_name("emblem-ok-symbolic", gtk::IconSize::Menu);
             button.set_image(&image);
             button.set_sensitive(true);
             entry.set_editable(true);
@@ -502,7 +502,9 @@ impl AppOp {
             .expect("Can't find account_settings_name_button in ui file.");
 
         let old_username = self.username.clone().unwrap_or_default();
-        let username = name.get_text().unwrap_or_default();
+        let username = name
+            .get_text()
+            .map_or(String::new(), |gstr| gstr.to_string());
 
         if old_username != username {
             let spinner = gtk::Spinner::new();
@@ -566,7 +568,11 @@ impl AppOp {
                     if old != "" && new != "" {
                         password_btn.set_sensitive(false);
                         password_btn_stack.set_visible_child_name("spinner");
-                        let _ = self.backend.send(BKCommand::ChangePassword(mxid, old, new));
+                        let _ = self.backend.send(BKCommand::ChangePassword(
+                            mxid,
+                            old.to_string(),
+                            new.to_string(),
+                        ));
                     }
                 }
             }
@@ -666,6 +672,7 @@ impl AppOp {
         if let Some(password) = entry.get_text() {
             if let Some(mxid) = self.uid.clone() {
                 let backend = self.backend.clone();
+                let password = password.to_string();
                 dialog.connect_response(clone!(mxid, password, flag => move |w, r| {
                     match gtk::ResponseType::from(r) {
                         gtk::ResponseType::Ok => {
diff --git a/fractal-gtk/src/appop/attach.rs b/fractal-gtk/src/appop/attach.rs
index f8235405..d5de9267 100644
--- a/fractal-gtk/src/appop/attach.rs
+++ b/fractal-gtk/src/appop/attach.rs
@@ -19,7 +19,6 @@ use crate::App;
 use crate::util::get_pixbuf_data;
 use gdk_pixbuf;
 use gdk_pixbuf::Pixbuf;
-use gdk_pixbuf::PixbufExt;
 
 impl AppOp {
     fn draw_image_paste_dialog(&self, pixb: &Pixbuf) {
@@ -57,10 +56,7 @@ impl AppOp {
                 let bar = hbar.downcast::<gtk::HeaderBar>().unwrap();
                 let closebtn = gtk::Button::new_with_label(i18n("Cancel").as_str());
                 let okbtn = gtk::Button::new_with_label(i18n("Send").as_str());
-                okbtn
-                    .get_style_context()
-                    .unwrap()
-                    .add_class("suggested-action");
+                okbtn.get_style_context().add_class("suggested-action");
 
                 bar.set_show_close_button(false);
                 bar.pack_start(&closebtn);
diff --git a/fractal-gtk/src/appop/directory.rs b/fractal-gtk/src/appop/directory.rs
index 650893de..733fd2ef 100644
--- a/fractal-gtk/src/appop/directory.rs
+++ b/fractal-gtk/src/appop/directory.rs
@@ -48,7 +48,7 @@ impl AppOp {
                 .get_object::<gtk::ListStore>("protocol_model")
                 .expect("Can't find protocol_model in ui file.");
 
-            let active = protocol_combo.get_active();
+            let active = protocol_combo.get_active().map_or(-1, |uint| uint as i32);
             match protocol_model.iter_nth_child(None, active) {
                 Some(it) => {
                     let v = protocol_model.get_value(&it, 1);
@@ -117,7 +117,7 @@ impl AppOp {
         self.backend
             .send(BKCommand::DirectorySearch(
                 homeserver,
-                q.get_text().unwrap(),
+                q.get_text().unwrap().to_string(),
                 protocol,
                 more,
             ))
@@ -143,9 +143,7 @@ impl AppOp {
             .builder
             .get_object::<gtk::ListBox>("directory_room_list")
             .expect("Can't find directory_room_list in ui file.");
-        directory
-            .get_style_context()
-            .map(|c| c.add_class("room-directory"));
+        directory.get_style_context().add_class("room-directory");
 
         let directory_stack = self
             .ui
diff --git a/fractal-gtk/src/appop/invite.rs b/fractal-gtk/src/appop/invite.rs
index 68478264..cd69545d 100644
--- a/fractal-gtk/src/appop/invite.rs
+++ b/fractal-gtk/src/appop/invite.rs
@@ -249,9 +249,9 @@ impl AppOp {
             );
         }
 
-        dialog.set_property_text(Some(&title));
+        dialog.set_property_text(Some(title.as_str()));
         dialog.set_property_secondary_use_markup(true);
-        dialog.set_property_secondary_text(Some(&secondary));
+        dialog.set_property_secondary_text(Some(secondary.as_str()));
 
         dialog.present();
     }
diff --git a/fractal-gtk/src/appop/login.rs b/fractal-gtk/src/appop/login.rs
index b338d5b1..a3a1cea1 100644
--- a/fractal-gtk/src/appop/login.rs
+++ b/fractal-gtk/src/appop/login.rs
@@ -100,15 +100,15 @@ impl AppOp {
             .expect("Can't find login_idp in ui file.");
 
         let username = match user_entry.get_text() {
-            Some(s) => s,
+            Some(s) => s.to_string(),
             None => String::new(),
         };
         let password = match pass_entry.get_text() {
-            Some(s) => s,
+            Some(s) => s.to_string(),
             None => String::new(),
         };
         let passconf = match pass_conf.get_text() {
-            Some(s) => s,
+            Some(s) => s.to_string(),
             None => String::new(),
         };
 
@@ -119,7 +119,7 @@ impl AppOp {
         }
 
         self.server_url = match server_entry.get_text() {
-            Some(s) => s,
+            Some(s) => s.to_string(),
             None => String::from(globals::DEFAULT_HOMESERVER),
         };
         /* FIXME ask also for the identity server */
diff --git a/fractal-gtk/src/appop/member.rs b/fractal-gtk/src/appop/member.rs
index 55a0759f..c7edcc6b 100644
--- a/fractal-gtk/src/appop/member.rs
+++ b/fractal-gtk/src/appop/member.rs
@@ -106,7 +106,9 @@ impl AppOp {
                         users,
                         listbox,
                         scroll,
-                        buffer.get_text(&start, &end, false),
+                        buffer
+                            .get_text(&start, &end, false)
+                            .map_or(None, |gstr| Some(gstr.to_string())),
                     );
                 }
             }
@@ -135,7 +137,9 @@ impl AppOp {
                         users,
                         listbox,
                         scroll,
-                        buffer.get_text(&start, &end, false),
+                        buffer
+                            .get_text(&start, &end, false)
+                            .map_or(None, |gstr| Some(gstr.to_string())),
                     );
                 }
             }
diff --git a/fractal-gtk/src/appop/message.rs b/fractal-gtk/src/appop/message.rs
index a5826067..46b533f4 100644
--- a/fractal-gtk/src/appop/message.rs
+++ b/fractal-gtk/src/appop/message.rs
@@ -1,6 +1,5 @@
 use comrak::{markdown_to_html, ComrakOptions};
 use gdk_pixbuf::Pixbuf;
-use gdk_pixbuf::PixbufExt;
 use gio::prelude::{FileExt, FileInfoExt};
 use gstreamer_editing_services::prelude::*;
 use gstreamer_editing_services::UriClipAsset;
@@ -241,7 +240,7 @@ impl AppOp {
                 if let Ok(info) = gio::File::new_for_path(&path).query_info(
                     &gio::FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
                     gio::FileQueryInfoFlags::NONE,
-                    None,
+                    gio::NONE_CANCELLABLE,
                 ) {
                     // This should always return a type
                     let mime = info
diff --git a/fractal-gtk/src/appop/notify.rs b/fractal-gtk/src/appop/notify.rs
index 82f61a1e..a5c610e8 100644
--- a/fractal-gtk/src/appop/notify.rs
+++ b/fractal-gtk/src/appop/notify.rs
@@ -1,7 +1,6 @@
 use gio::ApplicationExt;
 use gio::FileExt;
 use gio::Notification;
-use gio::NotificationExt;
 use gtk;
 use gtk::prelude::*;
 use log::info;
@@ -90,9 +89,8 @@ fn create_notification(room_id: &str, title: &str, body: &str, avatar: &str) ->
     notification.set_body(body);
     notification.set_priority(gio::NotificationPriority::High);
     info!("Creating notification with avatar: {}", avatar);
-    let cancellable: Option<&gio::Cancellable> = None;
     let file = gio::File::new_for_path(avatar);
-    let _ = file.load_bytes(cancellable).map(|(b, _)| {
+    let _ = file.load_bytes(gio::NONE_CANCELLABLE).map(|(b, _)| {
         let avatar = gio::BytesIcon::new(&b);
         notification.set_icon(&avatar);
     });
diff --git a/fractal-gtk/src/appop/room.rs b/fractal-gtk/src/appop/room.rs
index cab2daf2..3666ac7d 100644
--- a/fractal-gtk/src/appop/room.rs
+++ b/fractal-gtk/src/appop/room.rs
@@ -153,7 +153,7 @@ impl AppOp {
                             let msg_position = iter.get_offset();
 
                             self.unsent_messages
-                                .insert(active_room.clone(), (msg, msg_position));
+                                .insert(active_room.clone(), (msg.to_string(), msg_position));
                         }
                     } else {
                         self.unsent_messages.remove(active_room);
@@ -237,7 +237,7 @@ impl AppOp {
                 "Leave {room_name}?",
                 &[("room_name", &r.name.clone().unwrap_or_default())],
             );
-            dialog.set_property_text(Some(&text));
+            dialog.set_property_text(Some(text.as_str()));
             dialog.present();
         }
     }
@@ -267,8 +267,9 @@ impl AppOp {
             .get_object::<gtk::ToggleButton>("private_visibility_button")
             .expect("Can't find private_visibility_button in ui file.");
 
-        let n = name.get_text().unwrap_or_default();
-
+        let n = name
+            .get_text()
+            .map_or(String::new(), |gstr| gstr.to_string());
         // Since the switcher
         let p = if private.get_active() {
             backend::RoomType::Private
@@ -407,7 +408,11 @@ impl AppOp {
             .get_object::<gtk::Entry>("join_room_name")
             .expect("Can't find join_room_name in ui file.");
 
-        let n = name.get_text().unwrap_or_default().trim().to_string();
+        let n = name
+            .get_text()
+            .map_or(String::new(), |gstr| gstr.to_string())
+            .trim()
+            .to_string();
 
         self.backend.send(BKCommand::JoinRoom(n.clone())).unwrap();
     }
@@ -577,7 +582,7 @@ impl AppOp {
                         typing_users.len() as u32,
                         typing_users
                             .iter()
-                            .map(|user| markup_escape_text(&user.get_alias()))
+                            .map(|user| markup_escape_text(&user.get_alias()).to_string())
                             .collect::<Vec<String>>()
                             .iter()
                             .map(std::ops::Deref::deref)
diff --git a/fractal-gtk/src/main.rs b/fractal-gtk/src/main.rs
index e50b5d1b..848654e2 100644
--- a/fractal-gtk/src/main.rs
+++ b/fractal-gtk/src/main.rs
@@ -58,7 +58,7 @@ fn main() -> Result<(), Box<dyn Error>> {
     // Create a Application with default flags
     let application = gtk::Application::new(config::APP_ID, gio::ApplicationFlags::empty())?;
 
-    application.set_property_resource_base_path(Some("/org/gnome/Fractal"));
+    application.set_resource_base_path(Some("/org/gnome/Fractal"));
 
     application.connect_startup(|application| {
         App::on_startup(application);
diff --git a/fractal-gtk/src/util.rs b/fractal-gtk/src/util.rs
index 231b748f..62f3af55 100644
--- a/fractal-gtk/src/util.rs
+++ b/fractal-gtk/src/util.rs
@@ -3,7 +3,6 @@ use failure::format_err;
 use failure::Error;
 use gdk::ContextExt;
 use gdk_pixbuf::Pixbuf;
-use gdk_pixbuf::PixbufExt;
 use gio::{Settings, SettingsExt, SettingsSchemaSource};
 
 use html2pango::{html_escape, markup_links};
diff --git a/fractal-gtk/src/widgets/address.rs b/fractal-gtk/src/widgets/address.rs
index dea21bfe..d500e61e 100644
--- a/fractal-gtk/src/widgets/address.rs
+++ b/fractal-gtk/src/widgets/address.rs
@@ -57,7 +57,7 @@ impl<'a> Address<'a> {
             self.entry.set_editable(false);
 
             self.action = Some(AddressAction::Delete);
-            let label = gtk::Image::new_from_icon_name("user-trash-symbolic", 1);
+            let label = gtk::Image::new_from_icon_name("user-trash-symbolic", gtk::IconSize::Menu);
             self.button.set_image(&label);
             self.button.show();
         } else {
@@ -68,17 +68,15 @@ impl<'a> Address<'a> {
 
             self.entry.set_placeholder_text(text);
             self.action = Some(AddressAction::Add);
-            let label = gtk::Image::new_from_icon_name("list-add-symbolic", 1);
+            let label = gtk::Image::new_from_icon_name("list-add-symbolic", gtk::IconSize::Menu);
             self.button.set_image(&label);
-            if let Some(style) = self.button.get_style_context() {
-                style.add_class("suggested-action");
-            }
+            self.button
+                .get_style_context()
+                .add_class("suggested-action");
             self.button.hide();
             self.entry.set_editable(true);
         }
-        if let Some(style) = b.get_style_context() {
-            style.add_class("linked");
-        }
+        b.get_style_context().add_class("linked");
         self.entry.show();
         self.connect();
         b.show();
@@ -98,19 +96,19 @@ impl<'a> Address<'a> {
             self.entry.set_editable(false);
 
             self.action = Some(AddressAction::Delete);
-            let label = gtk::Image::new_from_icon_name("user-trash-symbolic", 1);
+            let label = gtk::Image::new_from_icon_name("user-trash-symbolic", gtk::IconSize::Menu);
             self.button.set_image(&label);
-            if let Some(style) = self.button.get_style_context() {
-                style.remove_class("suggested-action");
-            }
+            self.button
+                .get_style_context()
+                .remove_class("suggested-action");
             self.button.show();
         } else {
             self.action = Some(AddressAction::Add);
-            let label = gtk::Image::new_from_icon_name("list-add-symbolic", 1);
+            let label = gtk::Image::new_from_icon_name("list-add-symbolic", gtk::IconSize::Menu);
             self.button.set_image(&label);
-            if let Some(style) = self.button.get_style_context() {
-                style.add_class("suggested-action");
-            }
+            self.button
+                .get_style_context()
+                .add_class("suggested-action");
             self.button.hide();
             self.entry.set_editable(true);
         }
@@ -180,7 +178,12 @@ impl<'a> Address<'a> {
                     delete_address(&backend, medium, address.clone());
                 }
                 Some(AddressAction::Add) => {
-                    add_address(&backend, medium, id_server.clone(), entry.get_text());
+                    add_address(
+                        &backend,
+                        medium,
+                        id_server.clone(),
+                        entry.get_text().map_or(None, |gstr| Some(gstr.to_string())),
+                    );
                 }
                 _ => {}
             }
diff --git a/fractal-gtk/src/widgets/autocomplete.rs b/fractal-gtk/src/widgets/autocomplete.rs
index b02d8e32..06718f63 100644
--- a/fractal-gtk/src/widgets/autocomplete.rs
+++ b/fractal-gtk/src/widgets/autocomplete.rs
@@ -53,24 +53,21 @@ impl Autocomplete {
     pub fn connect(self) {
         let this: Rc<RefCell<Autocomplete>> = Rc::new(RefCell::new(self));
 
-        if let Some(context) =
-            gtk::Widget::get_style_context(&this.borrow().entry.clone().upcast::<gtk::Widget>())
-        {
-            if let Some(fg) = gtk::StyleContext::lookup_color(&context, "theme_selected_bg_color") {
-                let color = gdk::RGBA {
-                    red: fg.red,
-                    green: fg.green,
-                    blue: fg.blue,
-                    alpha: 1.0,
-                };
-
-                let tag = TextTag::new("alias-highlight");
-                tag.set_property_foreground_rgba(Some(&color));
-
-                if let Some(buffer) = this.borrow().entry.get_buffer() {
-                    if let Some(tag_table) = buffer.get_tag_table() {
-                        tag_table.add(&tag);
-                    }
+        let context = this.borrow().entry.get_style_context();
+        if let Some(fg) = context.lookup_color("theme_selected_bg_color") {
+            let color = gdk::RGBA {
+                red: fg.red,
+                green: fg.green,
+                blue: fg.blue,
+                alpha: 1.0,
+            };
+
+            let tag = TextTag::new("alias-highlight");
+            tag.set_property_foreground_rgba(Some(&color));
+
+            if let Some(buffer) = this.borrow().entry.get_buffer() {
+                if let Some(tag_table) = buffer.get_tag_table() {
+                    tag_table.add(&tag);
                 }
             }
         }
@@ -104,7 +101,7 @@ impl Autocomplete {
                     let end_iter = buffer.get_end_iter();
 
                     if let Some(input) = buffer.get_text(&start_iter, &end_iter, false) {
-                        item.add_highlight(input);
+                        item.add_highlight(input.to_string());
                     }
                 }
             });
@@ -118,7 +115,7 @@ impl Autocomplete {
                     let end_iter = buffer.get_end_iter();
 
                     if let Some(input) = buffer.get_text(&start_iter, &end_iter, false) {
-                        item.add_highlight(input);
+                        item.add_highlight(input.to_string());
                     }
                 }
             });
@@ -229,7 +226,8 @@ impl Autocomplete {
 
                 let start = buffer.get_start_iter();
                 let end = buffer.get_end_iter();
-                let text = buffer.get_text(&start, &end, false);
+                let text = buffer.get_text(&start, &end, false)
+                    .map_or(None, |gstr| Some(gstr.to_string()));
 
                 /* when closing popover with tab */
                 {
@@ -340,7 +338,7 @@ impl Autocomplete {
                 let end_iter = buffer.get_end_iter();
 
                 if let Some(input) = buffer.get_text(&start_iter, &end_iter, false) {
-                    self.add_highlight(input);
+                    self.add_highlight(input.to_string());
                 }
             }
         }
@@ -352,7 +350,7 @@ impl Autocomplete {
             let end_iter = buffer.get_end_iter();
 
             if let Some(input) = buffer.get_text(&start_iter, &end_iter, false) {
-                self.add_highlight(input);
+                self.add_highlight(input.to_string());
             }
         }
 
diff --git a/fractal-gtk/src/widgets/avatar.rs b/fractal-gtk/src/widgets/avatar.rs
index 8d04c07b..25f1259d 100644
--- a/fractal-gtk/src/widgets/avatar.rs
+++ b/fractal-gtk/src/widgets/avatar.rs
@@ -6,7 +6,6 @@ use cairo;
 use fractal_api::util::cache_path;
 use gdk::ContextExt;
 use gdk_pixbuf::Pixbuf;
-use gdk_pixbuf::PixbufExt;
 use gtk;
 use gtk::prelude::*;
 pub use gtk::DrawingArea;
@@ -80,9 +79,7 @@ impl AvatarExt for gtk::Overlay {
         let b = gtk::Overlay::new();
         b.create_da(size);
         b.show_all();
-        if let Some(style) = b.get_style_context() {
-            style.add_class("avatar");
-        }
+        b.get_style_context().add_class("avatar");
 
         b
     }
@@ -123,14 +120,12 @@ impl AvatarExt for gtk::Overlay {
             badge.set_size_request(badge_size, badge_size);
             badge.set_valign(gtk::Align::Start);
             badge.set_halign(gtk::Align::End);
-            if let Some(style) = badge.get_style_context() {
-                style.add_class("badge-circle");
-                style.add_class(match color {
-                    AvatarBadgeColor::Gold => "badge-gold",
-                    AvatarBadgeColor::Silver => "badge-silver",
-                    AvatarBadgeColor::Grey => "badge-grey",
-                });
-            }
+            badge.get_style_context().add_class("badge-circle");
+            badge.get_style_context().add_class(match color {
+                AvatarBadgeColor::Gold => "badge-gold",
+                AvatarBadgeColor::Silver => "badge-silver",
+                AvatarBadgeColor::Grey => "badge-grey",
+            });
             self.add_overlay(&badge);
         }
 
@@ -177,7 +172,7 @@ impl AvatarExt for gtk::Overlay {
 
                 let data = user_cache.borrow();
                 if let Some(ref pb) = data.cache {
-                    let context = da.get_style_context().unwrap();
+                    let context = da.get_style_context();
                     gtk::render_background(&context, g, 0.0, 0.0, width, height);
 
                     let hpos: f64 = (width - (pb.get_height()) as f64) / 2.0;
diff --git a/fractal-gtk/src/widgets/divider.rs b/fractal-gtk/src/widgets/divider.rs
index adb3b02e..2a3cd820 100644
--- a/fractal-gtk/src/widgets/divider.rs
+++ b/fractal-gtk/src/widgets/divider.rs
@@ -14,9 +14,7 @@ impl NewMessageDivider {
         row.set_selectable(false);
 
         let divider = gtk::Box::new(gtk::Orientation::Horizontal, 6);
-        if let Some(style) = divider.get_style_context() {
-            style.add_class("divider");
-        }
+        divider.get_style_context().add_class("divider");
         divider.set_margin_top(24);
         divider.set_margin_bottom(6);
 
diff --git a/fractal-gtk/src/widgets/image.rs b/fractal-gtk/src/widgets/image.rs
index 2bd70f40..0e02fbbb 100644
--- a/fractal-gtk/src/widgets/image.rs
+++ b/fractal-gtk/src/widgets/image.rs
@@ -3,7 +3,6 @@ use gdk_pixbuf;
 use gdk_pixbuf::Pixbuf;
 use gdk_pixbuf::PixbufAnimation;
 use gdk_pixbuf::PixbufAnimationExt;
-use gdk_pixbuf::PixbufExt;
 use gio::prelude::{FileExt, FileInfoExt};
 use glib;
 use gtk;
@@ -50,23 +49,17 @@ impl Image {
     /// ```
     pub fn new(backend: &Sender<BKCommand>, path: &str) -> Image {
         let da = DrawingArea::new();
-        // gdk::EventMask::ENTER_NOTIFY_MASK = 4096
-        da.add_events(4096);
-        // gdk::EventMask::LEAVE_NOTIFY_MASK = 8192
-        da.add_events(8192);
+        da.add_events(gdk::EventMask::ENTER_NOTIFY_MASK);
+        da.add_events(gdk::EventMask::LEAVE_NOTIFY_MASK);
 
         da.connect_enter_notify_event(move |da, _| {
-            if let Some(style) = da.get_style_context() {
-                style.add_class("image-hover");
-                da.queue_draw();
-            }
+            da.get_style_context().add_class("image-hover");
+            da.queue_draw();
             Inhibit(false)
         });
         da.connect_leave_notify_event(move |da, _| {
-            if let Some(style) = da.get_style_context() {
-                style.remove_class("image-hover");
-                da.queue_draw();
-            }
+            da.get_style_context().remove_class("image-hover");
+            da.queue_draw();
             Inhibit(false)
         });
 
@@ -184,13 +177,11 @@ impl Image {
                 rh = i32::min(h, widget_h);
             }
 
-            let context = da.get_style_context().unwrap();
+            let context = da.get_style_context();
             gtk::render_background(&context, g, 0.0, 0.0, width, height);
 
-            if let Some(style) = da.get_style_context() {
-                if style.has_class("image-spinner") {
-                    // TODO: draw a margin
-                }
+            if context.has_class("image-spinner") {
+                // TODO: draw a margin
             }
 
             if let Some(ref pb) = *pix.lock().unwrap() {
@@ -281,18 +272,14 @@ impl Image {
             let scaled = self.scaled.clone();
             let da = self.widget.clone();
 
-            if let Some(style) = da.get_style_context() {
-                style.add_class("image-spinner");
-            }
+            da.get_style_context().add_class("image-spinner");
             gtk::timeout_add(50, move || match rx.try_recv() {
                 Err(TryRecvError::Empty) => gtk::Continue(true),
                 Err(TryRecvError::Disconnected) => gtk::Continue(false),
                 Ok(fname) => {
                     *local_path.lock().unwrap() = Some(fname.clone());
                     load_pixbuf(pix.clone(), scaled.clone(), da.clone(), &fname);
-                    if let Some(style) = da.get_style_context() {
-                        style.remove_class("image-spinner");
-                    }
+                    da.get_style_context().remove_class("image-spinner");
                     gtk::Continue(false)
                 }
             });
@@ -378,9 +365,12 @@ pub fn is_gif(fname: &str) -> bool {
     if let Ok(info) = gio::File::new_for_path(&p).query_info(
         &gio::FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
         gio::FileQueryInfoFlags::NONE,
-        None,
+        gio::NONE_CANCELLABLE,
     ) {
-        info.get_content_type() == Some("image/gif".to_string())
+        match info.get_content_type() {
+            Some(mime) => mime.to_string() == "image/gif".to_string(),
+            _ => false,
+        }
     } else {
         false
     }
diff --git a/fractal-gtk/src/widgets/kicked_dialog.rs b/fractal-gtk/src/widgets/kicked_dialog.rs
index af9814fa..31227554 100644
--- a/fractal-gtk/src/widgets/kicked_dialog.rs
+++ b/fractal-gtk/src/widgets/kicked_dialog.rs
@@ -46,11 +46,11 @@ impl KickedDialog {
         let text = i18n_f("You have been kicked from {}", &[room_name]);
         self.widgets
             .msg_kicked_window
-            .set_property_text(Some(&text));
+            .set_property_text(Some(text.as_str()));
         let secondary_text = i18n_f("Kicked by: {}\n “{}”", &[kicker, reason]);
         self.widgets
             .msg_kicked_window
-            .set_property_secondary_text(Some(&secondary_text));
+            .set_property_secondary_text(Some(secondary_text.as_str()));
 
         self.widgets.msg_kicked_window.show();
     }
diff --git a/fractal-gtk/src/widgets/login.rs b/fractal-gtk/src/widgets/login.rs
index 4ed2a0c9..eeb36086 100644
--- a/fractal-gtk/src/widgets/login.rs
+++ b/fractal-gtk/src/widgets/login.rs
@@ -41,7 +41,11 @@ impl LoginWidget {
                 let server = upgrade_weak!(weak_ser);
                 let username = upgrade_weak!(weak_user);
 
-                let state: LoginState = container.get_visible_child_name().unwrap().into();
+                let state: LoginState = container
+                    .get_visible_child_name()
+                    .unwrap()
+                    .to_string()
+                    .into();
 
                 match state {
                     LoginState::ServerChooser => server.grab_focus(),
@@ -68,8 +72,13 @@ impl LoginWidget {
             let err_label = upgrade_weak!(weak_err);
 
             if let Some(txt) = server_entry.get_text() {
-                let username = username_entry.get_text().unwrap_or_default();
-                let password = password_entry.get_text().unwrap_or_default();
+                let username = username_entry
+                    .get_text()
+                    .map_or(String::new(), |gstr| gstr.to_string());
+
+                let password = password_entry
+                    .get_text()
+                    .map_or(String::new(), |gstr| gstr.to_string());
 
                 let txt = format!(
                     "{}{}",
diff --git a/fractal-gtk/src/widgets/media_viewer.rs b/fractal-gtk/src/widgets/media_viewer.rs
index 52748a14..5a8be17c 100644
--- a/fractal-gtk/src/widgets/media_viewer.rs
+++ b/fractal-gtk/src/widgets/media_viewer.rs
@@ -100,10 +100,8 @@ impl Data {
             .builder
             .get_object::<gtk::Revealer>("headerbar_revealer")
             .expect("Can't find headerbar_revealer in ui file.");
-        // gdk::EventMask::ENTER_NOTIFY_MASK = 4096
-        headerbar_revealer.add_events(4096);
-        // gdk::EventMask::LEAVE_NOTIFY_MASK = 8192
-        headerbar_revealer.add_events(8192);
+        headerbar_revealer.add_events(gdk::EventMask::ENTER_NOTIFY_MASK);
+        headerbar_revealer.add_events(gdk::EventMask::LEAVE_NOTIFY_MASK);
 
         media_viewer_headerbar_box.remove(&media_viewer_headerbar);
 
diff --git a/fractal-gtk/src/widgets/member.rs b/fractal-gtk/src/widgets/member.rs
index e4760fc8..a87b81d0 100644
--- a/fractal-gtk/src/widgets/member.rs
+++ b/fractal-gtk/src/widgets/member.rs
@@ -36,9 +36,7 @@ impl<'a> MemberBox<'a> {
         uid.set_text(&self.member.uid);
         uid.set_valign(gtk::Align::Start);
         uid.set_halign(gtk::Align::Start);
-        if let Some(style) = uid.get_style_context() {
-            style.add_class("member-uid");
-        }
+        uid.get_style_context().add_class("member-uid");
 
         username.set_text(&self.member.get_alias());
         let mut alias = self.member.get_alias();
@@ -49,9 +47,7 @@ impl<'a> MemberBox<'a> {
         username.set_ellipsize(pango::EllipsizeMode::End);
         username.set_valign(gtk::Align::Center);
         username.set_halign(gtk::Align::Start);
-        if let Some(style) = username.get_style_context() {
-            style.add_class("member");
-        }
+        username.get_style_context().add_class("member");
 
         let avatar = widgets::Avatar::avatar_new(Some(globals::USERLIST_ICON_SIZE));
         let badge = match self.op.member_level(self.member) {
@@ -94,9 +90,7 @@ impl<'a> MemberBox<'a> {
 
         username.set_text(&self.member.get_alias());
         username.set_margin_end(3);
-        if let Some(style) = username.get_style_context() {
-            style.add_class("msg-highlighted");
-        }
+        username.get_style_context().add_class("msg-highlighted");
 
         let avatar = widgets::Avatar::avatar_new(Some(globals::PILL_ICON_SIZE));
         let data = avatar.circle(
diff --git a/fractal-gtk/src/widgets/members_list.rs b/fractal-gtk/src/widgets/members_list.rs
index 43a1a40c..cbfaf295 100644
--- a/fractal-gtk/src/widgets/members_list.rs
+++ b/fractal-gtk/src/widgets/members_list.rs
@@ -47,9 +47,7 @@ impl MembersList {
             self.members.clone(),
             self.power_levels.clone(),
         );
-        self.error
-            .get_style_context()?
-            .add_class("no_member_search");
+        self.error.get_style_context().add_class("no_member_search");
         self.error.set_text(&i18n("No matching members found"));
         b.pack_start(&self.error, true, true, 0);
         self.connect();
@@ -86,7 +84,7 @@ impl MembersList {
                 container.clone(),
                 members.clone(),
                 error.clone(),
-                w.get_text(),
+                w.get_text().map_or(None, |gstr| Some(gstr.to_string())),
             );
         });
         /* we need to remove the handler when the member list is destroyed */
@@ -174,10 +172,10 @@ fn load_row_content(member: Member, power_level: Option<i32>) -> gtk::Box {
 
         let badge_wid = gtk::Label::new(Some(format!("{} ({})", badge_data.0, pl).as_str()));
         badge_wid.set_valign(gtk::Align::Center);
-        if let Some(style) = badge_wid.get_style_context() {
-            style.add_class("badge");
-            style.add_class(badge_data.1);
-        }
+        let style = badge_wid.get_style_context();
+        style.add_class("badge");
+        style.add_class(badge_data.1);
+
         username_box.pack_start(&badge_wid, false, false, 0);
     }
 
@@ -186,10 +184,9 @@ fn load_row_content(member: Member, power_level: Option<i32>) -> gtk::Box {
     uid.set_xalign(0.);
     uid.set_line_wrap(true);
     uid.set_line_wrap_mode(pango::WrapMode::Char);
-    if let Some(style) = uid.get_style_context() {
-        style.add_class("small-font");
-        style.add_class("dim-label");
-    }
+    let style = uid.get_style_context();
+    style.add_class("small-font");
+    style.add_class("dim-label");
 
     b.set_margin_start(12);
     b.set_margin_end(12);
diff --git a/fractal-gtk/src/widgets/message.rs b/fractal-gtk/src/widgets/message.rs
index dcae84ef..5fbc9ede 100644
--- a/fractal-gtk/src/widgets/message.rs
+++ b/fractal-gtk/src/widgets/message.rs
@@ -97,8 +97,7 @@ impl MessageBox {
         self.create(msg, true);
         {
             let w = self.get_listbox_row()?;
-            let style = w.get_style_context()?;
-            style.add_class("msg-tmp");
+            w.get_style_context().add_class("msg-tmp");
         }
         Some(self)
     }
@@ -198,22 +197,19 @@ impl MessageBox {
         self.username.set_text(&uname);
         self.username.set_justify(gtk::Justification::Left);
         self.username.set_halign(gtk::Align::Start);
-        if let Some(style) = self.username.get_style_context() {
-            style.add_class("username");
-        }
+        self.username.get_style_context().add_class("username");
 
         self.username.clone()
     }
 
     /* Add classes to the widget based on message type */
     fn set_msg_styles(&self, msg: &Message, w: &gtk::ListBoxRow) {
-        if let Some(style) = w.get_style_context() {
-            match msg.mtype {
-                RowType::Mention => style.add_class("msg-mention"),
-                RowType::Emote => style.add_class("msg-emote"),
-                RowType::Emoji => style.add_class("msg-emoji"),
-                _ => {}
-            }
+        let style = w.get_style_context();
+        match msg.mtype {
+            RowType::Mention => style.add_class("msg-mention"),
+            RowType::Emote => style.add_class("msg-emote"),
+            RowType::Emoji => style.add_class("msg-emoji"),
+            _ => {}
         }
     }
 
@@ -239,7 +235,7 @@ impl MessageBox {
                     if let Some(text) = w.get_text() {
                         let attr = pango::AttrList::new();
                         for light in highlights.clone() {
-                            highlight_username(w.clone(), &attr, &light, text.clone());
+                            highlight_username(w.clone(), &attr, &light, text.to_string());
                         }
                         w.set_attributes(&attr);
                     }
@@ -250,7 +246,7 @@ impl MessageBox {
                     if let Some(text) = w.get_text() {
                         let attr = pango::AttrList::new();
                         for light in highlights.clone() {
-                            highlight_username(w.clone(), &attr, &light, text.clone());
+                            highlight_username(w.clone(), &attr, &light, text.to_string());
                         }
                         w.set_attributes(&attr);
                     }
@@ -259,7 +255,7 @@ impl MessageBox {
                 if let Some(text) = part.get_text() {
                     let attr = pango::AttrList::new();
                     for light in msg.highlights.clone() {
-                        highlight_username(part.clone(), &attr, &light, text.clone());
+                        highlight_username(part.clone(), &attr, &light, text.to_string());
                     }
                     part.set_attributes(&attr);
                 }
@@ -303,7 +299,7 @@ impl MessageBox {
         self.set_label_styles(&msg_part);
 
         if k == MsgPartType::Quote {
-            msg_part.get_style_context().map(|s| s.add_class("quote"));
+            msg_part.get_style_context().add_class("quote");
         }
         msg_part
     }
@@ -319,9 +315,7 @@ impl MessageBox {
             .size(Some(globals::MAX_IMAGE_SIZE))
             .build();
 
-        if let Some(style) = image.widget.get_style_context() {
-            style.add_class("image-widget");
-        }
+        image.widget.get_style_context().add_class("image-widget");
 
         bx.pack_start(&image.widget, true, true, 0);
         bx.show_all();
@@ -400,9 +394,7 @@ impl MessageBox {
         name_lbl.set_tooltip_text(name);
         name_lbl.set_ellipsize(pango::EllipsizeMode::End);
 
-        if let Some(style) = name_lbl.get_style_context() {
-            style.add_class("msg-highlighted");
-        }
+        name_lbl.get_style_context().add_class("msg-highlighted");
 
         let download_btn =
             gtk::Button::new_from_icon_name("document-save-symbolic", gtk::IconSize::Button.into());
@@ -422,9 +414,7 @@ impl MessageBox {
 
         btn_bx.pack_start(&open_btn, false, false, 0);
         btn_bx.pack_start(&download_btn, false, false, 0);
-        if let Some(style) = btn_bx.get_style_context() {
-            style.add_class("linked");
-        }
+        btn_bx.get_style_context().add_class("linked");
 
         bx.pack_start(&name_lbl, false, false, 0);
         bx.pack_start(&btn_bx, false, false, 0);
@@ -450,9 +440,7 @@ impl MessageBox {
         date.set_justify(gtk::Justification::Right);
         date.set_valign(gtk::Align::Start);
         date.set_halign(gtk::Align::End);
-        if let Some(style) = date.get_style_context() {
-            style.add_class("timestamp");
-        }
+        date.get_style_context().add_class("timestamp");
 
         date
     }
@@ -559,8 +547,8 @@ fn highlight_username(
 
     let input = input.to_lowercase();
     let bounds = label.get_selection_bounds();
-    let context = gtk::Widget::get_style_context(&label.clone().upcast::<gtk::Widget>())?;
-    let fg = gtk::StyleContext::lookup_color(&context, "theme_selected_bg_color")?;
+    let context = label.get_style_context();
+    let fg = context.lookup_color("theme_selected_bg_color")?;
     let red = fg.red * 65535. + 0.5;
     let green = fg.green * 65535. + 0.5;
     let blue = fg.blue * 65535. + 0.5;
diff --git a/fractal-gtk/src/widgets/room.rs b/fractal-gtk/src/widgets/room.rs
index ccc960af..8e8461fd 100644
--- a/fractal-gtk/src/widgets/room.rs
+++ b/fractal-gtk/src/widgets/room.rs
@@ -93,7 +93,11 @@ impl<'a> RoomBox<'a> {
         alias_label.set_xalign(0.0);
 
         details_box.add(&name_label);
-        if !topic_label.get_text().unwrap_or_default().is_empty() {
+        if !topic_label
+            .get_text()
+            .map_or(String::new(), |gstr| gstr.to_string())
+            .is_empty()
+        {
             details_box.add(&topic_label);
         }
         details_box.add(&alias_label);
@@ -105,14 +109,10 @@ impl<'a> RoomBox<'a> {
 
         let members_icon =
             gtk::Image::new_from_icon_name("system-users-symbolic", gtk::IconSize::Menu.into());
-        members_icon
-            .get_style_context()
-            .map(|c| c.add_class("dim-label"));
+        members_icon.get_style_context().add_class("dim-label");
 
         let members_count = gtk::Label::new(&format!("{}", room.n_members)[..]);
-        members_count
-            .get_style_context()
-            .map(|c| c.add_class("dim-label"));
+        members_count.get_style_context().add_class("dim-label");
 
         let join_button = gtk::Button::new_with_label(i18n("Join").as_str());
         let room_id = room.id.clone();
diff --git a/fractal-gtk/src/widgets/room_history.rs b/fractal-gtk/src/widgets/room_history.rs
index 897bd26f..75e4c094 100644
--- a/fractal-gtk/src/widgets/room_history.rs
+++ b/fractal-gtk/src/widgets/room_history.rs
@@ -329,16 +329,14 @@ fn create_day_divider(date: DateTime<Local>) -> gtk::ListBoxRow {
         // Translators: This is a date format in the day divider with the year
         i18n("%B %e, %Y")
     };
-    let stamp = if let Some(string) = gdate.format(&format) {
-        string
+    let stamp = if let Some(gstr) = gdate.format(&format) {
+        gstr.to_string()
     } else {
         // Fallback to a non glib time string
         date.format(&format).to_string()
     };
     let row = gtk::ListBoxRow::new();
-    if let Some(style) = row.get_style_context() {
-        style.add_class("divider");
-    }
+    row.get_style_context().add_class("divider");
     row.set_margin_top(24);
     row.set_selectable(false);
     row.set_activatable(false);
diff --git a/fractal-gtk/src/widgets/room_settings.rs b/fractal-gtk/src/widgets/room_settings.rs
index 927f3f8b..29eb60f8 100644
--- a/fractal-gtk/src/widgets/room_settings.rs
+++ b/fractal-gtk/src/widgets/room_settings.rs
@@ -120,13 +120,19 @@ impl RoomSettings {
 
         let button = name_btn.clone();
         name_entry.connect_property_text_notify(clone!(this => move |w| {
-            let result = this.borrow().validate_room_name(w.get_text());
+            let result = this.borrow().validate_room_name(
+                w.get_text()
+                    .map_or(None, |gstr| Some(gstr.to_string()))
+            );
             button.set_visible(result.is_some());
         }));
 
         let button = topic_btn.clone();
         topic_entry.connect_property_text_notify(clone!(this => move |w| {
-            let result = this.borrow().validate_room_topic(w.get_text());
+            let result = this.borrow().validate_room_topic(
+                w.get_text()
+                    .map_or(None, |gstr| Some(gstr.to_string()))
+            );
             button.set_visible(result.is_some());
         }));
 
@@ -268,7 +274,7 @@ impl RoomSettings {
     }
 
     pub fn reset_action_button(&self, button: gtk::Button) {
-        let image = gtk::Image::new_from_icon_name("emblem-ok-symbolic", 1);
+        let image = gtk::Image::new_from_icon_name("emblem-ok-symbolic", gtk::IconSize::Menu);
         button.set_image(&image);
         button.set_sensitive(true);
     }
@@ -466,7 +472,7 @@ impl RoomSettings {
             .get_object::<gtk::Button>("room_settings_room_name_button")
             .expect("Can't find room_settings_name_button in ui file.");
 
-        let new_name = entry.get_text()?;
+        let new_name = entry.get_text()?.to_string();
         let room = &self.room;
 
         let spinner = gtk::Spinner::new();
@@ -512,7 +518,7 @@ impl RoomSettings {
             .builder
             .get_object::<gtk::Button>("room_settings_room_topic_button")
             .expect("Can't find room_settings_topic_button in ui file.");
-        let topic = name.get_text()?;
+        let topic = name.get_text()?.to_string();
 
         let room = &self.room;
 
diff --git a/fractal-gtk/src/widgets/roomlist.rs b/fractal-gtk/src/widgets/roomlist.rs
index ddf57407..0231242a 100644
--- a/fractal-gtk/src/widgets/roomlist.rs
+++ b/fractal-gtk/src/widgets/roomlist.rs
@@ -2,7 +2,6 @@ use crate::i18n::i18n;
 use fractal_api::clone;
 
 use gdk;
-use gdk::DragContextExtManual;
 use glib;
 use pango;
 
@@ -86,9 +85,7 @@ impl RoomListGroup {
         empty.set_line_wrap_mode(pango::WrapMode::WordChar);
         empty.set_line_wrap(true);
         empty.set_justify(gtk::Justification::Center);
-        if let Some(style) = empty.get_style_context() {
-            style.add_class("room-empty-text");
-        }
+        empty.get_style_context().add_class("room-empty-text");
 
         let rev = gtk::Revealer::new();
         let b = gtk::Box::new(gtk::Orientation::Vertical, 0);
@@ -101,23 +98,20 @@ impl RoomListGroup {
         let title = gtk::Label::new(name);
         title.set_halign(gtk::Align::Start);
         title.set_valign(gtk::Align::Start);
-        let arrow = gtk::Image::new_from_icon_name("pan-down-symbolic", 2);
+        let arrow =
+            gtk::Image::new_from_icon_name("pan-down-symbolic", gtk::IconSize::SmallToolbar);
         let expanded = Arc::new(Mutex::new(true));
         let title_eb = gtk::EventBox::new();
 
         title_eb.connect_button_press_event(clone!(list, arrow, rev, expanded => move |_, _| {
             if *expanded.lock().unwrap() {
-                arrow.set_from_icon_name("pan-end-symbolic", 2);
+                arrow.set_from_icon_name("pan-end-symbolic", gtk::IconSize::SmallToolbar);
                 rev.set_reveal_child(false);
-                if let Some(style) = list.get_style_context() {
-                    style.add_class("collapsed");
-                }
+                list.get_style_context().add_class("collapsed");
             } else {
-                arrow.set_from_icon_name("pan-down-symbolic", 2);
+                arrow.set_from_icon_name("pan-down-symbolic", gtk::IconSize::SmallToolbar);
                 rev.set_reveal_child(true);
-                if let Some(style) = list.get_style_context() {
-                    style.remove_class("collapsed");
-                }
+                list.get_style_context().remove_class("collapsed");
             }
             let exp = !(*expanded.lock().unwrap());
             *expanded.lock().unwrap() = exp;
@@ -244,16 +238,13 @@ impl RoomListGroup {
 
     pub fn widget(&self) -> &gtk::EventBox {
         let b = self.wbox.clone();
-        if let Some(style) = b.get_style_context() {
-            style.add_class("room-list");
-            style.add_class("sidebar");
-        }
+        let b_ctx = b.get_style_context();
+        b_ctx.add_class("room-list");
+        b_ctx.add_class("sidebar");
 
         // building the heading
         let hbox = gtk::Box::new(gtk::Orientation::Horizontal, 5);
-        if let Some(style) = hbox.get_style_context() {
-            style.add_class("room-title");
-        }
+        hbox.get_style_context().add_class("room-title");
         hbox.pack_start(&self.title, true, true, 0);
         hbox.pack_start(&self.arrow, false, false, 0);
 
@@ -262,12 +253,11 @@ impl RoomListGroup {
         }
         self.title_eb.add(&hbox);
 
-        self.arrow.set_from_icon_name("pan-down-symbolic", 2);
+        self.arrow
+            .set_from_icon_name("pan-down-symbolic", gtk::IconSize::SmallToolbar);
         *self.expanded.lock().unwrap() = true;
         self.rev.set_reveal_child(true);
-        if let Some(style) = self.list.get_style_context() {
-            style.remove_class("collapsed");
-        }
+        self.list.get_style_context().remove_class("collapsed");
 
         b.pack_start(&self.title_eb, false, false, 0);
         b.pack_start(&self.rev, true, true, 0);
@@ -771,7 +761,7 @@ impl RoomList {
         });
         widget.connect_drag_data_received(move |_w, _ctx, _x, _y, data, _info, _time| {
             if let Some(roomid) = data.get_text() {
-                cb(roomid);
+                cb(roomid.to_string());
             }
         });
     }
diff --git a/fractal-gtk/src/widgets/roomrow.rs b/fractal-gtk/src/widgets/roomrow.rs
index 3f471b0e..3138a37d 100644
--- a/fractal-gtk/src/widgets/roomrow.rs
+++ b/fractal-gtk/src/widgets/roomrow.rs
@@ -31,10 +31,8 @@ impl RoomRow {
         let name = room.name.clone().unwrap_or("...".to_string());
 
         let icon = widgets::Avatar::avatar_new(Some(ICON_SIZE));
-        let direct = gtk::Image::new_from_icon_name("avatar-default-symbolic", 1);
-        if let Some(style) = direct.get_style_context() {
-            style.add_class("direct-chat");
-        }
+        let direct = gtk::Image::new_from_icon_name("avatar-default-symbolic", gtk::IconSize::Menu);
+        direct.get_style_context().add_class("direct-chat");
 
         let text = gtk::Label::new(name.clone().as_str());
         text.set_valign(gtk::Align::Start);
@@ -49,14 +47,13 @@ impl RoomRow {
             format!("{}", n)
         };
         let notifications = gtk::Label::new(&ntext[..]);
-        if let Some(style) = notifications.get_style_context() {
-            style.add_class("notify-badge");
-
-            if h > 0 || room.membership.is_invited() {
-                style.add_class("notify-highlight");
-            } else {
-                style.remove_class("notify-highlight");
-            }
+        let style = notifications.get_style_context();
+        style.add_class("notify-badge");
+
+        if h > 0 || room.membership.is_invited() {
+            style.add_class("notify-highlight");
+        } else {
+            style.remove_class("notify-highlight");
         }
 
         if n > 0 || room.membership.is_invited() {
@@ -91,22 +88,20 @@ impl RoomRow {
             self.notifications.hide();
         }
 
-        if let Some(style) = self.notifications.get_style_context() {
-            if h > 0 || self.room.membership.is_invited() {
-                style.add_class("notify-highlight");
-            } else {
-                style.remove_class("notify-highlight");
-            }
+        let style = self.notifications.get_style_context();
+        if h > 0 || self.room.membership.is_invited() {
+            style.add_class("notify-highlight");
+        } else {
+            style.remove_class("notify-highlight");
         }
     }
 
     pub fn set_bold(&self, bold: bool) {
-        if let Some(style) = self.text.get_style_context() {
-            if bold {
-                style.add_class("notify-bold");
-            } else {
-                style.remove_class("notify-bold");
-            }
+        let style = self.text.get_style_context();
+        if bold {
+            style.add_class("notify-bold");
+        } else {
+            style.remove_class("notify-bold");
         }
     }
 
@@ -141,9 +136,7 @@ impl RoomRow {
         }
         self.widget.add(&b);
 
-        if let Some(style) = b.get_style_context() {
-            style.add_class("room-row");
-        }
+        b.get_style_context().add_class("room-row");
 
         b.pack_start(&self.icon, false, false, 5);
         if self.room.direct {
diff --git a/fractal-gtk/src/widgets/scroll_widget.rs b/fractal-gtk/src/widgets/scroll_widget.rs
index f3b710f4..1a6a7854 100644
--- a/fractal-gtk/src/widgets/scroll_widget.rs
+++ b/fractal-gtk/src/widgets/scroll_widget.rs
@@ -71,10 +71,9 @@ impl Widgets {
 
         let typing_label = gtk::Label::new(None);
         typing_label.show();
-        typing_label.get_style_context().map(|ctx| {
-            ctx.add_class("typing_label");
-            ctx.add_class("small-font");
-        });
+        let typing_label_ctx = typing_label.get_style_context();
+        typing_label_ctx.add_class("typing_label");
+        typing_label_ctx.add_class("small-font");
         typing_label.set_xalign(0.0);
         typing_label.set_property_wrap(true);
         typing_label.set_property_wrap_mode(pango::WrapMode::WordChar);
@@ -88,16 +87,10 @@ impl Widgets {
         column.add(&column_box);
         column.show();
 
-        messages
-            .get_style_context()
-            .unwrap()
-            .add_class("messages-history");
+        messages.get_style_context().add_class("messages-history");
         messages.show();
 
-        container
-            .get_style_context()
-            .unwrap()
-            .add_class("messages-box");
+        container.get_style_context().add_class("messages-box");
         container.add(&column);
 
         view.get_vadjustment().map(|adj| {
@@ -314,19 +307,20 @@ fn scroll_down(ref view: &gtk::ScrolledWindow, animate: bool) -> Option<()> {
         let end_time = start_time + 1000 * duration;
         view.add_tick_callback(move |view, clock| {
             let now = clock.get_frame_time();
+            let view = view.downcast_ref::<gtk::ScrolledWindow>().unwrap();
             if let Some(adj) = view.get_vadjustment() {
                 let end = adj.get_upper() - adj.get_page_size();
                 if now < end_time && adj.get_value().round() != end.round() {
                     let mut t = (now - start_time) as f64 / (end_time - start_time) as f64;
                     t = ease_out_cubic(t);
                     adj.set_value(start + t * (end - start));
-                    return glib::Continue(true);
+                    return true;
                 } else {
                     adj.set_value(end);
-                    return glib::Continue(false);
+                    return false;
                 }
             }
-            return glib::Continue(false);
+            false
         });
     } else {
         adj.set_value(adj.get_upper() - adj.get_page_size());
diff --git a/fractal-gtk/src/widgets/sourceview_entry.rs b/fractal-gtk/src/widgets/sourceview_entry.rs
index e98c632d..be8d5caa 100644
--- a/fractal-gtk/src/widgets/sourceview_entry.rs
+++ b/fractal-gtk/src/widgets/sourceview_entry.rs
@@ -58,19 +58,20 @@ impl Default for SVEntry {
         */
 
         let entry_box = gtk::Box::new(gtk::Orientation::Vertical, 0);
-        entry_box
-            .get_style_context()
-            .map(|c| c.add_class("message-input"));
+        entry_box.get_style_context().add_class("message-input");
 
-        let scroll = gtk::ScrolledWindow::new(None, None);
+        let hadjust: Option<&gtk::Adjustment> = None;
+        let vadjust: Option<&gtk::Adjustment> = None;
+        let scroll = gtk::ScrolledWindow::new(hadjust, vadjust);
 
-        let buffer = sourceview::Buffer::new(None);
+        let tag_table: Option<&gtk::TextTagTable> = None;
+        let buffer = sourceview::Buffer::new(tag_table);
         let view = sourceview::View::new_with_buffer(&buffer);
         view.set_wrap_mode(gtk::WrapMode::WordChar);
         view.set_indent_on_tab(false);
 
         let textview = view.upcast_ref::<gtk::TextView>();
-        let gspell_view = gspell::TextView::get_from_gtk_text_view(&textview).unwrap();
+        let gspell_view = gspell::TextView::get_from_gtk_text_view(textview).unwrap();
         gspell_view.basic_setup();
 
         scroll.add(&view);
diff --git a/fractal-matrix-api/Cargo.toml b/fractal-matrix-api/Cargo.toml
index f86e6a5a..39db042b 100644
--- a/fractal-matrix-api/Cargo.toml
+++ b/fractal-matrix-api/Cargo.toml
@@ -26,7 +26,7 @@ serde_json = "1.0.33"
 time = "0.1.41"
 url = "1.7.2"
 urlencoding = "1.0.0"
-gio = "0.5.1"
+gio = "0.6.0"
 
 [dependencies.chrono]
 version = "0.4.6"
diff --git a/fractal-matrix-api/src/client.rs b/fractal-matrix-api/src/client.rs
index 01067fad..24c6fc20 100644
--- a/fractal-matrix-api/src/client.rs
+++ b/fractal-matrix-api/src/client.rs
@@ -82,8 +82,16 @@ impl Client {
         // Lock first so we don't overwrite proxy settings with outdated information
         let mut inner = self.inner.lock().unwrap();
 
-        let http_proxy = PROXY_RESOLVER.with(|resolver| resolver.lookup("http://";, None))?;
-        let https_proxy = PROXY_RESOLVER.with(|resolver| resolver.lookup("https://";, None))?;
+        let http_proxy = PROXY_RESOLVER
+            .with(|resolver| resolver.lookup("http://";, gio::NONE_CANCELLABLE))?
+            .iter()
+            .map(ToString::to_string)
+            .collect();
+        let https_proxy = PROXY_RESOLVER
+            .with(|resolver| resolver.lookup("https://";, gio::NONE_CANCELLABLE))?
+            .iter()
+            .map(ToString::to_string)
+            .collect();
 
         let new_proxy_settings = ProxySettings::new(http_proxy, https_proxy);
 
diff --git a/fractal-matrix-api/src/util.rs b/fractal-matrix-api/src/util.rs
index 08adb339..f4664fd2 100644
--- a/fractal-matrix-api/src/util.rs
+++ b/fractal-matrix-api/src/util.rs
@@ -244,7 +244,7 @@ pub fn put_media(url: &str, file: Vec<u8>) -> Result<JsonValue, Error> {
         .get_client()?
         .post(url)
         .body(file)
-        .header(CONTENT_TYPE, mime);
+        .header(CONTENT_TYPE, mime.to_string());
 
     let mut res = conn.send()?;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]