瀏覽代碼

Ladybird: Don't push to history when loading through history navigation

Previously we were always pushing to history on the on_load_start
callback. Now we only do that if we are NOT navigating through the
history navigation (loading pages by going back/forward). This is what
the SerenityOS browser does:^)
Baitinq 2 年之前
父節點
當前提交
eaff4a1d65
共有 2 個文件被更改,包括 11 次插入1 次删除
  1. 9 1
      Ladybird/Tab.cpp
  2. 2 0
      Ladybird/Tab.h

+ 9 - 1
Ladybird/Tab.cpp

@@ -83,7 +83,13 @@ Tab::Tab(BrowserWindow* window)
 
 
     QObject::connect(m_view, &WebContentView::load_started, [this](const URL& url) {
     QObject::connect(m_view, &WebContentView::load_started, [this](const URL& url) {
         m_location_edit->setText(url.to_string().characters());
         m_location_edit->setText(url.to_string().characters());
-        m_history.push(url, m_title.toUtf8().data());
+
+        // Don't add to history if back or forward is pressed
+        if (!m_is_history_navigation) {
+            m_history.push(url, m_title.toUtf8().data());
+        }
+        m_is_history_navigation = false;
+
         m_back_action->setEnabled(m_history.can_go_back());
         m_back_action->setEnabled(m_history.can_go_back());
         m_forward_action->setEnabled(m_history.can_go_forward());
         m_forward_action->setEnabled(m_history.can_go_forward());
     });
     });
@@ -129,6 +135,7 @@ void Tab::back()
     if (!m_history.can_go_back())
     if (!m_history.can_go_back())
         return;
         return;
 
 
+    m_is_history_navigation = true;
     m_history.go_back();
     m_history.go_back();
     view().load(m_history.current().url.to_string());
     view().load(m_history.current().url.to_string());
 }
 }
@@ -138,6 +145,7 @@ void Tab::forward()
     if (!m_history.can_go_forward())
     if (!m_history.can_go_forward())
         return;
         return;
 
 
+    m_is_history_navigation = true;
     m_history.go_forward();
     m_history.go_forward();
     view().load(m_history.current().url.to_string());
     view().load(m_history.current().url.to_string());
 }
 }

+ 2 - 0
Ladybird/Tab.h

@@ -64,4 +64,6 @@ private:
     OwnPtr<QAction> m_reload_action;
     OwnPtr<QAction> m_reload_action;
 
 
     int tab_index();
     int tab_index();
+
+    bool m_is_history_navigation { false };
 };
 };