]> matita.cs.unibo.it Git - helm.git/commitdiff
copied text is unlocked :)
authorEnrico Tassi <enrico.tassi@inria.fr>
Wed, 13 Jul 2005 09:26:52 +0000 (09:26 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Wed, 13 Jul 2005 09:26:52 +0000 (09:26 +0000)
helm/matita/matita.txt
helm/matita/matitaGui.ml
helm/matita/matitaScript.ml
helm/matita/matitaScript.mli

index 5f213100acf2dbcd3debad1c3e81129e84b3f12b..9b49a1799652987a1efad06af63bb6cb3821c2e4 100644 (file)
@@ -57,8 +57,6 @@ TODO
     su bisognerebbe tornare su di un passo e non fare undo degli alias
     (Zack: nella history ci sono anche gli offset per sapere a che pezzo di
     script uno stato appartiene)
-  - Bug di cut&paste: se si fa cut&paste di testo lockato si ottiene testo
-    lockato!
   - keybinding globali: CTRL-{su,giu,...} devono fungere anche quando altre
     finestre hanno il focus (e.g. cicBrowser). C'e' gia' da qualche parte il
     codice che aggiunge i keybinding a tutte le eventBox, e' da ripristinare
@@ -88,6 +86,8 @@ TODO
     ( -I ?? o chiedere a matitamake la root e farci una find? )
 
 DONE
+- Bug di cut&paste: se si fa cut&paste di testo lockato si ottiene testo
+  lockato! -> Gares
 - Bug: non disambigua
   inductive i (x:nat) : bool \to Prop \def K : bool \to (i x true) \to (i x false).
   perche' non inserisce nat nel domain di disambiguazione. Deve esserci un bug
index 5ea3903835f05dafa4a83dc4c6b2711b84aa3a5d..0d0fa1ba8c863df9bcd689054eb16a88e8f1f8fa 100644 (file)
@@ -383,7 +383,10 @@ class gui () =
       let main_h = height * 80 / 100 in
       let script_w = main_w * 6 / 10 in
       self#main#toplevel#resize ~width:main_w ~height:main_h;
-      self#main#hpaneScriptSequent#set_position script_w  
+      self#main#hpaneScriptSequent#set_position script_w;
+        (* source_view *)
+      ignore(source_view#connect#after#paste_clipboard 
+        ~callback:(fun () -> (MatitaScript.instance ())#clean_dirty_lock))
     
     method loadScript file =       
       let script = MatitaScript.instance () in
index 7aa31d33b6b3367ef8f632316129cb000da1fe90..af38ff8c2c86589f306cfcdcebb2cf644f12a7ff 100644 (file)
@@ -346,7 +346,7 @@ object (self)
 
   (** goal as seen by the user (i.e. metano corresponding to current tab) *)
   val mutable userGoal = ~-1
-
+  val mutable lock_mark_pos = 0
 
   (** text mark and tag representing locked part of a script *)
   val locked_mark =
@@ -413,6 +413,7 @@ List.iter (fun s -> prerr_endline ("'" ^ s ^ "'")) new_statements;
     buffer#get_text ~start:(buffer#get_iter_at_mark (`MARK locked_mark))
       ~stop:buffer#end_iter ()
 
+      
   (** @param rel_offset relative offset from current position of locked_mark *)
   method private moveMark rel_offset =
     let mark = `MARK locked_mark in
@@ -427,6 +428,7 @@ List.iter (fun s -> prerr_endline ("'" ^ s ^ "'")) new_statements;
     in
     buffer#move_mark mark ~where:new_mark_pos;
     buffer#apply_tag locked_tag ~start:buffer#start_iter ~stop:new_mark_pos;
+    lock_mark_pos <- new_mark_pos#offset;
     buffer#move_mark `INSERT old_insert;
     begin
      match self#status.proof_status with
@@ -435,6 +437,11 @@ List.iter (fun s -> prerr_endline ("'" ^ s ^ "'")) new_statements;
     end ;
     while Glib.Main.pending () do ignore(Glib.Main.iteration false); done
 
+  method clean_dirty_lock =
+    let lock_mark_iter = buffer#get_iter (`OFFSET lock_mark_pos) in
+    buffer#remove_tag locked_tag ~start:buffer#start_iter ~stop:buffer#end_iter;
+    buffer#apply_tag locked_tag ~start:buffer#start_iter ~stop:lock_mark_iter
+
   val mutable observers = []
 
   method addObserver (o: MatitaTypes.status -> unit) =
index cbdfb286bbdef58e8d0eb54448a7776a483afd1a..ab39b9cfd956c75b9b41147a36bbea5e3bac8ada 100644 (file)
@@ -60,6 +60,9 @@ object
 
   (** end of script, true if the whole script has been executed *)
   method eos: bool
+
+  (** misc *)
+  method clean_dirty_lock: unit
   
   (* debug *)
   method dump : unit -> unit