# # patch "view.ml" # from [6bf0a5e41c1cc55c466e458fba3e12f14885c092] # to [64f45cef1cc347cb46b042b27835439fa0be8842] # ======================================================================== --- view.ml 6bf0a5e41c1cc55c466e458fba3e12f14885c092 +++ view.ml 64f45cef1cc347cb46b042b27835439fa0be8842 @@ -320,7 +320,7 @@ let make ~packing = (* The button below the toolbar *) - let button = GButton.button ~label:"New _view" ~use_mnemonic:true ~packing () in + let button = GButton.button ~label:"_New view" ~use_mnemonic:true ~packing () in (* The model containing branch names *) let cl = new GTree.column_list in let branch_column = cl#add Gobject.Data.string in @@ -346,9 +346,23 @@ (* The treeview of branches *) let view = let packing = Ui.category "Branches" (packing ~expand:true) in + begin + let al = GBin.alignment ~xalign:1. ~xscale:0.333 ~packing () in + let hb = GPack.hbox ~homogeneous:true ~packing:al#add () in + let add_button label v = + let b = + GButton.button ~packing:(hb#pack ~from:`END) ~label () in + ignore (b#connect#clicked (fun () -> + model#foreach (fun path row -> + model#set ~row ~column:in_view_column v ; + false))) in + add_button "select none" false ; + add_button "select all" true + end ; GTree.view ~model ~height:200 ~packing:(Ui.wrap_in_scroll_window (packing ~expand:true)) () in + view#selection#set_mode `NONE ; begin let vc = GTree.view_column ~title:"view" () in let r = GTree.cell_renderer_toggle [] in @@ -448,6 +462,20 @@ loop 0 None + let scroll s = + (* make sure that a selected row is visible *) + match + let v_path = ref None in + s.store#foreach (fun path row -> + let v = s.store#get ~row ~column:s.in_view_column in + if v then v_path := Some path ; + v) ; + !v_path + with + | None -> () + | Some path -> + s.view#scroll_to_cell path (s.view#get_column 0) + let get_query_domain s = let all = ref true in let acc = ref [] in @@ -516,6 +544,7 @@ s.toggle_signal <- Some id ; ignore (s.button#connect#clicked (fun () -> expand_rows s ; + scroll s ; s.w#set_default_response `VIEW ; s.w#present ())) ; ignore (s.w#connect#after#close s.w#misc#hide) ;