Blob Blame History Raw
From 38361e7c8d644b10d9b6747c26eeec2b50d42845 Mon Sep 17 00:00:00 2001
From: Jan Lukas Gernert <jangernert@gmail.com>
Date: Sun, 7 Jun 2020 18:55:59 +0200
Subject: [PATCH] use usize where possible

---
 src/article_list/article_row.rs       | 24 ++++++------
 src/article_list/mod.rs               |  4 +-
 src/article_view/mod.rs               | 56 +++++++++++++--------------
 src/content_page/content_header.rs    | 12 +++---
 src/error_bar.rs                      | 18 ++++-----
 src/login_screen/password_login.rs    | 38 +++++++++---------
 src/login_screen/web_login.rs         | 30 +++++---------
 src/reset_page.rs                     |  4 +-
 src/sidebar/feed_list/category_row.rs | 12 +++---
 src/sidebar/feed_list/feed_row.rs     | 10 ++---
 src/tag_popover/mod.rs                | 20 +++++-----
 src/util/gtk_util.rs                  |  7 +++-
 12 files changed, 114 insertions(+), 121 deletions(-)

diff --git a/src/article_list/article_row.rs b/src/article_list/article_row.rs
index 255665b..ca3ebf6 100644
--- a/src/article_list/article_row.rs
+++ b/src/article_list/article_row.rs
@@ -24,7 +24,7 @@ pub struct ArticleRow {
     unread_stack: Stack,
     title_label: Label,
     row_hovered: Arc<RwLock<bool>>,
-    connected_signals: Vec<(u64, Widget)>,
+    connected_signals: Vec<(usize, Widget)>,
 }
 
 impl ArticleRow {
@@ -175,7 +175,7 @@ impl ArticleRow {
         title_label: &Label,
         article_id: &ArticleID,
         list_model: &Arc<RwLock<ArticleListModel>>,
-    ) -> Vec<(u64, Widget)> {
+    ) -> Vec<(usize, Widget)> {
         let mut vec = Vec::new();
         vec.push((
             eventbox
@@ -192,7 +192,7 @@ impl ArticleRow {
                     }
                     Inhibit(false)
                 }))
-                .to_glib(),
+                .to_glib() as usize,
             eventbox.clone().upcast::<Widget>(),
         ));
 
@@ -211,7 +211,7 @@ impl ArticleRow {
                     }
                     Inhibit(false)
                 }))
-                .to_glib(),
+                .to_glib() as usize,
             eventbox.clone().upcast::<Widget>(),
         ));
 
@@ -249,7 +249,7 @@ impl ArticleRow {
                     Util::send(&sender, Action::MarkArticleRead(update));
                     Inhibit(true)
                 }))
-                .to_glib(),
+                .to_glib() as usize,
             eventbox.clone().upcast::<Widget>(),
         ));
 
@@ -264,7 +264,7 @@ impl ArticleRow {
         marked_stack: &Stack,
         article_id: &ArticleID,
         list_model: &Arc<RwLock<ArticleListModel>>,
-    ) -> Vec<(u64, Widget)> {
+    ) -> Vec<(usize, Widget)> {
         let mut vec = Vec::new();
 
         vec.push((
@@ -282,7 +282,7 @@ impl ArticleRow {
                     }
                     Inhibit(false)
                 }))
-                .to_glib(),
+                .to_glib() as usize,
             eventbox.clone().upcast::<Widget>(),
         ));
 
@@ -301,7 +301,7 @@ impl ArticleRow {
                     }
                     Inhibit(false)
                 }))
-                .to_glib(),
+                .to_glib() as usize,
             eventbox.clone().upcast::<Widget>(),
         ));
 
@@ -337,7 +337,7 @@ impl ArticleRow {
                     Util::send(&sender, Action::MarkArticle(update));
                     Inhibit(true)
                 }))
-                .to_glib(),
+                .to_glib() as usize,
             eventbox.clone().upcast::<Widget>(),
         ));
 
@@ -352,7 +352,7 @@ impl ArticleRow {
         marked_stack: &Stack,
         title_label: &Label,
         row_hovered: &Arc<RwLock<bool>>,
-    ) -> Vec<(u64, Widget)> {
+    ) -> Vec<(usize, Widget)> {
         Self::update_title_label(&title_label, *read.read());
         Self::update_unread_stack(&unread_stack, *read.read(), *row_hovered.read());
         Self::update_marked_stack(&marked_stack, *marked.read());
@@ -382,7 +382,7 @@ impl ArticleRow {
                     }
                     Inhibit(true)
                 }))
-                .to_glib(),
+                .to_glib() as usize,
             eventbox.clone().upcast::<Widget>(),
         ));
 
@@ -409,7 +409,7 @@ impl ArticleRow {
                     }
                     Inhibit(true)
                 }))
-                .to_glib(),
+                .to_glib() as usize,
             eventbox.clone().upcast::<Widget>(),
         ));
 
diff --git a/src/article_list/mod.rs b/src/article_list/mod.rs
index 86cbbd6..1122367 100644
--- a/src/article_list/mod.rs
+++ b/src/article_list/mod.rs
@@ -33,7 +33,7 @@ pub struct ArticleList {
     list_1: Arc<RwLock<SingleArticleList>>,
     list_2: Arc<RwLock<SingleArticleList>>,
     list_model: Arc<RwLock<ArticleListModel>>,
-    list_activate_signal: Option<u64>,
+    list_activate_signal: Option<usize>,
     local_state: MainWindowState,
     global_state: Arc<RwLock<MainWindowState>>,
     current_list: Arc<RwLock<CurrentList>>,
@@ -263,7 +263,7 @@ impl ArticleList {
                 }
             }))
             .to_glib();
-        self.list_activate_signal = Some(activate_signal_id);
+        self.list_activate_signal = Some(activate_signal_id as usize);
     }
 
     fn require_new_list(&self, new_state: &RwLock<MainWindowState>) -> bool {
diff --git a/src/article_view/mod.rs b/src/article_view/mod.rs
index b29edb2..f43c487 100644
--- a/src/article_view/mod.rs
+++ b/src/article_view/mod.rs
@@ -59,16 +59,16 @@ pub struct ArticleView {
     visible_feed_name: Arc<RwLock<Option<String>>>,
     widnow_state: Arc<RwLock<MainWindowState>>,
     internal_state: Arc<RwLock<InternalState>>,
-    load_changed_signal: Arc<RwLock<Option<u64>>>,
-    decide_policy_signal: Arc<RwLock<Option<u64>>>,
-    mouse_over_signal: Arc<RwLock<Option<u64>>>,
-    scroll_signal: Arc<RwLock<Option<u64>>>,
-    key_press_signal: Arc<RwLock<Option<u64>>>,
-    ctx_menu_signal: Arc<RwLock<Option<u64>>>,
-    load_signal: Arc<RwLock<Option<u64>>>,
-    click_signal: Arc<RwLock<Option<u64>>>,
-    click_release_signal: Arc<RwLock<Option<u64>>>,
-    drag_motion_notify_signal: Arc<RwLock<Option<u64>>>,
+    load_changed_signal: Arc<RwLock<Option<usize>>>,
+    decide_policy_signal: Arc<RwLock<Option<usize>>>,
+    mouse_over_signal: Arc<RwLock<Option<usize>>>,
+    scroll_signal: Arc<RwLock<Option<usize>>>,
+    key_press_signal: Arc<RwLock<Option<usize>>>,
+    ctx_menu_signal: Arc<RwLock<Option<usize>>>,
+    load_signal: Arc<RwLock<Option<usize>>>,
+    click_signal: Arc<RwLock<Option<usize>>>,
+    click_release_signal: Arc<RwLock<Option<usize>>>,
+    drag_motion_notify_signal: Arc<RwLock<Option<usize>>>,
     drag_released_motion_signal: Arc<RwLock<Option<u32>>>,
     drag_buffer_update_signal: Arc<RwLock<Option<u32>>>,
     progress_overlay_delay_signal: Arc<RwLock<Option<u32>>>,
@@ -303,15 +303,15 @@ impl ArticleView {
         progress_overlay_label: &Arc<RwLock<ProgressOverlay>>,
         old_state: &Arc<RwLock<InternalState>>,
         stack: &gtk::Stack,
-        load_changed_signal: &Arc<RwLock<Option<u64>>>,
-        decide_policy_signal: &Arc<RwLock<Option<u64>>>,
-        mouse_over_signal: &Arc<RwLock<Option<u64>>>,
-        scroll_signal: &Arc<RwLock<Option<u64>>>,
-        key_press_signal: &Arc<RwLock<Option<u64>>>,
-        ctx_menu_signal: &Arc<RwLock<Option<u64>>>,
-        load_signal: &Arc<RwLock<Option<u64>>>,
-        click_signal: &Arc<RwLock<Option<u64>>>,
-        click_release_signal: &Arc<RwLock<Option<u64>>>,
+        load_changed_signal: &Arc<RwLock<Option<usize>>>,
+        decide_policy_signal: &Arc<RwLock<Option<usize>>>,
+        mouse_over_signal: &Arc<RwLock<Option<usize>>>,
+        scroll_signal: &Arc<RwLock<Option<usize>>>,
+        key_press_signal: &Arc<RwLock<Option<usize>>>,
+        ctx_menu_signal: &Arc<RwLock<Option<usize>>>,
+        load_signal: &Arc<RwLock<Option<usize>>>,
+        click_signal: &Arc<RwLock<Option<usize>>>,
+        click_release_signal: &Arc<RwLock<Option<usize>>>,
         drag_released_motion_signal: &Arc<RwLock<Option<u32>>>,
         drag_buffer_update_signal: &Arc<RwLock<Option<u32>>>,
         progress_overlay_delay_signal: &Arc<RwLock<Option<u32>>>,
@@ -431,7 +431,7 @@ impl ArticleView {
                     }
                     false
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         //----------------------------------
@@ -463,7 +463,7 @@ impl ArticleView {
                         url_overlay_label.read().reveal(false);
                     }
                 }))
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         //----------------------------------
@@ -489,7 +489,7 @@ impl ArticleView {
                     }
                     Inhibit(false)
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         //------------------------------------------------
@@ -509,7 +509,7 @@ impl ArticleView {
                     }
                     Inhibit(true)
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         //----------------------------------
@@ -542,7 +542,7 @@ impl ArticleView {
 
                     false
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         //----------------------------------
@@ -571,7 +571,7 @@ impl ArticleView {
                             progress_handle.read().reveal(true);
                             progress_handle.read().set_percentage(progress);
                         }))
-                        .to_glib(),
+                        .to_glib() as usize,
                 );
                 Continue(false)
             }))
@@ -652,7 +652,7 @@ impl ArticleView {
                                                     Self::set_scroll_pos_static(view, scroll_pos + scroll);
                                                     Inhibit(false)
                                                 }))
-                                                .to_glib(),
+                                                .to_glib() as usize,
                                         );
                                     }
                                 }
@@ -662,7 +662,7 @@ impl ArticleView {
                     }
                     Inhibit(false)
                 }))
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         self.click_release_signal.write().replace(
@@ -724,7 +724,7 @@ impl ArticleView {
                     }
                     Inhibit(false)
                 }))
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         //----------------------------------
diff --git a/src/content_page/content_header.rs b/src/content_page/content_header.rs
index e3bd5e3..8d828c9 100644
--- a/src/content_page/content_header.rs
+++ b/src/content_page/content_header.rs
@@ -33,7 +33,7 @@ pub struct ContentHeader {
     marked_button: ToggleButton,
     scrap_content_button: ToggleButton,
     scrap_content_stack: Stack,
-    scrap_content_event: RwLock<Option<u64>>,
+    scrap_content_event: RwLock<Option<usize>>,
     tag_button: MenuButton,
     tag_popover: RwLock<Option<TagPopover>>,
     more_actions_button: MenuButton,
@@ -43,8 +43,8 @@ pub struct ContentHeader {
     mark_article_read_button: ToggleButton,
     mark_article_stack: Stack,
     mark_article_read_stack: Stack,
-    mark_article_event: RwLock<Option<u64>>,
-    mark_article_read_event: RwLock<Option<u64>>,
+    mark_article_event: RwLock<Option<usize>>,
+    mark_article_read_event: RwLock<Option<usize>>,
 }
 
 impl ContentHeader {
@@ -557,7 +557,7 @@ impl ContentHeader {
                     }
                     Util::send(&sender, Action::ToggleArticleMarked);
                 }))
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         self.mark_article_read_event.write().replace(
@@ -573,7 +573,7 @@ impl ContentHeader {
                     }
                     Util::send(&sender, Action::ToggleArticleRead);
                 }))
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         self.scrap_content_event.write().replace(
@@ -590,7 +590,7 @@ impl ContentHeader {
                         Util::send(&sender, Action::RedrawArticle);
                     }
                 }))
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         self.more_actions_button.set_sensitive(sensitive);
diff --git a/src/error_bar.rs b/src/error_bar.rs
index cf24d98..48761c9 100644
--- a/src/error_bar.rs
+++ b/src/error_bar.rs
@@ -15,9 +15,9 @@ pub struct ErrorBar {
     detail_button: Button,
     login_button: Button,
     offline_button: Button,
-    detail_signal: Arc<RwLock<Option<u64>>>,
-    relogin_signal: Arc<RwLock<Option<u64>>>,
-    offline_signal: Arc<RwLock<Option<u64>>>,
+    detail_signal: Arc<RwLock<Option<usize>>>,
+    relogin_signal: Arc<RwLock<Option<usize>>>,
+    offline_signal: Arc<RwLock<Option<usize>>>,
     sender: Sender<Action>,
 }
 
@@ -71,9 +71,9 @@ impl ErrorBar {
         detail_button: &Button,
         login_button: &Button,
         offline_button: &Button,
-        detail_signal: &Arc<RwLock<Option<u64>>>,
-        relogin_signal: &Arc<RwLock<Option<u64>>>,
-        offline_signal: &Arc<RwLock<Option<u64>>>,
+        detail_signal: &Arc<RwLock<Option<usize>>>,
+        relogin_signal: &Arc<RwLock<Option<usize>>>,
+        offline_signal: &Arc<RwLock<Option<usize>>>,
     ) {
         info_bar.set_revealed(false);
         GtkUtil::disconnect_signal(*detail_signal.read(), detail_button);
@@ -114,7 +114,7 @@ impl ErrorBar {
                         log::info!("retry login");
                         Util::send(&sender, Action::RetryLogin);
                     }))
-                    .to_glib(),
+                    .to_glib() as usize,
             );
 
             *self.offline_signal.write() = Some(
@@ -141,7 +141,7 @@ impl ErrorBar {
                         );
                         Util::send(&sender, Action::SetOfflineMode(true));
                     }))
-                    .to_glib(),
+                    .to_glib() as usize,
             );
         }
 
@@ -155,7 +155,7 @@ impl ErrorBar {
                         error!("Failed to spawn ErrorDialog. Parent window not found.");
                     }
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
     }
 }
diff --git a/src/login_screen/password_login.rs b/src/login_screen/password_login.rs
index be1e1fd..683d3e9 100644
--- a/src/login_screen/password_login.rs
+++ b/src/login_screen/password_login.rs
@@ -34,16 +34,16 @@ pub struct PasswordLogin {
     login_button: gtk::Button,
     ignore_tls_button: gtk::Button,
     error_details_button: gtk::Button,
-    info_bar_close_signal: RwLock<Option<u64>>,
-    info_bar_response_signal: RwLock<Option<u64>>,
-    url_entry_signal: RwLock<Option<u64>>,
-    user_entry_signal: RwLock<Option<u64>>,
-    pass_entry_signal: RwLock<Option<u64>>,
-    http_user_entry_signal: RwLock<Option<u64>>,
-    http_pass_entry_signal: RwLock<Option<u64>>,
-    login_button_signal: RwLock<Option<u64>>,
-    ignore_tls_signal: RwLock<Option<u64>>,
-    error_details_signal: RwLock<Option<u64>>,
+    info_bar_close_signal: RwLock<Option<usize>>,
+    info_bar_response_signal: RwLock<Option<usize>>,
+    url_entry_signal: RwLock<Option<usize>>,
+    user_entry_signal: RwLock<Option<usize>>,
+    pass_entry_signal: RwLock<Option<usize>>,
+    http_user_entry_signal: RwLock<Option<usize>>,
+    http_pass_entry_signal: RwLock<Option<usize>>,
+    login_button_signal: RwLock<Option<usize>>,
+    ignore_tls_signal: RwLock<Option<usize>>,
+    error_details_signal: RwLock<Option<usize>>,
 }
 
 impl PasswordLogin {
@@ -129,7 +129,7 @@ impl PasswordLogin {
                 .connect_close(|info_bar| {
                     PasswordLogin::hide_info_bar(info_bar);
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
         self.info_bar_response_signal.write().replace(
             self.info_bar
@@ -138,7 +138,7 @@ impl PasswordLogin {
                         PasswordLogin::hide_info_bar(info_bar);
                     }
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         if let LoginGUI::Password(pw_gui_desc) = &info.login_gui {
@@ -157,19 +157,19 @@ impl PasswordLogin {
             // check if 'login' should be clickable
             self.url_entry_signal
                 .write()
-                .replace(self.setup_entry(&self.url_entry, &pw_gui_desc).to_glib());
+                .replace(self.setup_entry(&self.url_entry, &pw_gui_desc).to_glib() as usize);
             self.user_entry_signal
                 .write()
-                .replace(self.setup_entry(&self.user_entry, &pw_gui_desc).to_glib());
+                .replace(self.setup_entry(&self.user_entry, &pw_gui_desc).to_glib() as usize);
             self.pass_entry_signal
                 .write()
-                .replace(self.setup_entry(&self.pass_entry, &pw_gui_desc).to_glib());
+                .replace(self.setup_entry(&self.pass_entry, &pw_gui_desc).to_glib() as usize);
             self.http_user_entry_signal
                 .write()
-                .replace(self.setup_entry(&self.http_user_entry, &pw_gui_desc).to_glib());
+                .replace(self.setup_entry(&self.http_user_entry, &pw_gui_desc).to_glib() as usize);
             self.http_pass_entry_signal
                 .write()
-                .replace(self.setup_entry(&self.http_pass_entry, &pw_gui_desc).to_glib());
+                .replace(self.setup_entry(&self.http_pass_entry, &pw_gui_desc).to_glib() as usize);
 
             // harvest login data
             self.login_button_signal.write().replace(
@@ -231,7 +231,7 @@ impl PasswordLogin {
                         let login_data = LoginData::Password(login_data);
                         Util::send(&sender, Action::Login(login_data));
                     }))
-                    .to_glib(),
+                    .to_glib() as usize,
             );
 
             return Ok(());
@@ -324,7 +324,7 @@ impl PasswordLogin {
                         .expect("MainWindow is not a parent of password login error details button.");
                     let _dialog = ErrorDialog::new(&error, &parent);
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
         self.info_bar.set_visible(true);
         self.info_bar.set_revealed(true);
diff --git a/src/login_screen/web_login.rs b/src/login_screen/web_login.rs
index 641415e..274c4fc 100644
--- a/src/login_screen/web_login.rs
+++ b/src/login_screen/web_login.rs
@@ -3,14 +3,7 @@ use crate::app::Action;
 use crate::error_dialog::ErrorDialog;
 use crate::i18n::i18n;
 use crate::util::{BuilderHelper, GtkUtil, Util, GTK_BUILDER_ERROR};
-use glib::{
-    clone,
-    object::ObjectExt,
-    signal::SignalHandlerId,
-    source::Continue,
-    translate::{FromGlib, ToGlib},
-    Sender,
-};
+use glib::{clone, source::Continue, translate::ToGlib, Sender};
 use gtk::{Box, BoxExt, Button, ButtonExt, InfoBar, InfoBarExt, Label, LabelExt, ResponseType, WidgetExt};
 use news_flash::models::{LoginData, LoginGUI, OAuthData, PluginInfo};
 use news_flash::{NewsFlashError, NewsFlashErrorKind};
@@ -26,10 +19,10 @@ pub struct WebLogin {
     info_bar: gtk::InfoBar,
     info_bar_label: gtk::Label,
     error_details_button: gtk::Button,
-    redirect_signal_id: Rc<RwLock<Option<u64>>>,
-    info_bar_close_signal: RwLock<Option<u64>>,
-    info_bar_response_signal: RwLock<Option<u64>>,
-    error_details_signal: RwLock<Option<u64>>,
+    redirect_signal_id: Rc<RwLock<Option<usize>>>,
+    info_bar_close_signal: RwLock<Option<usize>>,
+    info_bar_response_signal: RwLock<Option<usize>>,
+    error_details_signal: RwLock<Option<usize>>,
 }
 
 impl WebLogin {
@@ -86,7 +79,7 @@ impl WebLogin {
                     let parent = GtkUtil::get_main_window(button).expect("MainWindow is not parent of details button.");
                     let _dialog = ErrorDialog::new(&error, &parent);
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         self.info_bar.set_visible(true);
@@ -100,7 +93,7 @@ impl WebLogin {
                 .connect_close(|info_bar| {
                     WebLogin::hide_info_bar(info_bar);
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
         self.info_bar_response_signal.write().replace(
             self.info_bar
@@ -109,7 +102,7 @@ impl WebLogin {
                         WebLogin::hide_info_bar(info_bar);
                     }
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         if let LoginGUI::OAuth(web_login_desc) = info.login_gui.clone() {
@@ -129,10 +122,7 @@ impl WebLogin {
                                             url: uri.as_str().to_owned(),
                                         };
                                         let oauth_data = LoginData::OAuth(oauth_data);
-                                        if let Some(signal_id) = *redirect_signal_id.read() {
-                                            let signal_id = SignalHandlerId::from_glib(signal_id);
-                                            webview.disconnect(signal_id);
-                                        }
+                                        GtkUtil::disconnect_signal(*redirect_signal_id.read(), webview);
                                         webview.stop_loading();
                                         Util::send(&sender, Action::Login(oauth_data));
                                     }
@@ -145,7 +135,7 @@ impl WebLogin {
                     }
                 }));
 
-                self.redirect_signal_id.write().replace(signal_id.to_glib());
+                self.redirect_signal_id.write().replace(signal_id.to_glib() as usize);
                 return Ok(());
             }
 
diff --git a/src/reset_page.rs b/src/reset_page.rs
index 6382cac..f088ff2 100644
--- a/src/reset_page.rs
+++ b/src/reset_page.rs
@@ -12,7 +12,7 @@ pub struct ResetPage {
     reset_button: Button,
     info_bar: InfoBar,
     error_details_button: Button,
-    error_details_signal: RwLock<Option<u64>>,
+    error_details_signal: RwLock<Option<usize>>,
 }
 
 impl ResetPage {
@@ -72,7 +72,7 @@ impl ResetPage {
                         .expect("MainWindow is not a parent of password login error details button.");
                     let _dialog = ErrorDialog::new(&error, &parent);
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         self.info_bar.set_revealed(true);
diff --git a/src/sidebar/feed_list/category_row.rs b/src/sidebar/feed_list/category_row.rs
index b33e694..0b6f580 100644
--- a/src/sidebar/feed_list/category_row.rs
+++ b/src/sidebar/feed_list/category_row.rs
@@ -32,7 +32,7 @@ pub struct CategoryRow {
     item_count_event: EventBox,
     title: Label,
     expanded: bool,
-    connected_signals: Vec<(u64, Widget)>,
+    connected_signals: Vec<(usize, Widget)>,
 }
 
 impl CategoryRow {
@@ -96,7 +96,7 @@ impl CategoryRow {
                     arrow_image.set_opacity(1.0);
                     Inhibit(false)
                 }))
-                .to_glib(),
+                .to_glib() as usize,
             arrow_event.clone().upcast::<Widget>(),
         ));
 
@@ -106,7 +106,7 @@ impl CategoryRow {
                     arrow_image.set_opacity(0.8);
                     Inhibit(false)
                 }))
-                .to_glib(),
+                .to_glib() as usize,
             arrow_event.clone().upcast::<Widget>(),
         ));
 
@@ -127,7 +127,7 @@ impl CategoryRow {
                         Inhibit(false)
                     }),
                 )
-                .to_glib(),
+                .to_glib() as usize,
             arrow_event.clone().upcast::<Widget>(),
         ));
 
@@ -155,7 +155,7 @@ impl CategoryRow {
         features: &Arc<RwLock<Option<PluginCapabilities>>>,
         label: String,
         sender: Sender<Action>,
-    ) -> Option<(u64, Widget)> {
+    ) -> Option<(usize, Widget)> {
         row.set_activatable(true);
         row.set_can_focus(false);
         row.get_style_context().remove_class("activatable");
@@ -240,7 +240,7 @@ impl CategoryRow {
                 row.set_state_flags(StateFlags::PRELIGHT, false);
 
                 Inhibit(true)
-            })).to_glib(), eventbox.clone().upcast::<Widget>()))
+            })).to_glib() as usize, eventbox.clone().upcast::<Widget>()))
         } else {
             None
         }
diff --git a/src/sidebar/feed_list/feed_row.rs b/src/sidebar/feed_list/feed_row.rs
index 86529ad..248332b 100644
--- a/src/sidebar/feed_list/feed_row.rs
+++ b/src/sidebar/feed_list/feed_row.rs
@@ -39,7 +39,7 @@ pub struct FeedRow {
     revealer: Revealer,
     hide_timeout: Arc<RwLock<Option<u32>>>,
     favicon: Image,
-    connected_signals: Vec<(u64, Widget)>,
+    connected_signals: Vec<(usize, Widget)>,
 }
 
 impl FeedRow {
@@ -100,7 +100,7 @@ impl FeedRow {
         id: &FeedID,
         parent_id: &CategoryID,
         label: String,
-    ) -> Vec<(u64, Widget)> {
+    ) -> Vec<(usize, Widget)> {
         let mut vec = Vec::new();
 
         row.set_activatable(true);
@@ -135,7 +135,7 @@ impl FeedRow {
                             }
                         }
                     }))
-                    .to_glib(),
+                    .to_glib() as usize,
                 revealer.clone().upcast::<Widget>(),
             ));
 
@@ -152,7 +152,7 @@ impl FeedRow {
                         style_context.remove_class("drag-icon");
                         drag_context.drag_set_icon_surface(&surface);
                     }))
-                    .to_glib(),
+                    .to_glib() as usize,
                 revealer.clone().upcast::<Widget>(),
             ));
 
@@ -231,7 +231,7 @@ impl FeedRow {
                 row.set_state_flags(StateFlags::PRELIGHT, false);
 
                 Inhibit(true)
-            })).to_glib(), row.clone().upcast::<Widget>()));
+            })).to_glib() as usize, row.clone().upcast::<Widget>()));
         }
 
         vec
diff --git a/src/tag_popover/mod.rs b/src/tag_popover/mod.rs
index af0905e..9b6a38e 100644
--- a/src/tag_popover/mod.rs
+++ b/src/tag_popover/mod.rs
@@ -28,11 +28,11 @@ pub struct TagPopover {
     unassigned_tags_list_stack: Stack,
     assigned_tags: Arc<RwLock<Vec<Tag>>>,
     unassigned_tags: Arc<RwLock<Vec<Tag>>>,
-    add_button_signal: Option<u64>,
-    back_button_signal: Option<u64>,
-    popover_close_signal: Option<u64>,
-    assigned_click_signal: Option<u64>,
-    unassigned_click_signal: Option<u64>,
+    add_button_signal: Option<usize>,
+    back_button_signal: Option<usize>,
+    popover_close_signal: Option<usize>,
+    assigned_click_signal: Option<usize>,
+    unassigned_click_signal: Option<usize>,
 }
 
 impl TagPopover {
@@ -55,7 +55,7 @@ impl TagPopover {
                 .connect_clicked(clone!(@weak main_stack => @default-panic, move |_button| {
                     main_stack.set_visible_child_full("possible_tags", StackTransitionType::SlideLeft);
                 }))
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         let back_button_signal = Some(
@@ -63,7 +63,7 @@ impl TagPopover {
                 .connect_clicked(clone!(@weak main_stack => @default-panic, move |_button| {
                     main_stack.set_visible_child_full("assigned_tags", StackTransitionType::SlideRight);
                 }))
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         let popover_close_signal = Some(
@@ -71,7 +71,7 @@ impl TagPopover {
                 .connect_closed(clone!(@weak main_stack => @default-panic, move |_button| {
                     main_stack.set_visible_child_full("assigned_tags", StackTransitionType::None);
                 }))
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         let assigned_click_signal = Some(
@@ -79,7 +79,7 @@ impl TagPopover {
                 .connect_row_activated(|_list, _row| {
                     info!("click");
                 })
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         let unassigned_click_signal = Some(
@@ -130,7 +130,7 @@ impl TagPopover {
                     main_stack.set_visible_child_full("assigned_tags", StackTransitionType::SlideRight);
                     list.remove(row);
                 }))
-                .to_glib(),
+                .to_glib() as usize,
         );
 
         let popover = TagPopover {
diff --git a/src/util/gtk_util.rs b/src/util/gtk_util.rs
index d8ec0f0..7189533 100644
--- a/src/util/gtk_util.rs
+++ b/src/util/gtk_util.rs
@@ -155,9 +155,12 @@ impl GtkUtil {
         None
     }
 
-    pub fn disconnect_signal<T: ObjectExt>(signal_id: Option<u64>, widget: &T) {
+    pub fn disconnect_signal<T: ObjectExt>(signal_id: Option<usize>, widget: &T) {
         if let Some(signal_id) = signal_id {
-            let signal_id = SignalHandlerId::from_glib(signal_id);
+            #[cfg(target_pointer_width = "64")]
+            let signal_id = SignalHandlerId::from_glib(signal_id as u64);
+            #[cfg(target_pointer_width = "32")]
+            let signal_id = SignalHandlerId::from_glib(signal_id as u32);
             widget.disconnect(signal_id);
         }
         //warn!("Signal ID to disconnect is NONE");
-- 
2.27.0