diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/window.rs | 22 | 
1 files changed, 15 insertions, 7 deletions
diff --git a/src/window.rs b/src/window.rs index 72ae143..af60ef8 100644 --- a/src/window.rs +++ b/src/window.rs @@ -15,6 +15,7 @@ pub struct Window {      #[allow(dead_code)] context: softbuffer::Context,      render_request: RenderRequest,      previous_cursor_position: Option<Point>, +    previous_cursor_icon: CursorIcon,  }  impl Window { @@ -55,6 +56,7 @@ impl Window {              context,              render_request: RenderRequest::REDRAW,              previous_cursor_position: None, +            previous_cursor_icon: CursorIcon::Default,          }      } @@ -68,7 +70,10 @@ impl Window {      pub fn update_cursor_icon(&mut self) {          let icon = self.controller.cursor_icon().unwrap_or(CursorIcon::Default); -        self.window.set_cursor_icon(icon); +        if icon != self.previous_cursor_icon { +            self.window.set_cursor_icon(icon); +            self.previous_cursor_icon = icon; +        }      }      /// This method only requests that the window size be changed; it does not @@ -92,17 +97,20 @@ impl Window {              self.render_request = RenderRequest::REDRAW;              self.resize_buffer_and_surface(dimensions * pixel_scale);          } else { +            // Prevent the window properties from being modified every frame +            // and interrupting the actions of the window manager. +            if pixel_scale == self.pixel_scale { +                return; +            }              self.window.set_resizable(true);              let size = self.controller.minimum_size().map(|d| dim_to_size(d * pixel_scale));              self.window.set_min_inner_size(size);              let size = self.controller.maximum_size().map(|d| dim_to_size(d * pixel_scale));              self.window.set_max_inner_size(size); -            if pixel_scale != self.pixel_scale { -                let increment = PhysicalSize { width: pixel_scale, height: pixel_scale }; -                self.window.set_resize_increments(Some(increment)); -                self.render_request = RenderRequest::REDRAW; -                self.resize_buffer_and_surface(self.surface_dimensions); -            } +            let increment = PhysicalSize { width: pixel_scale, height: pixel_scale }; +            self.window.set_resize_increments(Some(increment)); +            self.render_request = RenderRequest::REDRAW; +            self.resize_buffer_and_surface(self.surface_dimensions);          }      }  | 
