mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-04-02 09:35:28 +00:00
store entire closed tab item to restore all features
This commit is contained in:
parent
27ee3e8fe9
commit
1a0b31e695
6 changed files with 36 additions and 26 deletions
|
|
@ -1,7 +1,7 @@
|
|||
mod action;
|
||||
mod database;
|
||||
mod header;
|
||||
mod tab;
|
||||
pub mod tab;
|
||||
mod widget;
|
||||
|
||||
use action::{Action, Position};
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use super::{BrowserAction, Profile, WindowAction};
|
||||
use gtk::{
|
||||
gio::{self},
|
||||
prelude::{ActionExt, ToVariant},
|
||||
prelude::{ActionExt, EditableExt, ToVariant},
|
||||
Align, MenuButton,
|
||||
};
|
||||
use std::rc::Rc;
|
||||
|
|
@ -206,13 +206,14 @@ impl Menu {
|
|||
|
||||
// History
|
||||
main_history_closed.remove_all();
|
||||
for request in profile.history.memory.closed.recent(RECENTLY_CLOSED) {
|
||||
let menu_item = gio::MenuItem::new(Some(&label(&request, LABEL_MAX_LENGTH)), None);
|
||||
for item in profile.history.memory.closed.recent(RECENTLY_CLOSED) {
|
||||
let item_request = item.page.navigation.request.widget.entry.text(); // @TODO restore entire `Item`
|
||||
let menu_item = gio::MenuItem::new(Some(&label(&item_request, LABEL_MAX_LENGTH)), None);
|
||||
menu_item.set_action_and_target_value(Some(&format!(
|
||||
"{}.{}",
|
||||
window_action.id,
|
||||
window_action.open.simple_action.name()
|
||||
)), Some(&request.to_variant()));
|
||||
)), Some(&item_request.to_variant()));
|
||||
|
||||
main_history_closed.append_item(&menu_item);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ mod menu;
|
|||
mod widget;
|
||||
|
||||
use error::Error;
|
||||
use item::Item;
|
||||
pub use item::Item;
|
||||
use menu::Menu;
|
||||
use widget::Widget;
|
||||
|
||||
|
|
@ -16,7 +16,7 @@ use crate::app::browser::{
|
|||
use crate::Profile;
|
||||
use gtk::{
|
||||
glib::{DateTime, GString, Propagation},
|
||||
prelude::{EditableExt, WidgetExt},
|
||||
prelude::WidgetExt,
|
||||
};
|
||||
use sqlite::Transaction;
|
||||
use std::{cell::RefCell, collections::HashMap, rc::Rc};
|
||||
|
|
@ -104,10 +104,11 @@ impl Tab {
|
|||
if let Some(item) = index.borrow_mut().remove(&id) {
|
||||
// Add history record into profile memory pool
|
||||
// * this action allows to recover recently closed tab (e.g. from the main menu)
|
||||
profile.history.memory.closed.add(
|
||||
item.page.navigation.request.widget.entry.text(),
|
||||
DateTime::now_local().unwrap().to_unix(),
|
||||
);
|
||||
profile
|
||||
.history
|
||||
.memory
|
||||
.closed
|
||||
.add(item, DateTime::now_local().unwrap().to_unix());
|
||||
}
|
||||
}
|
||||
None => panic!("Undefined tab index!"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue