feat(gui): track VSCode diff process, close it when patch modal closes
- Store _vscode_diff_process after launching external editor - Add _close_vscode_diff() helper to terminate the process - Call _close_vscode_diff() when Apply Patch or Reject is clicked
This commit is contained in:
@@ -2201,8 +2201,10 @@ class App:
|
|||||||
imgui.same_line()
|
imgui.same_line()
|
||||||
if imgui.button("Apply Patch"):
|
if imgui.button("Apply Patch"):
|
||||||
self._apply_pending_patch()
|
self._apply_pending_patch()
|
||||||
|
self._close_vscode_diff()
|
||||||
imgui.same_line()
|
imgui.same_line()
|
||||||
if imgui.button("Reject"):
|
if imgui.button("Reject"):
|
||||||
|
self._close_vscode_diff()
|
||||||
self._show_patch_modal = False
|
self._show_patch_modal = False
|
||||||
self._pending_patch_text = None
|
self._pending_patch_text = None
|
||||||
self._pending_patch_files = []
|
self._pending_patch_files = []
|
||||||
@@ -2252,9 +2254,18 @@ class App:
|
|||||||
self._patch_error_message = "Failed to launch external editor"
|
self._patch_error_message = "Failed to launch external editor"
|
||||||
else:
|
else:
|
||||||
self._patch_error_message = None
|
self._patch_error_message = None
|
||||||
|
self._vscode_diff_process = result
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self._patch_error_message = str(e)
|
self._patch_error_message = str(e)
|
||||||
|
|
||||||
|
def _close_vscode_diff(self) -> None:
|
||||||
|
if hasattr(self, '_vscode_diff_process') and self._vscode_diff_process:
|
||||||
|
try:
|
||||||
|
self._vscode_diff_process.terminate()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
self._vscode_diff_process = None
|
||||||
|
|
||||||
def request_patch_from_tier4(self, error: str, file_context: str) -> None:
|
def request_patch_from_tier4(self, error: str, file_context: str) -> None:
|
||||||
try:
|
try:
|
||||||
from src import ai_client
|
from src import ai_client
|
||||||
|
|||||||
Reference in New Issue
Block a user