diff --git a/src/browser/main/mod.rs b/src/browser/main/mod.rs index eafd11c7..e83b4594 100644 --- a/src/browser/main/mod.rs +++ b/src/browser/main/mod.rs @@ -29,8 +29,8 @@ impl Main { } // Actions - pub fn tab_append(&self) { - self.tab.append(true); + pub fn tab_append(&self, tab_page_navigation_request_text: Option) { + self.tab.append(tab_page_navigation_request_text, true); } pub fn tab_page_reload(&self) { diff --git a/src/browser/main/tab/mod.rs b/src/browser/main/tab/mod.rs index 7af216a3..acb43d6c 100644 --- a/src/browser/main/tab/mod.rs +++ b/src/browser/main/tab/mod.rs @@ -43,13 +43,17 @@ impl Tab { }); } - pub fn append(&self, is_current_page: bool) -> u32 { + pub fn append( + &self, + page_navigation_request_text: Option, + is_current_page: bool, + ) -> u32 { // Generate unique ID for new page components let id = uuid_string_random(); // Init new tab components let label = Arc::new(Label::new(id.clone(), false)); - let page = Arc::new(Page::new(id.clone())); + let page = Arc::new(Page::new(id.clone(), page_navigation_request_text)); // Register dynamically created tab components in the HashMap index self.labels.borrow_mut().insert(id.clone(), label.clone()); diff --git a/src/browser/main/tab/page/mod.rs b/src/browser/main/tab/page/mod.rs index 47ee42d6..1d91d7b7 100644 --- a/src/browser/main/tab/page/mod.rs +++ b/src/browser/main/tab/page/mod.rs @@ -32,10 +32,10 @@ pub struct Page { impl Page { // Construct - pub fn new(name: GString) -> Page { + pub fn new(name: GString, navigation_request_text: Option) -> Page { // Init components let content = Arc::new(Content::new()); - let navigation = Arc::new(Navigation::new()); + let navigation = Arc::new(Navigation::new(navigation_request_text)); // Init widget let widget = Box::builder() diff --git a/src/browser/main/tab/page/navigation/mod.rs b/src/browser/main/tab/page/navigation/mod.rs index 92af32af..fa42a629 100644 --- a/src/browser/main/tab/page/navigation/mod.rs +++ b/src/browser/main/tab/page/navigation/mod.rs @@ -24,12 +24,12 @@ pub struct Navigation { } impl Navigation { - pub fn new() -> Self { + pub fn new(request_text: Option) -> Self { // Init components let base = Base::new(); let history = History::new(); let reload = Reload::new(); - let request = Request::new(); + let request = Request::new(request_text); let bookmark = Bookmark::new(); // Init widget diff --git a/src/browser/main/tab/page/navigation/request/mod.rs b/src/browser/main/tab/page/navigation/request/mod.rs index b39016a8..aa3d23c8 100644 --- a/src/browser/main/tab/page/navigation/request/mod.rs +++ b/src/browser/main/tab/page/navigation/request/mod.rs @@ -10,13 +10,17 @@ pub struct Request { impl Request { // Construct - pub fn new() -> Self { + pub fn new(text: Option) -> Self { // GTK let widget = Entry::builder() .placeholder_text("URL or search term...") .hexpand(true) .progress_fraction(0.0) .progress_pulse_step(0.1) + .text(match text { + Some(text) => text, + None => GString::new(), + }) .build(); // Connect events diff --git a/src/browser/mod.rs b/src/browser/mod.rs index 3de0e93a..2a69e7d5 100644 --- a/src/browser/mod.rs +++ b/src/browser/mod.rs @@ -68,7 +68,7 @@ impl Browser { .activate({ let main = main.clone(); move |_, _, _| { - main.tab_append(); + main.tab_append(None); } }) .build(),