Skip to content

Commit

Permalink
1. We need delete QWebEnginePage manual, otherwise QtWebEngineProcess…
Browse files Browse the repository at this point in the history
… won't quit.

2. Refactroy destory interface of core/Buffer.py
  • Loading branch information
manateelazycat committed Feb 29, 2020
1 parent 3afcd45 commit 189dce5
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 17 deletions.
4 changes: 1 addition & 3 deletions app/pdf-viewer/buffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,11 @@ def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict):
"toggle_read_mode", "toggle_inverted_mode", "toggle_mark_link"]:
self.build_widget_method(method_name)

def handle_destroy(self):
def before_destroy_buffer(self):
if self.delete_temp_file:
if os.path.exists(self.url):
os.remove(self.url)

super.handle_destroy(self)

def get_table_file(self):
return self.buffer_widget.table_file_path

Expand Down
4 changes: 1 addition & 3 deletions app/terminal/buffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,5 @@ def load_wetty_server(self):
if len(paths) > 0:
self.change_title(paths[-1])

def handle_destroy(self):
def before_destroy_buffer(self):
os.kill(self.background_process.pid, signal.SIGTERM)

super.handle_destroy(self)
8 changes: 6 additions & 2 deletions core/browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -440,13 +440,17 @@ def handle_download_request(self, download_item):

self.message_to_emacs.emit("Start download: " + download_data)

def handle_destroy(self):
def destroy_buffer(self):
# Record close page.
self.close_page.emit(self.buffer_widget.url().toString())

# Load blank page to stop video playing, such as youtube.com.
self.buffer_widget.open_url("about:blank")

super.handle_destroy(self)
if self.buffer_widget is not None:
# NOTE: We need delete QWebEnginePage manual, otherwise QtWebEngineProcess won't quit.
self.buffer_widget.web_page.deleteLater()
self.buffer_widget.deleteLater()

def get_key_event_widgets(self):
# We need send key event to QWebEngineView's focusProxy widget, not QWebEngineView.
Expand Down
11 changes: 6 additions & 5 deletions core/buffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,6 @@ class Buffer(QGraphicsScene):
open_url_in_new_tab = QtCore.pyqtSignal(str)
open_url_in_background_tab = QtCore.pyqtSignal(str)
translate_text = QtCore.pyqtSignal(str)
before_destroy_hook = QtCore.pyqtSignal()
input_message = QtCore.pyqtSignal(str, str, str, str, str)
close_buffer = QtCore.pyqtSignal(str)
message_to_emacs = QtCore.pyqtSignal(str)
Expand Down Expand Up @@ -214,12 +213,14 @@ def add_widget(self, widget):

self.buffer_widget.buffer = self

def handle_destroy(self):
# Record close page before close action.
self.before_destroy_hook.emit()
def before_destroy_buffer(self):
pass

def destroy_buffer(self):
self.before_destroy_buffer()

if self.buffer_widget is not None:
self.buffer_widget.destroy()
self.buffer_widget.deleteLater()

def change_title(self, title):
self.update_details.emit(self.buffer_id, title, self.url)
Expand Down
2 changes: 1 addition & 1 deletion core/view.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,5 +105,5 @@ def reparent(self):

xlib_display.sync()

def handle_destroy(self):
def destroy_view(self):
self.destroy()
6 changes: 3 additions & 3 deletions eaf.py
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ def update_views(self, args):
# Remove old key from view dict and destroy old view.
for key in list(self.view_dict):
if key not in view_infos:
self.view_dict[key].handle_destroy()
self.view_dict[key].destroy_view()
self.view_dict.pop(key, None)

# Create new view and udpate in view dict.
Expand Down Expand Up @@ -274,15 +274,15 @@ def kill_buffer(self, buffer_id):
# Kill all view base on buffer_id.
for key in list(self.view_dict):
if buffer_id == self.view_dict[key].buffer_id:
self.view_dict[key].handle_destroy()
self.view_dict[key].destroy_view()
self.view_dict.pop(key, None)

# Clean buffer from buffer dict.
if buffer_id in self.buffer_dict:
# Save buffer session.
self.save_buffer_session(self.buffer_dict[buffer_id])

self.buffer_dict[buffer_id].handle_destroy()
self.buffer_dict[buffer_id].destroy_buffer()
self.buffer_dict.pop(buffer_id, None)

@dbus.service.method(EAF_DBUS_NAME, in_signature="sss", out_signature="")
Expand Down

0 comments on commit 189dce5

Please sign in to comment.