ruby-changes:9425
From: yugui <ko1@a...>
Date: Wed, 24 Dec 2008 13:10:30 +0900 (JST)
Subject: [ruby-changes:9425] Ruby:r20963 (ruby_1_9_1): merges r20903 from trunk into ruby_1_9_1.
yugui 2008-12-24 13:10:12 +0900 (Wed, 24 Dec 2008) New Revision: 20963 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=20963 Log: merges r20903 from trunk into ruby_1_9_1. * ext/tk/lib/tk.rb: temporary patch for trouble on TkAqua (> Tk8.4.9). * ext/tk/sample/demos-jp/widget: set encoding to a demo-code string to avoid garbled text on the Code Window. Modified files: branches/ruby_1_9_1/ChangeLog branches/ruby_1_9_1/ext/tk/lib/tk.rb branches/ruby_1_9_1/ext/tk/sample/demos-jp/widget Index: ruby_1_9_1/ChangeLog =================================================================== --- ruby_1_9_1/ChangeLog (revision 20962) +++ ruby_1_9_1/ChangeLog (revision 20963) @@ -1,3 +1,10 @@ +Mon Dec 22 02:54:56 2008 Hidetoshi NAGAI <nagai@a...> + + * ext/tk/lib/tk.rb: temporary patch for trouble on TkAqua (> Tk8.4.9). + + * ext/tk/sample/demos-jp/widget: set encoding to a demo-code string to + avoid garbled text on the Code Window. + Sun Dec 21 14:48:51 2008 TAKAO Kouji <kouji@t...> * test/readline/test_readline_history.rb: checked encoding. Index: ruby_1_9_1/ext/tk/sample/demos-jp/widget =================================================================== --- ruby_1_9_1/ext/tk/sample/demos-jp/widget (revision 20962) +++ ruby_1_9_1/ext/tk/sample/demos-jp/widget (revision 20963) @@ -882,18 +882,12 @@ $code_window.title("Demo code: #{file}") $code_window.iconname(file) -# fid = open(file, 'r') - fid = open([$demo_dir, file].join(File::Separator), 'r') + code = open([$demo_dir, file].join(File::Separator), 'r'){|fid| fid.read } $code_text.delete('1.0', 'end') - #$code_text.insert('1.0', `cat #{file}`) - $code_text.insert('1.0', fid.read) - #$code_mark = TkTextMark.new($code_text, '1.0') - #$code_text.set_insert('1.0') + code.force_encoding('EUC-JP') if defined?(::Encoding.default_external) + $code_text.insert('1.0', code) TkTextMarkInsert.new($code_text,'1.0') - $set_linenum.call($code_text) - - fid.close end def showCode2(demo) @@ -974,14 +968,12 @@ $code_window.title("Demo code: #{file}") $code_window.iconname(file) - fid = open([$demo_dir, file].join(File::Separator), 'r') + code = open([$demo_dir, file].join(File::Separator), 'r'){|fid| fid.read } $code_text.delete('1.0', 'end') - $code_text.insert('1.0', fid.read) + code.force_encoding('EUC-JP') if defined?(::Encoding.default_external) + $code_text.insert('1.0', code) TkTextMarkInsert.new($code_text,'1.0') - $set_linenum.call($code_text) - - fid.close end if $tk_major_ver < 8 Index: ruby_1_9_1/ext/tk/lib/tk.rb =================================================================== --- ruby_1_9_1/ext/tk/lib/tk.rb (revision 20962) +++ ruby_1_9_1/ext/tk/lib/tk.rb (revision 20963) @@ -1112,19 +1112,6 @@ WITH_RUBY_VM = Object.const_defined?(:RubyVM) && ::RubyVM.class == Class WITH_ENCODING = defined?(::Encoding.default_external) && true #WITH_ENCODING = Object.const_defined?(:Encoding) && ::Encoding.class == Class - #if TclTkLib::WINDOWING_SYSTEM == 'aqua' - # if (TclTkLib.get_version <=> [8, 4, TclTkLib::RELEASE_TYPE::FINAL, 9]) > 0 - # # *** KNOWN BUG *** - # # Main event loop thread of TkAqua (> Tk8.4.9) must be the main - # # application thread. So, ruby1.9 users must call Tk.mainloop on - # # the main application thread. - # RUN_EVENTLOOP_ON_MAIN_THREAD = true - # end - #end - unless self.const_defined? :RUN_EVENTLOOP_ON_MAIN_THREAD - ### Ruby 1.9 !!!!!!!!!!!!!!!!!!!!!!!!!! - RUN_EVENTLOOP_ON_MAIN_THREAD = false - end unless self.const_defined? :INTERP if self.const_defined? :IP_NAME @@ -1143,8 +1130,36 @@ opts = '' end + if WITH_RUBY_VM ### check Ruby 1.9 !!!!!!! + # *** NEED TO FIX *** + ip = TclTkIp.new(name, opts) + if ip._invoke_without_enc('tk', 'windowingsystem') == 'aqua' && + (TclTkLib.get_version <=> [8,4,TclTkLib::RELEASE_TYPE::FINAL,9]) > 0 + # *** KNOWN BUG *** + # Main event loop thread of TkAqua (> Tk8.4.9) must be the main + # application thread. So, ruby1.9 users must call Tk.mainloop on + # the main application thread. + RUN_EVENTLOOP_ON_MAIN_THREAD = true + INTERP = ip + else + unless self.const_defined? :RUN_EVENTLOOP_ON_MAIN_THREAD + RUN_EVENTLOOP_ON_MAIN_THREAD = false + end + if RUN_EVENTLOOP_ON_MAIN_THREAD + INTERP = ip + else + ip.delete + end + end + ip = nil + else + unless self.const_defined? :RUN_EVENTLOOP_ON_MAIN_THREAD + RUN_EVENTLOOP_ON_MAIN_THREAD = false + end + end + if !WITH_RUBY_VM || RUN_EVENTLOOP_ON_MAIN_THREAD ### check Ruby 1.9 !!!!!!! - INTERP = TclTkIp.new(name, opts) + INTERP = TclTkIp.new(name, opts) unless self.const_defined? :INTERP else INTERP_MUTEX = Mutex.new INTERP_ROOT_CHECK = ConditionVariable.new @@ -1316,6 +1331,11 @@ end end + unless self.const_defined? :RUN_EVENTLOOP_ON_MAIN_THREAD + ### Ruby 1.9 !!!!!!!!!!!!!!!!!!!!!!!!!! + RUN_EVENTLOOP_ON_MAIN_THREAD = false + end + WIDGET_DESTROY_HOOK = '<WIDGET_DESTROY_HOOK>' INTERP._invoke_without_enc('event', 'add', "<#{WIDGET_DESTROY_HOOK}>", '<Destroy>') @@ -1683,12 +1703,13 @@ TclTkLib.mainloop(check_root) elsif TkCore::RUN_EVENTLOOP_ON_MAIN_THREAD - #if TclTkLib::WINDOWING_SYSTEM == 'aqua' && - # Thread.current != Thread.main && - # (TclTkLib.get_version <=> [8,4,TclTkLib::RELEASE_TYPE::FINAL,9]) > 0 - # raise RuntimeError, - # "eventloop on TkAqua ( > Tk8.4.9 ) works on the main thread only" - #end + # if TclTkLib::WINDOWING_SYSTEM == 'aqua' && + if TkCore::INTERP._invoke_without_enc('tk','windowingsystem')=='aqua' && + Thread.current != Thread.main && + (TclTkLib.get_version <=> [8,4,TclTkLib::RELEASE_TYPE::FINAL,9]) > 0 + raise RuntimeError, + "eventloop on TkAqua ( > Tk8.4.9 ) works on the main thread only" + end TclTkLib.mainloop(check_root) else ### Ruby 1.9 !!!!! @@ -5529,7 +5550,7 @@ #Tk.freeze module Tk - RELEASE_DATE = '2008-12-04'.freeze + RELEASE_DATE = '2008-12-21'.freeze autoload :AUTO_PATH, 'tk/variable' autoload :TCL_PACKAGE_PATH, 'tk/variable' -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/