Commit 24585c6e authored by Andy Stewart's avatar Andy Stewart
Browse files

Finish mission: if popup window emit exit signal, kill buffer

parent 8b69da7d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -34,6 +34,8 @@ class BrowserBuffer(Buffer):
        self.buffer_widget.loadProgress.connect(self.update_progress)
        self.buffer_widget.loadFinished.connect(self.stop_progress)

        self.buffer_widget.web_page.windowCloseRequested.connect(self.request_close_buffer)

    def get_key_event_widgets(self):
        # We need send key event to QWebEngineView's focusProxy widget, not QWebEngineView.
        return [self.buffer_widget.focusProxy()]
+4 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ class Buffer(QGraphicsScene):
    open_url = QtCore.pyqtSignal(str)
    before_destroy_hook = QtCore.pyqtSignal()
    input_message = QtCore.pyqtSignal(str, str, str)
    close_buffer = QtCore.pyqtSignal(str)

    def __init__(self, buffer_id, url, fit_to_view, background_color):
        super(QGraphicsScene, self).__init__()
@@ -90,6 +91,9 @@ class Buffer(QGraphicsScene):
    def change_title(self, title):
        self.update_title.emit(self.buffer_id, title)

    def request_close_buffer(self):
        self.close_buffer.emit(self.buffer_id)

    def all_views_hide(self):
        pass

+0 −1
Original line number Diff line number Diff line
## Todo list
* Browser: add cookie support
* Browser: if popup window emit exit signal, kill buffer
* Browser: add proxy support
* Browser: implement js plugin like vimium
* Browser: study more code from https://github.com/LavaPower/Browthon-Old/blob/c25d5721b40e95131a3c521566a18467f13ecbf0/files/Browthon_elements.py
+15 −0
Original line number Diff line number Diff line
@@ -410,6 +410,21 @@ We need calcuate render allocation to make sure no black border around render co
      )
    (switch-to-buffer eaf-buffer)))

(dbus-register-signal
 :session "com.lazycat.eaf" "/com/lazycat/eaf"
 "com.lazycat.eaf" "request_kill_buffer"
 'eaf-request-kill-buffer)

(defun eaf-request-kill-buffer (kill-buffer-id)
  (catch 'found-match-buffer
    (dolist (buffer (buffer-list))
      (set-buffer buffer)
      (when (equal major-mode 'eaf-mode)
        (when (string= buffer-id kill-buffer-id)
          (kill-buffer buffer)
          (message (format "Request kill buffer %s" kill-buffer-id))
          (throw 'found-match-buffer t))))))

(dbus-register-signal
 :session "com.lazycat.eaf" "/com/lazycat/eaf"
 "com.lazycat.eaf" "focus_emacs_buffer"
+7 −0
Original line number Diff line number Diff line
@@ -131,6 +131,9 @@ class EAF(dbus.service.Object):
        # Send message to emacs.
        app_buffer.input_message.connect(self.input_message)

        # Handle buffer close request.
        app_buffer.close_buffer.connect(self.request_kill_buffer)

        # Add create new window callback if module is browser
        if module_path == "app.browser.buffer":
            app_buffer.buffer_widget.create_new_browser_window_callback = self.create_new_browser_window
@@ -255,6 +258,10 @@ class EAF(dbus.service.Object):
    def create_new_browser_buffer(self, buffer_id):
        pass

    @dbus.service.signal("com.lazycat.eaf")
    def request_kill_buffer(self, buffer_id):
        pass

    def save_buffer_session(self, buf):
        # Create config file it not exist.
        if not os.path.exists(self.session_file_path):