[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]