Procházet zdrojové kódy

fix(gtk): redraw all windows after input

Resolved 'focus jumping' illusion by ensuring all windows (including split panes) are redrawn after input. Previously only the primary window was redrawn, making it appear as if action was occurring in the wrong window.
Bernardo Magri před 1 měsícem
rodič
revize
5db16fd31a
2 změnil soubory, kde provedl 7 přidání a 7 odebrání
  1. 1 1
      scripts/build.sh
  2. 6 6
      src/gtk_editor.cpp

+ 1 - 1
scripts/build.sh

@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 set -e # Exit immediately if a command exits with a non-zero status
 

+ 6 - 6
src/gtk_editor.cpp

@@ -797,7 +797,7 @@ protected:
                 mode_ = Mode::Normal;
                 command_buffer_.clear();
                 message_line_ = "Cancelled";
-                if (drawing_area_) drawing_area_->queue_draw();
+                if (content_widget_) queue_redraw_all_windows(content_widget_);
                 return true;
             }
             
@@ -820,20 +820,20 @@ protected:
 
                 mode_ = Mode::Normal;
                 command_buffer_.clear();
-                if (drawing_area_) drawing_area_->queue_draw();
+                if (content_widget_) queue_redraw_all_windows(content_widget_);
                 return true;
             }
             
             if (key_name == "Backspace") {
                 if (!command_buffer_.empty()) command_buffer_.pop_back();
-                if (drawing_area_) drawing_area_->queue_draw();
+                if (content_widget_) queue_redraw_all_windows(content_widget_);
                 return true;
             }
             
             // Simple character input
             if (key_name.length() == 1 && !is_control && !is_lumacs_meta) {
                 command_buffer_ += key_name;
-                if (drawing_area_) drawing_area_->queue_draw();
+                if (content_widget_) queue_redraw_all_windows(content_widget_);
                 return true;
             }
             
@@ -936,8 +936,8 @@ protected:
         }
 
         // Request redraw after processing input
-        if (drawing_area_) {
-            drawing_area_->queue_draw();
+        if (content_widget_) {
+            queue_redraw_all_windows(content_widget_);
         }
         return true;
     }