From c08a6287e36678a255364b86428016800b0569fa Mon Sep 17 00:00:00 2001 From: daa Date: Fri, 23 Feb 2018 13:07:38 +0300 Subject: [PATCH] Don't send resize event if it already wait for timeout try to fix #58 --- src/shell.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/shell.rs b/src/shell.rs index 8c0417f..d1c495f 100644 --- a/src/shell.rs +++ b/src/shell.rs @@ -59,7 +59,10 @@ pub struct State { cursor: Option, popup_menu: RefCell, settings: Rc>, + + resize_request: (i64, i64), resize_timer: Rc>>, + pub clipboard_clipboard: gtk::Clipboard, pub clipboard_primary: gtk::Clipboard, @@ -93,7 +96,10 @@ impl State { cursor: None, popup_menu, settings, + + resize_request: (-1, -1), resize_timer: Rc::new(Cell::new(None)), + clipboard_clipboard: gtk::Clipboard::get(&gdk::Atom::intern("CLIPBOARD")), clipboard_primary: gtk::Clipboard::get(&gdk::Atom::intern("PRIMARY")), @@ -277,11 +283,19 @@ impl State { return; } + let (requested_rows, requested_cols) = self.resize_request; + + if requested_rows == rows as i64 && requested_cols == columns as i64 { + return; + } + let resize_timer = self.resize_timer.take(); if let Some(resize_timer) = resize_timer { glib::source_remove(resize_timer); } + self.resize_request = (rows as i64, columns as i64); + let nvim = self.nvim.clone(); let resize_timer = self.resize_timer.clone();