1
0
Fork 0
mirror of synced 2024-04-25 16:22:07 +12:00

Add more GTK 4 compatibility fixes (#505)

* Add more compatibility fixes

* Simplify
This commit is contained in:
Rafał Mikrut 2021-12-18 16:48:30 +01:00 committed by GitHub
parent 619e64466c
commit c97bacad99
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 197 additions and 207 deletions

View file

@ -75,13 +75,23 @@ fn move_things(tree_view: &gtk::TreeView, column_file_name: i32, column_path: i3
let tree_view = tree_view.clone();
chooser.connect_response(move |file_chooser, response_type| {
if response_type == gtk::ResponseType::Ok {
let g_files = file_chooser.files();
let mut folders: Vec<PathBuf> = Vec::new();
for file in g_files {
if let Some(path_buf) = file.path() {
folders.push(path_buf);
}
}
let folders: Vec<PathBuf>;
// GTK 3
folders = file_chooser.filenames();
// GTK 4
// folders = Vec::new();
// if let Some(g_files) = file_chooser.files() {
// for index in 0..g_files.n_items() {
// let file = &g_files.item(index);
// if let Some(file) = file {
// println!("{:?}", file);
// let ss = file.clone().downcast::<gtk4::gio::File>().unwrap();
// if let Some(path_buf) = ss.path() {
// folders.push(path_buf);
// }
// }
// }
// }
if folders.len() != 1 {
add_text_to_text_view(&text_view_errors, format!("{} {:?}", &fl!("move_files_choose_more_than_1_path"), folders).as_str());

View file

@ -91,13 +91,24 @@ fn add_chosen_directories(window_main: &Window, tree_view: &TreeView, excluded_i
let tree_view = tree_view.clone();
file_chooser.connect_response(move |file_chooser, response_type| {
if response_type == gtk::ResponseType::Ok {
let g_files = file_chooser.files();
let mut folders: Vec<PathBuf> = Vec::new();
for file in g_files {
if let Some(path_buf) = file.path() {
folders.push(path_buf);
}
}
let folders: Vec<PathBuf>;
// GTK 3
folders = file_chooser.filenames();
// GTK 4
// folders = Vec::new();
// if let Some(g_files) = file_chooser.files() {
// for index in 0..g_files.n_items() {
// let file = &g_files.item(index);
// if let Some(file) = file {
// println!("{:?}", file);
// let ss = file.clone().downcast::<gtk4::gio::File>().unwrap();
// if let Some(path_buf) = ss.path() {
// folders.push(path_buf);
// }
// }
// }
// }
let list_store = get_list_store(&tree_view);
for file_entry in &folders {

View file

@ -1,5 +1,5 @@
use crate::fl;
use crate::help_functions::get_custom_label_from_label_with_image;
use crate::help_functions::get_custom_label_from_button_with_image;
use gtk::prelude::*;
use gtk::{Bin, Widget};
@ -67,21 +67,21 @@ impl GuiBottomButtons {
}
}
pub fn update_language(&self) {
get_custom_label_from_label_with_image(&self.buttons_search.clone().upcast::<Bin>()).set_text(&fl!("bottom_search_button"));
get_custom_label_from_label_with_image(&self.buttons_select.clone().upcast::<Bin>()).set_text(&fl!("bottom_select_button"));
get_custom_label_from_label_with_image(&self.buttons_delete.clone().upcast::<Bin>()).set_text(&fl!("bottom_delete_button"));
get_custom_label_from_label_with_image(&self.buttons_save.clone().upcast::<Bin>()).set_text(&fl!("bottom_save_button"));
get_custom_label_from_label_with_image(&self.buttons_symlink.clone().upcast::<Bin>()).set_text(&fl!("bottom_symlink_button"));
get_custom_label_from_label_with_image(&self.buttons_hardlink.clone().upcast::<Bin>()).set_text(&fl!("bottom_hardlink_button"));
get_custom_label_from_label_with_image(&self.buttons_move.clone().upcast::<Bin>()).set_text(&fl!("bottom_move_button"));
get_custom_label_from_button_with_image(&self.buttons_search.clone().upcast::<Bin>()).set_text(&fl!("bottom_search_button"));
get_custom_label_from_button_with_image(&self.buttons_select.clone().upcast::<Bin>()).set_text(&fl!("bottom_select_button"));
get_custom_label_from_button_with_image(&self.buttons_delete.clone().upcast::<Bin>()).set_text(&fl!("bottom_delete_button"));
get_custom_label_from_button_with_image(&self.buttons_save.clone().upcast::<Bin>()).set_text(&fl!("bottom_save_button"));
get_custom_label_from_button_with_image(&self.buttons_symlink.clone().upcast::<Bin>()).set_text(&fl!("bottom_symlink_button"));
get_custom_label_from_button_with_image(&self.buttons_hardlink.clone().upcast::<Bin>()).set_text(&fl!("bottom_hardlink_button"));
get_custom_label_from_button_with_image(&self.buttons_move.clone().upcast::<Bin>()).set_text(&fl!("bottom_move_button"));
// get_custom_label_from_label_with_image(&self.buttons_search.clone()).set_text(&fl!("bottom_search_button"));
// get_custom_label_from_label_with_image(&self.buttons_select.clone()).set_text(&fl!("bottom_select_button"));
// get_custom_label_from_label_with_image(&self.buttons_delete.clone()).set_text(&fl!("bottom_delete_button"));
// get_custom_label_from_label_with_image(&self.buttons_save.clone()).set_text(&fl!("bottom_save_button"));
// get_custom_label_from_label_with_image(&self.buttons_symlink.clone()).set_text(&fl!("bottom_symlink_button"));
// get_custom_label_from_label_with_image(&self.buttons_hardlink.clone()).set_text(&fl!("bottom_hardlink_button"));
// get_custom_label_from_label_with_image(&self.buttons_move.clone()).set_text(&fl!("bottom_move_button"));
// get_custom_label_from_button_with_image(&self.buttons_search.clone()).set_text(&fl!("bottom_search_button"));
// get_custom_label_from_button_with_image(&self.buttons_select.clone()).set_text(&fl!("bottom_select_button"));
// get_custom_label_from_button_with_image(&self.buttons_delete.clone()).set_text(&fl!("bottom_delete_button"));
// get_custom_label_from_button_with_image(&self.buttons_save.clone()).set_text(&fl!("bottom_save_button"));
// get_custom_label_from_button_with_image(&self.buttons_symlink.clone()).set_text(&fl!("bottom_symlink_button"));
// get_custom_label_from_button_with_image(&self.buttons_hardlink.clone()).set_text(&fl!("bottom_hardlink_button"));
// get_custom_label_from_button_with_image(&self.buttons_move.clone()).set_text(&fl!("bottom_move_button"));
self.buttons_search.set_tooltip_text(Some(&fl!("bottom_search_button_tooltip")));
self.buttons_select.set_tooltip_text(Some(&fl!("bottom_select_button_tooltip")));

View file

@ -1,5 +1,5 @@
use crate::fl;
use crate::help_functions::get_custom_label_from_label_with_image;
use crate::help_functions::get_custom_label_from_button_with_image;
use gtk::prelude::*;
use gtk::{Bin, Builder, EventControllerKey, Window};
@ -60,7 +60,7 @@ impl GuiProgressDialog {
}
}
pub fn update_language(&self) {
get_custom_label_from_label_with_image(&self.button_stop_in_dialog.clone().upcast::<Bin>()).set_text(&fl!("progress_stop_button"));
get_custom_label_from_button_with_image(&self.button_stop_in_dialog.clone().upcast::<Bin>()).set_text(&fl!("progress_stop_button"));
self.label_progress_current_stage.set_label(&fl!("progress_current_stage"));
self.label_progress_all_stages.set_label(&fl!("progress_all_stages"));

View file

@ -1,5 +1,5 @@
use crate::fl;
use crate::help_functions::get_custom_label_from_label_with_image;
use crate::help_functions::get_custom_label_from_button_with_image;
use crate::notebook_enums::NotebookUpperEnum;
use gtk::prelude::*;
use gtk::{Bin, EventControllerKey, TreeView};
@ -103,12 +103,20 @@ impl GuiUpperNotebook {
self.check_button_recursive.set_label(&fl!("upper_recursive_button"));
self.check_button_recursive.set_tooltip_text(Some(&fl!("upper_recursive_button_tooltip")));
get_custom_label_from_label_with_image(&self.buttons_manual_add_included_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_manual_add_included_button"));
get_custom_label_from_label_with_image(&self.buttons_add_included_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_add_included_button"));
get_custom_label_from_label_with_image(&self.buttons_remove_included_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_remove_included_button"));
get_custom_label_from_label_with_image(&self.buttons_manual_add_excluded_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_manual_add_excluded_button"));
get_custom_label_from_label_with_image(&self.buttons_add_excluded_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_add_excluded_button"));
get_custom_label_from_label_with_image(&self.buttons_remove_excluded_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_remove_excluded_button"));
get_custom_label_from_button_with_image(&self.buttons_manual_add_included_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_manual_add_included_button"));
get_custom_label_from_button_with_image(&self.buttons_add_included_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_add_included_button"));
get_custom_label_from_button_with_image(&self.buttons_remove_included_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_remove_included_button"));
get_custom_label_from_button_with_image(&self.buttons_manual_add_excluded_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_manual_add_excluded_button"));
get_custom_label_from_button_with_image(&self.buttons_add_excluded_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_add_excluded_button"));
get_custom_label_from_button_with_image(&self.buttons_remove_excluded_directory.clone().upcast::<Bin>()).set_text(&fl!("upper_remove_excluded_button"));
// GTK 4
// get_custom_label_from_label_with_image(&self.buttons_manual_add_included_directory.clone()).set_text(&fl!("upper_manual_add_included_button"));
// get_custom_label_from_label_with_image(&self.buttons_add_included_directory.clone()).set_text(&fl!("upper_add_included_button"));
// get_custom_label_from_label_with_image(&self.buttons_remove_included_directory.clone()).set_text(&fl!("upper_remove_included_button"));
// get_custom_label_from_label_with_image(&self.buttons_manual_add_excluded_directory.clone()).set_text(&fl!("upper_manual_add_excluded_button"));
// get_custom_label_from_label_with_image(&self.buttons_add_excluded_directory.clone()).set_text(&fl!("upper_add_excluded_button"));
// get_custom_label_from_label_with_image(&self.buttons_remove_excluded_directory.clone()).set_text(&fl!("upper_remove_excluded_button"));
self.buttons_manual_add_included_directory.set_tooltip_text(Some(&fl!("upper_manual_add_included_button_tooltip")));
self.buttons_add_included_directory.set_tooltip_text(Some(&fl!("upper_add_included_button_tooltip")));

View file

@ -542,7 +542,7 @@ pub fn clean_invalid_headers(model: &gtk::ListStore, column_color: i32) {
}
}
pub fn get_custom_label_from_label_with_image(button: &gtk::Bin) -> gtk::Label {
pub fn get_custom_label_from_button_with_image(button: &gtk::Bin) -> gtk::Label {
let internal_box = button.child().unwrap().downcast::<gtk::Box>().unwrap();
for child in internal_box.children() {
if let Ok(t) = child.downcast::<gtk::Label>() {
@ -551,15 +551,31 @@ pub fn get_custom_label_from_label_with_image(button: &gtk::Bin) -> gtk::Label {
}
panic!("Button doesn't have proper custom label child");
}
// pub fn get_custom_label_from_label_with_image<P: IsA<gtk::Widget>>(button: &P) -> gtk::Label {
// let internal_box = button.widget().unwrap().downcast::<gtk::Box>().unwrap();
// for child in internal_box.children() {
// if let Ok(t) = child.downcast::<gtk::Label>() {
// GTK 4
// pub fn get_custom_label_from_button_with_image<P: IsA<gtk4::Widget>>(button: &P) -> gtk4::Label {
// let internal_box = button.first_child().unwrap().downcast::<gtk4::Box>().unwrap();
// for child in get_all_children(&internal_box) {
// if let Ok(t) = child.downcast::<gtk4::Label>() {
// return t;
// }
// }
// panic!("Button doesn't have proper custom label child");
// }
// TODO needs GTK 4.6 to be able to set as child of menu button a box
// pub fn get_custom_label_from_menubutton_with_image<P: IsA<gtk4::Widget>>(button: &P) -> gtk4::Label {
// println!("{:?}", get_all_children(button));
// for c1 in get_all_children(button) {
// if let Ok(internal_box) = c1.downcast::<gtk4::Box>() {
// for child in get_all_children(&internal_box) {
// if let Ok(t) = child.downcast::<gtk4::Label>() {
// return t;
// }
// }
// }
// }
// panic!("Menu Button doesn't have proper custom label child");
// }
// GTK 4
// pub fn get_all_children<P: IsA<gtk::Widget>>(wid: &P) -> Vec<gtk::Widget> {

View file

@ -466,6 +466,20 @@ pub fn initialize_gui(gui_data: &mut GuiData) {
}
fn connect_event_mouse(gui_data: &GuiData) {
for tree_view in [
gui_data.main_notebook.tree_view_duplicate_finder.clone(),
gui_data.main_notebook.tree_view_empty_folder_finder.clone(),
gui_data.main_notebook.tree_view_empty_files_finder.clone(),
gui_data.main_notebook.tree_view_temporary_files_finder.clone(),
gui_data.main_notebook.tree_view_big_files_finder.clone(),
gui_data.main_notebook.tree_view_similar_images_finder.clone(),
gui_data.main_notebook.tree_view_similar_videos_finder.clone(),
gui_data.main_notebook.tree_view_same_music_finder.clone(),
gui_data.main_notebook.tree_view_invalid_symlinks.clone(),
gui_data.main_notebook.tree_view_broken_files.clone(),
] {
tree_view.connect_button_press_event(opening_double_click_function);
}
// Duplicate
{
let text_view_errors = gui_data.text_view_errors.clone();
@ -474,7 +488,6 @@ fn connect_event_mouse(gui_data: &GuiData) {
let preview_path = gui_data.preview_path.clone();
let tree_view = gui_data.main_notebook.tree_view_duplicate_finder.clone();
tree_view.connect_button_press_event(opening_double_click_function);
tree_view.connect_button_release_event(move |tree_view, _event| {
let nb_object = &NOTEBOOKS_INFOS[NotebookMainEnum::Duplicate as usize];
let preview_path = preview_path.clone();
@ -483,30 +496,6 @@ fn connect_event_mouse(gui_data: &GuiData) {
gtk::Inhibit(false)
});
}
// Empty Folders
{
let tree_view = gui_data.main_notebook.tree_view_empty_folder_finder.clone();
tree_view.connect_button_press_event(opening_double_click_function);
}
// Empty Files
{
let tree_view = gui_data.main_notebook.tree_view_empty_files_finder.clone();
tree_view.connect_button_press_event(opening_double_click_function);
}
// Temporary Files
{
let tree_view = gui_data.main_notebook.tree_view_temporary_files_finder.clone();
tree_view.connect_button_press_event(opening_double_click_function);
}
// Big Files
{
let tree_view = gui_data.main_notebook.tree_view_big_files_finder.clone();
tree_view.connect_button_press_event(opening_double_click_function);
}
// Similar Images
{
let text_view_errors = gui_data.text_view_errors.clone();
@ -523,32 +512,79 @@ fn connect_event_mouse(gui_data: &GuiData) {
gtk::Inhibit(false)
});
}
// Similar Videos
{
let tree_view = gui_data.main_notebook.tree_view_similar_videos_finder.clone();
tree_view.connect_button_press_event(opening_double_click_function);
}
// Same Music
{
let tree_view = gui_data.main_notebook.tree_view_same_music_finder.clone();
tree_view.connect_button_press_event(opening_double_click_function);
}
// Invalid Symlinks
{
let tree_view = gui_data.main_notebook.tree_view_invalid_symlinks.clone();
tree_view.connect_button_press_event(opening_double_click_function);
}
// Broken Files
{
let tree_view = gui_data.main_notebook.tree_view_broken_files.clone();
tree_view.connect_button_press_event(opening_double_click_function);
}
// GTK 4
// for gc in [
// gui_data.main_notebook.gc_tree_view_duplicate_finder.clone(),
// gui_data.main_notebook.gc_tree_view_empty_folder_finder.clone(),
// gui_data.main_notebook.gc_tree_view_empty_files_finder.clone(),
// gui_data.main_notebook.gc_tree_view_temporary_files_finder.clone(),
// gui_data.main_notebook.gc_tree_view_big_files_finder.clone(),
// gui_data.main_notebook.gc_tree_view_similar_images_finder.clone(),
// gui_data.main_notebook.gc_tree_view_similar_videos_finder.clone(),
// gui_data.main_notebook.gc_tree_view_same_music_finder.clone(),
// gui_data.main_notebook.gc_tree_view_invalid_symlinks.clone(),
// gui_data.main_notebook.gc_tree_view_broken_files.clone(),
// ] {
// gc.set_button(0);
// gc.connect_pressed(opening_double_click_function);
// }
//
// // Duplicate
// {
// let text_view_errors = gui_data.text_view_errors.clone();
// let check_button_settings_show_preview = gui_data.settings.check_button_settings_show_preview_duplicates.clone();
// let image_preview = gui_data.main_notebook.image_preview_duplicates.clone();
// let preview_path = gui_data.preview_path.clone();
//
// let gc = gui_data.main_notebook.gc_tree_view_duplicate_finder.clone();
//
// gc.connect_released(move |gc, _event, _, _| {
// let tree_view = gc.widget().unwrap().downcast::<gtk4::TreeView>().unwrap();
// let nb_object = &NOTEBOOKS_INFOS[NotebookMainEnum::Duplicate as usize];
// let preview_path = preview_path.clone();
// show_preview(&tree_view, &text_view_errors, &check_button_settings_show_preview, &image_preview, preview_path, nb_object.column_path, nb_object.column_name);
// });
// }
// // Similar Images
// {
// let text_view_errors = gui_data.text_view_errors.clone();
// let check_button_settings_show_preview = gui_data.settings.check_button_settings_show_preview_similar_images.clone();
// let preview_path = gui_data.preview_path.clone();
// let image_preview = gui_data.main_notebook.image_preview_similar_images.clone();
//
// let gc = gui_data.main_notebook.gc_tree_view_similar_images_finder.clone();
//
// gc.connect_released(move |gc, _event, _, _| {
// let tree_view = gc.widget().unwrap().downcast::<gtk4::TreeView>().unwrap();
// let nb_object = &NOTEBOOKS_INFOS[NotebookMainEnum::SimilarImages as usize];
// let preview_path = preview_path.clone();
// show_preview(&tree_view, &text_view_errors, &check_button_settings_show_preview, &image_preview, preview_path, nb_object.column_path, nb_object.column_name);
// });
// }
}
fn connect_event_buttons(gui_data: &GuiData) {
for evk in [
//gui_data.main_notebook.evk_tree_view_duplicate_finder.clone(), // Manual - needs to show/hide preview
gui_data.main_notebook.evk_tree_view_empty_folder_finder.clone(),
gui_data.main_notebook.evk_tree_view_empty_files_finder.clone(),
gui_data.main_notebook.evk_tree_view_temporary_files_finder.clone(),
gui_data.main_notebook.evk_tree_view_big_files_finder.clone(),
//gui_data.main_notebook.evk_tree_view_similar_images_finder.clone(),// Manual - needs to show/hide preview
gui_data.main_notebook.evk_tree_view_similar_videos_finder.clone(),
gui_data.main_notebook.evk_tree_view_same_music_finder.clone(),
gui_data.main_notebook.evk_tree_view_invalid_symlinks.clone(),
gui_data.main_notebook.evk_tree_view_broken_files.clone(),
] {
let gui_data_clone = gui_data.clone();
evk.connect_key_pressed(opening_enter_function_ported);
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
if key_code == KEY_DELETE {
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
}
});
}
// Duplicate
{
let gui_data_clone = gui_data.clone();
@ -577,58 +613,6 @@ fn connect_event_buttons(gui_data: &GuiData) {
);
});
}
// Empty Folder
{
let gui_data_clone = gui_data.clone();
let evk = gui_data.main_notebook.evk_tree_view_empty_folder_finder.clone();
evk.connect_key_pressed(opening_enter_function_ported);
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
if key_code == KEY_DELETE {
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
}
});
}
// Empty Files
{
let gui_data_clone = gui_data.clone();
let evk = gui_data.main_notebook.evk_tree_view_empty_files_finder.clone();
evk.connect_key_pressed(opening_enter_function_ported);
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
if key_code == KEY_DELETE {
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
}
});
}
// Temporary
{
let gui_data_clone = gui_data.clone();
let evk = gui_data.main_notebook.evk_tree_view_temporary_files_finder.clone();
evk.connect_key_pressed(opening_enter_function_ported);
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
if key_code == KEY_DELETE {
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
}
});
}
// Big Files
{
let gui_data_clone = gui_data.clone();
let evk = gui_data.main_notebook.evk_tree_view_big_files_finder.clone();
evk.connect_key_pressed(opening_enter_function_ported);
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
if key_code == KEY_DELETE {
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
}
});
}
// Similar Images
{
let check_button_settings_show_preview_similar_images = gui_data.settings.check_button_settings_show_preview_similar_images.clone();
@ -657,58 +641,6 @@ fn connect_event_buttons(gui_data: &GuiData) {
);
});
}
// Similar Videos
{
let gui_data_clone = gui_data.clone();
let evk = gui_data.main_notebook.evk_tree_view_similar_videos_finder.clone();
evk.connect_key_pressed(opening_enter_function_ported);
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
if key_code == KEY_DELETE {
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
}
});
}
// Same music
{
let gui_data_clone = gui_data.clone();
let evk = gui_data.main_notebook.evk_tree_view_same_music_finder.clone();
evk.connect_key_pressed(opening_enter_function_ported);
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
if key_code == KEY_DELETE {
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
}
});
}
// Invalid Symlinks
{
let gui_data_clone = gui_data.clone();
let evk = gui_data.main_notebook.evk_tree_view_invalid_symlinks.clone();
evk.connect_key_pressed(opening_enter_function_ported);
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
if key_code == KEY_DELETE {
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
}
});
}
// Broken Files
{
let gui_data_clone = gui_data.clone();
let evk = gui_data.main_notebook.evk_tree_view_broken_files.clone();
evk.connect_key_pressed(opening_enter_function_ported);
evk.connect_key_released(move |_event_controller_key, _key_value, key_code, _modifier_type| {
if key_code == KEY_DELETE {
glib::MainContext::default().spawn_local(delete_things(gui_data_clone.clone()));
}
});
}
}
fn show_preview(tree_view: &TreeView, text_view_errors: &TextView, check_button_settings_show_preview: &CheckButton, image_preview: &Image, preview_path: Rc<RefCell<String>>, column_path: i32, column_name: i32) {

View file

@ -16,8 +16,18 @@ pub fn opening_enter_function_ported(event_controller: &gtk::EventControllerKey,
false // True catches signal, and don't send it to function, e.g. up button is catched and don't move selection
}
// GTK 4
// pub fn opening_enter_function_ported_(event_controller: &gtk4::EventControllerKey, _key: gdk4::keys::Key, key_code: u32, _modifier_type: ModifierType) -> gtk4::Inhibit {
pub fn opening_double_click_function(tree_view: &gtk::TreeView, event: &gdk::EventButton) -> gtk::Inhibit {
let nt_object = get_notebook_object_from_tree_view(tree_view);
if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 {
common_open_function(tree_view, nt_object.column_name, nt_object.column_path, OpenMode::PathAndName);
} else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 {
common_open_function(tree_view, nt_object.column_name, nt_object.column_path, OpenMode::OnlyPath);
}
gtk::Inhibit(false)
}
// // GTK 4
// pub fn opening_enter_function_ported(event_controller: &gtk4::EventControllerKey, _key: gdk4::keys::Key, key_code: u32, _modifier_type: ModifierType) -> gtk4::Inhibit {
// let tree_view = event_controller.widget().unwrap().downcast::<gtk4::TreeView>().unwrap();
// #[cfg(debug_assertions)]
// {
@ -28,16 +38,19 @@ pub fn opening_enter_function_ported(event_controller: &gtk::EventControllerKey,
// handle_tree_keypress(&tree_view, key_code, nt_object.column_name, nt_object.column_path, nt_object.column_selection);
// Inhibit(false) // True catches signal, and don't send it to function, e.g. up button is catched and don't move selection
// }
pub fn opening_double_click_function(tree_view: &gtk::TreeView, event: &gdk::EventButton) -> gtk::Inhibit {
let nt_object = get_notebook_object_from_tree_view(tree_view);
if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 1 {
common_open_function(tree_view, nt_object.column_name, nt_object.column_path, OpenMode::PathAndName);
} else if event.event_type() == gdk::EventType::DoubleButtonPress && event.button() == 3 {
common_open_function(tree_view, nt_object.column_name, nt_object.column_path, OpenMode::OnlyPath);
}
gtk::Inhibit(false)
}
//
// pub fn opening_double_click_function(gesture_click: &GestureClick, number_of_clicks: i32, _b: f64, _c: f64) {
// let tree_view = gesture_click.widget().unwrap().downcast::<gtk4::TreeView>().unwrap();
//
// let nt_object = get_notebook_object_from_tree_view(&tree_view);
// if number_of_clicks == 2 {
// if gesture_click.current_button() == 1 {
// common_open_function(&tree_view, nt_object.column_name, nt_object.column_path, OpenMode::PathAndName);
// } else if gesture_click.current_button() == 3 {
// common_open_function(&tree_view, nt_object.column_name, nt_object.column_path, OpenMode::OnlyPath);
// }
// }
// }
enum OpenMode {
OnlyPath,