# # patch "view.ml" # from [6302ab124e672800f67cf9fc3288bc83b16c3345] # to [a10538b08a7f9e32f9e492a39cf9b5fc65c2095b] # ======================================================================== --- view.ml 6302ab124e672800f67cf9fc3288bc83b16c3345 +++ view.ml a10538b08a7f9e32f9e492a39cf9b5fc65c2095b @@ -446,9 +446,11 @@ GdkKeysyms._BackSpace, `LAST ; ] let nav_dir lr_layout k = - List.assoc - (GdkEvent.Key.keyval k) - (if lr_layout then left_right_dir else top_down_dir) + try + List.assoc + (GdkEvent.Key.keyval k) + (if lr_layout then left_right_dir else top_down_dir) + with Not_found -> `NONE let navigate_is_sibling k id = List.exists (fun (i, _) -> i = id) k.keyboard_nav_siblings @@ -477,6 +479,7 @@ | None -> None | Some id -> match nav_dir ctrl#get_prefs.Viz_style.lr_layout key with + | `NONE -> None | `LAST -> may (fun (id, _) -> @@ -501,7 +504,8 @@ k.keyboard_nav_siblings <- cnodes ; navigate_choose k id d - let select k id = + let select k id previous_id = + k.previous_selected_node <- previous_id ; if not (navigate_is_sibling k id) then k.keyboard_nav_siblings <- [] @@ -673,8 +677,9 @@ c.text_items let display_selection_marker c ctrl sel = - c.selected_node <- Some sel ; let (id, node_data) = sel in + KeyNav.select c.keynav id c.selected_node ; + c.selected_node <- Some sel ; let x1 = node_data.n_x -. node_data.n_w /. 2. -. 5. in let y1 = node_data.n_y -. node_data.n_h /. 2. -. 5. in let x2 = node_data.n_x +. node_data.n_w /. 2. +. 5. in @@ -683,7 +688,6 @@ marker#set [ `X1 x1; `X2 x2; `Y1 y1; `Y2 y2 ] ; marker#lower_to_bottom () ; marker#show () ; - KeyNav.select c.keynav id ; ctrl#display_certs id let clear c ctrl =