opt gtk sudo ui, fix edit button show (#9399)
Signed-off-by: 21pages <sunboeasy@gmail.com>
This commit is contained in:
		
							parent
							
								
									cfd801c5d6
								
							
						
					
					
						commit
						3d5262c36f
					
				| @ -30,7 +30,7 @@ use std::{ | |||||||
| const EXIT_CODE: i32 = -1; | const EXIT_CODE: i32 = -1; | ||||||
| 
 | 
 | ||||||
| enum Message { | enum Message { | ||||||
|     PasswordPrompt(String), |     PasswordPrompt((String, bool)), | ||||||
|     Password((String, String)), |     Password((String, String)), | ||||||
|     ErrorDialog(String), |     ErrorDialog(String), | ||||||
|     Cancel, |     Cancel, | ||||||
| @ -107,24 +107,20 @@ fn ui(args: Vec<String>) { | |||||||
| 
 | 
 | ||||||
|     let username = Arc::new(Mutex::new(crate::platform::get_active_username())); |     let username = Arc::new(Mutex::new(crate::platform::get_active_username())); | ||||||
|     let username_clone = username.clone(); |     let username_clone = username.clone(); | ||||||
|     let first_prompt = Arc::new(Mutex::new(true)); |  | ||||||
| 
 | 
 | ||||||
|     application.connect_activate(glib::clone!(@weak application =>move |_| { |     application.connect_activate(glib::clone!(@weak application =>move |_| { | ||||||
|         let rx_to_ui = rx_to_ui_clone.clone(); |         let rx_to_ui = rx_to_ui_clone.clone(); | ||||||
|         let tx_from_ui = tx_from_ui_clone.clone(); |         let tx_from_ui = tx_from_ui_clone.clone(); | ||||||
|         let last_password = Arc::new(Mutex::new(String::new())); |         let last_password = Arc::new(Mutex::new(String::new())); | ||||||
|         let username = username_clone.clone(); |         let username = username_clone.clone(); | ||||||
|         let first_prompt = first_prompt.clone(); |  | ||||||
| 
 | 
 | ||||||
|         glib::timeout_add_local(std::time::Duration::from_millis(50), move || { |         glib::timeout_add_local(std::time::Duration::from_millis(50), move || { | ||||||
|             if let Ok(msg) = rx_to_ui.lock().unwrap().try_recv() { |             if let Ok(msg) = rx_to_ui.lock().unwrap().try_recv() { | ||||||
|                 match msg { |                 match msg { | ||||||
|                     Message::PasswordPrompt(err_msg) => { |                     Message::PasswordPrompt((err_msg, show_edit)) => { | ||||||
|                         let last_pwd = last_password.lock().unwrap().clone(); |                         let last_pwd = last_password.lock().unwrap().clone(); | ||||||
|                         let username = username.lock().unwrap().clone(); |                         let username = username.lock().unwrap().clone(); | ||||||
|                         let first = first_prompt.lock().unwrap().clone(); |                         if let Some((username, password)) = password_prompt(&username, &last_pwd, &err_msg, show_edit) { | ||||||
|                         *first_prompt.lock().unwrap() = false; |  | ||||||
|                         if let Some((username, password)) = password_prompt(&username, &last_pwd, &err_msg, first) { |  | ||||||
|                                 *last_password.lock().unwrap() = password.clone(); |                                 *last_password.lock().unwrap() = password.clone(); | ||||||
|                                 if let Err(e) = tx_from_ui |                                 if let Err(e) = tx_from_ui | ||||||
|                                     .lock() |                                     .lock() | ||||||
| @ -157,7 +153,7 @@ fn ui(args: Vec<String>) { | |||||||
|         let acitve_user = crate::platform::get_active_username(); |         let acitve_user = crate::platform::get_active_username(); | ||||||
|         let mut initial_password = None; |         let mut initial_password = None; | ||||||
|         if acitve_user != "root" { |         if acitve_user != "root" { | ||||||
|             if let Err(e) = tx_to_ui_clone.send(Message::PasswordPrompt("".to_string())) { |             if let Err(e) = tx_to_ui_clone.send(Message::PasswordPrompt(("".to_string(), true))) { | ||||||
|                 log::error!("Channel error: {e:?}"); |                 log::error!("Channel error: {e:?}"); | ||||||
|                 std::process::exit(EXIT_CODE); |                 std::process::exit(EXIT_CODE); | ||||||
|             } |             } | ||||||
| @ -385,7 +381,7 @@ fn ui_parent( | |||||||
|                             let err_msg = if first { "" } else { "Sorry, try again." }; |                             let err_msg = if first { "" } else { "Sorry, try again." }; | ||||||
|                             first = false; |                             first = false; | ||||||
|                             if let Err(e) = |                             if let Err(e) = | ||||||
|                                 tx_to_ui.send(Message::PasswordPrompt(err_msg.to_string())) |                                 tx_to_ui.send(Message::PasswordPrompt((err_msg.to_string(), false))) | ||||||
|                             { |                             { | ||||||
|                                 log::error!("Channel error: {e:?}"); |                                 log::error!("Channel error: {e:?}"); | ||||||
|                                 kill_child(child); |                                 kill_child(child); | ||||||
| @ -627,6 +623,7 @@ fn password_prompt( | |||||||
|     user_box.add(&user_entry); |     user_box.add(&user_entry); | ||||||
|     user_box.set_halign(gtk::Align::Center); |     user_box.set_halign(gtk::Align::Center); | ||||||
|     user_box.set_valign(gtk::Align::Center); |     user_box.set_valign(gtk::Align::Center); | ||||||
|  |     user_box.set_vexpand(true); | ||||||
|     content_area.add(&user_box); |     content_area.add(&user_box); | ||||||
| 
 | 
 | ||||||
|     edit_button.connect_clicked( |     edit_button.connect_clicked( | ||||||
| @ -690,21 +687,21 @@ fn password_prompt( | |||||||
| 
 | 
 | ||||||
|     let cancel_button = gtk::Button::builder() |     let cancel_button = gtk::Button::builder() | ||||||
|         .label(translate("Cancel".to_string())) |         .label(translate("Cancel".to_string())) | ||||||
|         .expand(true) |         .hexpand(true) | ||||||
|         .build(); |         .build(); | ||||||
|     cancel_button.connect_clicked(glib::clone!(@weak dialog => move |_| { |     cancel_button.connect_clicked(glib::clone!(@weak dialog => move |_| { | ||||||
|         dialog.response(gtk::ResponseType::Cancel); |         dialog.response(gtk::ResponseType::Cancel); | ||||||
|     })); |     })); | ||||||
|     let authenticate_button = gtk::Button::builder() |     let authenticate_button = gtk::Button::builder() | ||||||
|         .label(translate("Authenticate".to_string())) |         .label(translate("Authenticate".to_string())) | ||||||
|         .expand(true) |         .hexpand(true) | ||||||
|         .build(); |         .build(); | ||||||
|     authenticate_button.connect_clicked(glib::clone!(@weak dialog => move |_| { |     authenticate_button.connect_clicked(glib::clone!(@weak dialog => move |_| { | ||||||
|         dialog.response(gtk::ResponseType::Ok); |         dialog.response(gtk::ResponseType::Ok); | ||||||
|     })); |     })); | ||||||
|     let button_box = gtk::Box::builder() |     let button_box = gtk::Box::builder() | ||||||
|         .orientation(gtk::Orientation::Horizontal) |         .orientation(gtk::Orientation::Horizontal) | ||||||
|         .expand(true) |         .hexpand(true) | ||||||
|         .homogeneous(true) |         .homogeneous(true) | ||||||
|         .spacing(10) |         .spacing(10) | ||||||
|         .margin_top(10) |         .margin_top(10) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user