diff --git a/src/main.rs b/src/main.rs
index 5c9504b..35c0605 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -419,17 +419,20 @@ impl VideoPlayer {
 
         self.fullscreen_action.connect_change_state(|fullscreen_action, _| {
             if let Some(is_fullscreen) = fullscreen_action.get_state() {
-                let fullscreen = is_fullscreen.get::<bool>().unwrap();
-                if !fullscreen {
-                    GLOBAL.with(|global| {
-                        if let Some(ref video_player) = *global.borrow() {
-                            if let Some(ref ui_ctx) = video_player.ui_context {
+                GLOBAL.with(|global| {
+                    if let Some(ref video_player) = *global.borrow() {
+                        if let Some(ref ui_ctx) = video_player.ui_context {
+                            let fullscreen = is_fullscreen.get::<bool>().unwrap();
+                            if !fullscreen {
                                 ui_ctx.enter_fullscreen(&video_player.app);
-                                fullscreen_action.set_state(&true.to_variant());
+                            } else {
+                                ui_ctx.leave_fullscreen(&video_player.app);
                             }
+                            let new_state = !fullscreen;
+                            fullscreen_action.set_state(&new_state.to_variant());
                         }
-                    });
-                }
+                    }
+                });
             }
         });