[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:31395] tk8.0-ja に入っている tkmemo の不具合 (パッチ添付しました )



菊地ともうします。
woodyを使わせていただいています。

submit@bugs.debian.or.jp
へバグ報告を送信しましたが、debian-users@debian.or.jp にも流れて来るはずと
思うのですが、流れて来ないので、念のために、debian-users@debian.or.jp に投
稿します。パッチを添付しています。



gedit でも tkmemo と同じような

---------

というものが各操作時の window の一番上に出ます。たとえば、
「ファイル」を選択すると、一番上に、

---------

がでます。それを選択すると、
tkmemo と同じような window が現れます。
tkmemo でも同じ流れの操作系なのでしょう。ですから、tkmemo で、

---------

を選択して、二つ window ができてしまうのは異常で、一つだけ window ができる
のが正常なのでしょう。これが tkmemo の今回報告します不具合の内容です。説明
文がわかりにくくてすみません。この不具合を結果的に出なくし(ただし、はっき
りと理由が判っていません)、下記に説明してある tkmemo へ機能を追加する
patch

tkmemo.diff

を作りましたので、添付いたします。二つの window ができてしまう時は、その
window の中の "変更"と"消去"ボタンを押しても実際にはエラーになって使えない
のですが、"変更"と"消去"ボタンも使えるようになると思います。

追加する機能の説明は下記です。
既にできているメモの上で左クリックをして、変更か消去を選択する window が現
れるのですが、普通に操作していても、誤って消去の位置でマウスのクリックボタ
ンを話してしまうと、そのまま、本当に消去されてしまいます。実際に使っていて
、数回、これをやってしまいました。これでは、現実には、危なくて使えないので
、最低限、一度、確認を聞いてくるようにしてから消去が実行されるようにしない
と使えないと思って、tkmemo のオリジナルのプログラムを見ながら、文法を推測
しながら、何とか、その機能を追加しました。ご検討くださって、正しい文法で書
き直して、採用して頂けたら幸いです。

★なぜか、メモ内容を変更するダイアログの window をマウスポインターで二度続
けて移動すると、エディター内のカーソルの応答が無くなってしまって入力ができ
なくなることがあります。そのときは、一度、別の window でマウスの左ボタンを
クリックして、その後、変更のダイアログ内のエディター内で左クリックすると、
カーソルの応答が帰ってきます。他の操作でカーソルの応答が無くなった時にも、
この操作で応答が買って来る可能性があります。

★メモの数が多くなると、デスクトップ領域をはみ出した分が表示されなくなって
しまいます。sawfish の仮想デスクトップ機能を利用していると、なんとか、見る
ことはできますが、仮想デスクトップ上のメモの位置の制御は働いていない状態で
す。また、デスクトップ上でのメモの位置が記憶されていないと、結局、多くのメ
モは貼れないようです。今のままでは、4、5枚が限度でしょう。機能を求めると
切りがないのでしょうが、文字の折り返し機能とメモのサイズと位置の記憶機能が
あれば、一応の完成形でしょう。

知識のある方、機能追加をお願い致します。

以上です。

--
菊地 white@xxxxxxxxxxxxxxxx




--- tkmemo.orig	Sun Jan  6 18:38:46 2002
+++ tkmemo	Fri Jan 11 23:04:05 2002
@@ -109,7 +109,9 @@
 
 # ä˥塼ݥåץåѤꤹ
 proc popup_conf {w} {
-    bind $w <Any-ButtonRelease> "popup_unpost $w"
+#Ԥ򥳥ȹԤˤȥ顼Ǥ롣ͳ
+#tearoffȤ̾windowĤǤޤȤʤʤޤ
+#    bind $w <Any-ButtonRelease> "popup_unpost $w"
     bind $w <Any-Motion> {if {"$tk_priv(window)" == "%W"} {%W activate @%y}}
     global tk_strictMotif
     if {$tk_strictMotif} {
@@ -336,20 +338,77 @@
     }
 }
 
+# del_strip Хå롼
+proc dialog_ack2 {action} {
+    global _text2
+    if {$action == "ok"} {
+	set _text2 {ok}
+    } else {
+	set _text2 {}
+    }
+}
+
 # ȥåפξõ
 proc del_strip {w} {
     global strips
 
-    # ϤΤ message ʤΤǡοƤ toplevel 
-    set s [winfo parent $w]
-    destroy $s
-
-    # õȥå̾ꥹȤ鳰
-    set i [lsearch $strips $s]
-    if {$i >= 0} {
-	set strips [lreplace $strips $i $i]
-    }
-    save_memo
+catch {destroy .dialog}
+    toplevel .dialog -class Dialog
+
+    # ȥ (ɥޥ͡㤬Ĥ) 
+    wm title .dialog "Dialog"
+
+label .dialog.l -borderwidth 1 -relief raised \
+	-padx 5 -pady 5 \
+	-anchor w -text "õƤǤ"
+    # .dialog βˤ 2 Ĥ widget 
+    #   .dialog.l -- Υȥ
+    #   .dialog.f1 -- OK/󥻥ܥĥդե졼
+    frame .dialog.f1 -borderwidth 1 -relief raised
+    # ܥꤷ礭·
+    button .dialog.f1.b1 -text "Ϥ" -width 3 \
+	-command "dialog_ack2 ok"
+    button .dialog.f1.b2 -text "" -width 3 \
+	-command "dialog_ack2 cancel"
+    pack .dialog.f1.b1 -side left -padx 15 -pady 1
+    pack .dialog.f1.b2 -side right -padx 15 -pady 1
+    
+    # Y ˥ꥵ˥ƥȤΥե졼
+    # 礭ʤ褦 expand  fill ꤹ롣
+    pack .dialog.l -fill x
+    pack .dialog.f1 -fill x
+
+    # ¾ư򤵤Ⱥ (㤨иԽ
+    # ȥåפõȤ) Τǡ륰֤
+    grab set .dialog
+    
+    # ꡼˽Ф
+    #ɤ⡢ºݤˤϡƯƤʤ褦ǤäƤưѤޤ
+    #proc get_memo {msg} {} 򻲹ͤˤΤǡ˽񤫤ƤΤ򿿻Ǥ
+    #⤦˽ФȻפäƤäƤѲʤƵդޤ
+    set x [expr {[winfo screenwidth .dialog]/2 - 150}] 
+    set y [expr {[winfo screenheight .dialog]/2-100}]
+    wm geometry .dialog +$x+$y
+
+    # ϤޤԤ
+    global _text2
+    tkwait variable _text2
+    destroy .dialog
+
+    if {$_text2 == "ok"} {
+
+    	# ϤΤ message ʤΤǡοƤ toplevel 
+    	set s [winfo parent $w]
+    	destroy $s
+
+    	# õȥå̾ꥹȤ鳰
+    	set i [lsearch $strips $s]
+    	if {$i >= 0} {
+		set strips [lreplace $strips $i $i]
+    	}
+    	save_memo
+    } else {}
+
 }
 
 # ȥåפɽؤ