rpms/openoffice.org/devel openoffice.org-3.0.0.ooo93366.fpicker_in_main.patch, NONE, 1.1 workspace.i18n45.patch, NONE, 1.1 openoffice.org.spec, 1.1633, 1.1634 openoffice.org.2.0.4.ooo80412.i18npool.extendgrapheme.patch, 1.1, NONE

Caolan McNamara caolanm at fedoraproject.org
Tue Sep 2 08:37:48 UTC 2008


Author: caolanm

Update of /cvs/pkgs/rpms/openoffice.org/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv32187

Modified Files:
	openoffice.org.spec 
Added Files:
	openoffice.org-3.0.0.ooo93366.fpicker_in_main.patch 
	workspace.i18n45.patch 
Removed Files:
	openoffice.org.2.0.4.ooo80412.i18npool.extendgrapheme.patch 
Log Message:
add openoffice.org-3.0.0.ooo93366.fpicker_in_main.patch

openoffice.org-3.0.0.ooo93366.fpicker_in_main.patch:

--- NEW FILE openoffice.org-3.0.0.ooo93366.fpicker_in_main.patch ---
Index: source/dialog/filedlghelper.cxx
===================================================================
RCS file: /cvs/framework/sfx2/source/dialog/filedlghelper.cxx,v
retrieving revision 1.144
diff -u -r1.144 filedlghelper.cxx
--- openoffiec.org.orig/sfx2/source/dialog/filedlghelper.cxx	4 Jun 2008 09:53:08 -0000	1.144
+++ openoffice.org/sfx2/source/dialog/filedlghelper.cxx	2 Sep 2008 08:24:03 -0000
@@ -1325,8 +1325,10 @@
 
 	sal_Int16 nRet = ExecutableDialogResults::CANCEL;
 
-#if !(defined(MACOSX) && defined(QUARTZ))
 //On MacOSX the native file picker has to run in the primordial thread because of drawing issues
+//On Linux the native gtk file picker, when backed by gnome-vfs2, needs to be run in the same
+//primordial thread as the ucb gnome-vfs2 provider was initialized in.
+#ifdef WNT
 	if ( mbSystemPicker )
 	{
 		PickerThread_Impl* pThread = new PickerThread_Impl( mxFileDlg );
diff -ru fpicker.orig/source/unx/gnome/SalGtkFilePicker.cxx fpicker/source/unx/gnome/SalGtkFilePicker.cxx
--- openoffice.org.orig/fpicker/source/unx/gnome/SalGtkFilePicker.cxx	2008-09-02 09:16:04.000000000 +0100
+++ openoffice.org/fpicker/source/unx/gnome/SalGtkFilePicker.cxx	2008-09-02 09:20:51.000000000 +0100
@@ -999,13 +999,13 @@
     uno::Reference< awt::XExtendedToolkit > xToolkit(
         m_xServiceMgr->createInstance( ::rtl::OUString::createFromAscii("com.sun.star.awt.Toolkit") ), uno::UNO_QUERY);
 
-	RunDialog* pRunInMain = new RunDialog(m_pDialog, xToolkit);
-	uno::Reference < awt::XTopWindowListener > xLifeCycle(pRunInMain);
+	RunDialog* pRunDialog = new RunDialog(m_pDialog, xToolkit);
+	uno::Reference < awt::XTopWindowListener > xLifeCycle(pRunDialog);
 	while( GTK_RESPONSE_NO == btn )
 	{
 		btn = GTK_RESPONSE_YES; // we dont want to repeat unless user clicks NO for file save.
 
-        gint nStatus = pRunInMain->runandwaitforresult();
+        gint nStatus = pRunDialog->run();
 		switch( nStatus )
 		{
 			case GTK_RESPONSE_ACCEPT:
@@ -1032,9 +1032,9 @@
                                 OUStringToOString(aResProvider.getResString(FILE_PICKER_TITLE_SAVE ),
                                 RTL_TEXTENCODING_UTF8 ).getStr() );
                                  
-	                        RunDialog* pAnotherRunInMain = new RunDialog(dlg, xToolkit);
-	                        uno::Reference < awt::XTopWindowListener > xAnotherLifeCycle(pAnotherRunInMain);
-                            btn = pAnotherRunInMain->runandwaitforresult();
+	                        RunDialog* pAnotherDialog = new RunDialog(dlg, xToolkit);
+	                        uno::Reference < awt::XTopWindowListener > xAnotherLifeCycle(pAnotherDialog);
+                            btn = pAnotherDialog->run();
 
 							gtk_widget_destroy( dlg );
 						}
diff -ru fpicker.orig/source/unx/gnome/SalGtkFolderPicker.cxx fpicker/source/unx/gnome/SalGtkFolderPicker.cxx
--- openoffice.org.orig/fpicker/source/unx/gnome/SalGtkFolderPicker.cxx	2008-09-02 09:16:04.000000000 +0100
+++ openoffice.org/fpicker/source/unx/gnome/SalGtkFolderPicker.cxx	2008-09-02 09:20:53.000000000 +0100
@@ -176,9 +176,9 @@
     uno::Reference< awt::XExtendedToolkit > xToolkit(
         m_xServiceMgr->createInstance( ::rtl::OUString::createFromAscii("com.sun.star.awt.Toolkit") ), uno::UNO_QUERY);
 
-    RunDialog* pRunInMain = new RunDialog(m_pDialog, xToolkit);
-    uno::Reference < awt::XTopWindowListener > xLifeCycle(pRunInMain);
-    gint nStatus = pRunInMain->runandwaitforresult();
+    RunDialog* pRunDialog = new RunDialog(m_pDialog, xToolkit);
+    uno::Reference < awt::XTopWindowListener > xLifeCycle(pRunDialog);
+    gint nStatus = pRunDialog->run();
 	switch( nStatus )
 	{
 		case GTK_RESPONSE_ACCEPT:
diff -ru fpicker.orig/source/unx/gnome/SalGtkPicker.cxx fpicker/source/unx/gnome/SalGtkPicker.cxx
--- openoffice.org.orig/fpicker/source/unx/gnome/SalGtkPicker.cxx	2008-09-02 09:16:04.000000000 +0100
+++ openoffice.org/fpicker/source/unx/gnome/SalGtkPicker.cxx	2008-09-02 09:20:22.000000000 +0100
@@ -124,7 +124,7 @@
 
 RunDialog::RunDialog( GtkWidget *pDialog, uno::Reference< awt::XExtendedToolkit >& rToolkit ) :
     cppu::WeakComponentImplHelper1< awt::XTopWindowListener >( maLock ),
-    mbFinished(false), mpDialog(pDialog), mpCreatedParent(NULL), mxToolkit(rToolkit)
+    mpDialog(pDialog), mpCreatedParent(NULL), mxToolkit(rToolkit)
 {
     awt::SystemDependentXWindow aWindowHandle;
 
@@ -178,39 +178,20 @@
     gtk_widget_hide( mpDialog );
 }
 
-void RunDialog::run() 
+gint RunDialog::run() 
 { 
     if (mxToolkit.is())
         mxToolkit->addTopWindowListener(this);
 
-    mnStatus = gtk_dialog_run( GTK_DIALOG( mpDialog ) ); 
+    gint nStatus = gtk_dialog_run( GTK_DIALOG( mpDialog ) ); 
 
     if (mxToolkit.is())
         mxToolkit->removeTopWindowListener(this);
 
-
-    if (mnStatus != 1)	//PLAY
+    if (nStatus != 1)	//PLAY
         gtk_widget_hide( mpDialog );
 
-    maLock.acquire();
-    mbFinished = true;
-    maLock.release();
-
-    Application::EndYield();
-}
-
-gint RunDialog::runandwaitforresult() 
-{ 
-    g_timeout_add_full(G_PRIORITY_HIGH_IDLE, 0, (GSourceFunc)rundialog, this, NULL);
-    while (1)
-    {
-	maLock.acquire();
-    	if (mbFinished)
-            break;
-	maLock.release();
-        Application::Yield();
-    }
-    return mnStatus; 
+    return nStatus;
 }
 
 SalGtkPicker::~SalGtkPicker()
diff -ru fpicker.orig/source/unx/gnome/SalGtkPicker.hxx fpicker/source/unx/gnome/SalGtkPicker.hxx
--- openoffice.org.orig/fpicker/source/unx/gnome/SalGtkPicker.hxx	2008-09-02 09:16:04.000000000 +0100
+++ openoffice.org/fpicker/source/unx/gnome/SalGtkPicker.hxx	2008-09-02 09:16:49.000000000 +0100
@@ -74,8 +74,7 @@
 		static rtl::OString unicodetouri(const rtl::OUString &rURL);
 };
 
-//Run the Gtk Dialog in the "Main Thread" for us to avoid threading conflict and
-//report back to this thread. Watch for any "new windows" created while we're
+//Run the Gtk Dialog. Watch for any "new windows" created while we're
 //executing and consider that a CANCEL event to avoid e.g. "file cannot be opened"
 //modal dialogs and this one getting locked if some other API call causes this
 //to happen while we're opened waiting for user input, e.g. 
@@ -84,9 +83,7 @@
     public cppu::WeakComponentImplHelper1< ::com::sun::star::awt::XTopWindowListener >
 {
 private:
-    bool mbFinished;
     osl::Mutex maLock;
-    gint mnStatus;
     GtkWidget *mpDialog;
     GdkWindow *mpCreatedParent;
     ::com::sun::star::uno::Reference< ::com::sun::star::awt::XExtendedToolkit>  mxToolkit;
@@ -111,8 +108,7 @@
         throw (::com::sun::star::uno::RuntimeException) {}
 public:
     RunDialog(GtkWidget *pDialog, ::com::sun::star::uno::Reference< ::com::sun::star::awt::XExtendedToolkit > &rToolkit);
-    gint runandwaitforresult();
-    void run();
+    gint run();
     void cancel();
     ~RunDialog();
 };

workspace.i18n45.patch:

--- NEW FILE workspace.i18n45.patch ---
Index: l10n/i18npool/inc/breakiterator_cjk.hxx
diff -u l10n/i18npool/inc/breakiterator_cjk.hxx:1.6 l10n/i18npool/inc/breakiterator_cjk.hxx:1.6.16.1
--- l10n/i18npool/inc/breakiterator_cjk.hxx:1.6	Thu Apr 10 01:37:18 2008
+++ l10n/i18npool/inc/breakiterator_cjk.hxx	Mon Aug 18 21:23:30 2008
@@ -58,6 +58,7 @@
 
 protected:
 	xdictionary *dict;
+    rtl::OUString hangingCharacters;
 };
 
 #define BREAKITERATOR_CJK( lang ) \
@@ -69,6 +70,7 @@
 
 #ifdef BREAKITERATOR_ALL
 BREAKITERATOR_CJK( zh )
+BREAKITERATOR_CJK( zh_TW )
 BREAKITERATOR_CJK( ja )
 BREAKITERATOR_CJK( ko )
 #endif
Index: l10n/i18npool/inc/breakiterator_hi.hxx
diff -u l10n/i18npool/inc/breakiterator_hi.hxx:1.1 l10n/i18npool/inc/breakiterator_hi.hxx:removed
--- l10n/i18npool/inc/breakiterator_hi.hxx:1.1	Wed Apr 24 10:08:25 2002
+++ l10n/i18npool/inc/breakiterator_hi.hxx	Tue Sep  2 00:59:09 2008
@@ -1,37 +0,0 @@
-/*************************************************************************
-#*
-#*  Copyright (c) 2002 Sun Microsystems Inc.
-#*
-#* Bugs! - Contact Prabhat.Hegde at sun.com
-#*************************************************************************/
-
-#ifndef _I18N_BREAKITERATOR_HI_HXX_
-#define _I18N_BREAKITERATOR_HI_HXX_
-
-#include <breakiterator_ctl.hxx>
-
-namespace com { 
-namespace sun { 
-namespace star { 
-namespace i18n {
-
-//	----------------------------------------------------
-//	class BreakIterator_hi
-//	----------------------------------------------------
-class BreakIterator_hi : public BreakIterator_CTL
-{
-public:
-	BreakIterator_hi();
-	~BreakIterator_hi();
-
-protected:
-	void SAL_CALL makeIndex(const rtl::OUString& text, sal_Int32 pos) 
-    throw(com::sun::star::uno::RuntimeException);
-};
-
-} 
-} 
-} 
-} 
-
-#endif
Index: l10n/i18npool/inc/localedata.hxx
diff -u l10n/i18npool/inc/localedata.hxx:1.20 l10n/i18npool/inc/localedata.hxx:1.20.16.1
--- l10n/i18npool/inc/localedata.hxx:1.20	Thu Apr 10 01:44:09 2008
+++ l10n/i18npool/inc/localedata.hxx	Mon Aug 18 21:23:30 2008
@@ -112,6 +112,7 @@
     virtual com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getFollowPageWords( const com::sun::star::lang::Locale& rLocale ) throw(com::sun::star::uno::RuntimeException);
     virtual sal_Bool SAL_CALL hasPhonetic( const com::sun::star::lang::Locale& rLocale ) throw(com::sun::star::uno::RuntimeException);
     virtual sal_Bool SAL_CALL isPhonetic( const com::sun::star::lang::Locale& rLocale, const rtl::OUString& algorithm ) throw(com::sun::star::uno::RuntimeException);
+    virtual rtl::OUString SAL_CALL getHangingCharacters( const com::sun::star::lang::Locale& rLocale ) throw(com::sun::star::uno::RuntimeException);
 
 	//XServiceInfo
 	virtual rtl::OUString SAL_CALL getImplementationName() throw( com::sun::star::uno::RuntimeException );
Index: l10n/i18npool/source/breakiterator/breakiteratorImpl.cxx
diff -u l10n/i18npool/source/breakiterator/breakiteratorImpl.cxx:1.28 l10n/i18npool/source/breakiterator/breakiteratorImpl.cxx:1.27.4.2
--- l10n/i18npool/source/breakiterator/breakiteratorImpl.cxx:1.28	Thu Aug 14 09:27:36 2008
+++ l10n/i18npool/source/breakiterator/breakiteratorImpl.cxx	Mon Aug 25 11:31:48 2008
@@ -234,6 +234,7 @@
 {
         if (nStartPos < 0 || nStartPos > Text.getLength())
             return -1;
+        if (Text.getLength() == 0) return 0;
         return LBI->beginOfSentence(Text, nStartPos, rLocale);
 }
 
@@ -242,6 +243,7 @@
 {
         if (nStartPos < 0 || nStartPos > Text.getLength())
             return -1;
+        if (Text.getLength() == 0) return 0;
         return LBI->endOfSentence(Text, nStartPos, rLocale);
 }
 
Index: l10n/i18npool/source/breakiterator/breakiterator_cjk.cxx
diff -u l10n/i18npool/source/breakiterator/breakiterator_cjk.cxx:1.17 l10n/i18npool/source/breakiterator/breakiterator_cjk.cxx:1.17.16.1
--- l10n/i18npool/source/breakiterator/breakiterator_cjk.cxx:1.17	Thu Apr 10 01:52:22 2008
+++ l10n/i18npool/source/breakiterator/breakiterator_cjk.cxx	Mon Aug 18 21:24:50 2008
@@ -33,6 +33,7 @@
 
 #define BREAKITERATOR_ALL
 #include <breakiterator_cjk.hxx>
+#include <localedata.hxx>
 #include <i18nutil/unicode.hxx>
 
 using namespace ::com::sun::star::uno;
@@ -108,7 +109,7 @@
         LineBreakResults lbr;
 
         if (bOptions.allowPunctuationOutsideMargin &&
-                bOptions.forbiddenBeginCharacters.indexOf(Text[nStartPos]) != -1 &&
+                hangingCharacters.indexOf(Text[nStartPos]) != -1 &&
                 ++nStartPos == Text.getLength()) {
             ; // do nothing
         } else if (bOptions.applyForbiddenRules && 0 < nStartPos && nStartPos < Text.getLength()) {
@@ -122,12 +123,15 @@
         lbr.breakType = BreakType::WORDBOUNDARY;
         return lbr;
 }
+
+#define LOCALE(language, country) lang::Locale(OUString::createFromAscii(language), OUString::createFromAscii(country), OUString())
 //      ----------------------------------------------------
 //      class BreakIterator_zh
 //      ----------------------------------------------------;
 BreakIterator_zh::BreakIterator_zh()
 {
         dict = new xdictionary("zh");
+        hangingCharacters = LocaleData().getHangingCharacters(LOCALE("zh", "CN"));
         cBreakIterator = "com.sun.star.i18n.BreakIterator_zh";
 }
 
@@ -137,12 +141,28 @@
 }
 
 //      ----------------------------------------------------
+//      class BreakIterator_zh_TW
+//      ----------------------------------------------------;
+BreakIterator_zh_TW::BreakIterator_zh_TW()
+{
+        dict = new xdictionary("zh");
+        hangingCharacters = LocaleData().getHangingCharacters(LOCALE("zh", "TW"));
+        cBreakIterator = "com.sun.star.i18n.BreakIterator_zh_TW";
+}
+
+BreakIterator_zh_TW::~BreakIterator_zh_TW()
+{
+        delete dict;
+}
+
+//      ----------------------------------------------------
 //      class BreakIterator_ja
 //      ----------------------------------------------------;
 BreakIterator_ja::BreakIterator_ja()
 {
         dict = new xdictionary("ja");
         dict->setJapaneseWordBreak();
+        hangingCharacters = LocaleData().getHangingCharacters(LOCALE("ja", "JP"));
         cBreakIterator = "com.sun.star.i18n.BreakIterator_ja";
 }
 
@@ -156,6 +176,7 @@
 //      ----------------------------------------------------;
 BreakIterator_ko::BreakIterator_ko()
 {
+        hangingCharacters = LocaleData().getHangingCharacters(LOCALE("ko", "KR"));
         cBreakIterator = "com.sun.star.i18n.BreakIterator_ko";
 }
 
Index: l10n/i18npool/source/breakiterator/breakiterator_hi.cxx
diff -u l10n/i18npool/source/breakiterator/breakiterator_hi.cxx:1.3 l10n/i18npool/source/breakiterator/breakiterator_hi.cxx:removed
--- l10n/i18npool/source/breakiterator/breakiterator_hi.cxx:1.3	Sun Sep 17 02:13:49 2006
+++ l10n/i18npool/source/breakiterator/breakiterator_hi.cxx	Tue Sep  2 00:59:11 2008
@@ -1,191 +0,0 @@
-/*************************************************************************
-#*
-#* Copyright (c) 2002 Sun Microsystems Inc.
-#*
-#* Bugs! - Contact Prabhat.Hegde at sun.com
-#************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_i18npool.hxx"
-
-#include <breakiterator_hi.hxx>
-
-#include <string.h>	// for memset
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::rtl;
-
-namespace com { namespace sun { namespace star { namespace i18n {
-
-//	----------------------------------------------------
-//	class Breakiterator_hi
-//	----------------------------------------------------;
-BreakIterator_hi::BreakIterator_hi()
-{
-	cBreakIterator = "com.sun.star.i18n.BreakIterator_hi";
-}
-
-BreakIterator_hi::~BreakIterator_hi()
-{
-}
-
-/*
- * Devanagari character class Definitions
- */
-#define	_NP		 1L
-#define _UP		 (1L<<1)
-#define _IV		 (1L<<2)
-#define _CN		 (1L<<3)
-#define _CK		 (1L<<4)
-#define _RC		 (1L<<5)
-#define _NM		 (1L<<6)
-#define _IM		 (1L<<7)
-#define _HL		 (1L<<8)
-#define _NK		 (1L<<9)
-#define _VD		 (1L<<10)
-#define _HD		 (1L<<11)
-#define	_II_M	 (1L<<12)
-#define	_EY_M	 (1L<<13)
-#define	_AI_M	 (1L<<14)
-#define	_OW1_M (1L<<15)
-#define	_OW2_M (1L<<16)
-#define	_MS		 (1L<<17)
-#define _AYE_M (1L<<18)
-#define _EE_M	 (1L<<19)
-#define _AWE_M (1L<<20)
-#define _O_M	 (1L<<21)
-#define _RM		 (_II_M|_EY_M|_AI_M|_OW1_M|_OW2_M|_AYE_M|_EE_M|_AWE_M|_O_M)
-
-/* Non-Defined Class type */
-#define __ND		0
-
-/*
- * Devanagari character type definitions
- */
-#define __UP  1  // ChandraBindu & Anuswar
-#define	__NP  2  // Visarg
-#define __IV	3  // Independant Vowels
-#define __CN	4  // Consonants except _CK & _RC 
-#define __CK	5  // Consonants that can be followed by Nukta
-#define __RC	6  // Ra
-#define __NM	7  // Matra
-#define __RM	8  // Ra + HAL
-#define __IM	9  // Choti I Matra
-#define __HL	10 // HAL
-#define __NK	11 // Nukta
-#define __VD	12 // Vedic
-#define __HD	13 // Hindu Numerals
-
-/*
- * Devanagari character type table
- */
-static const sal_uInt16 devaCT[128] = {
-/*         0,    1,    2,    3,    4,    5,    6,    7,
-           8,    9,    A,    B,    C,    D,    E,    F, */
-/* 0900 */ __ND, __UP, __UP, __NP, __ND, __IV, __IV, __IV,
-           __IV, __IV, __IV, __IV, __IV, __IV, __IV, __IV,
-/* 0910 */ __IV, __IV, __IV, __IV, __IV, __CK, __CK, __CK,
-           __CN, __CN, __CN, __CN, __CK, __CN, __CN, __CN,
-/* 0920 */ __CN, __CK, __CK, __CN, __CN, __CN, __CN, __CN,
-           __CN, __CN, __CN, __CK, __CN, __CN, __CN, __CN,
-/* 0930 */ __RC, __CN, __CN, __CN, __CN, __CN, __CN, __CN,
-           __CN, __CN, __ND, __ND, __NK, __VD, __NM, __IM,
-/* 0940 */ __RM, __NM, __NM, __NM, __NM, __RM, __RM, __RM,
-           __RM, __RM, __RM, __RM, __RM, __HL, __ND, __ND,
-/* 0950 */ __ND, __VD, __VD, __VD, __VD, __ND, __ND, __ND,
-           __CN, __CN, __CN, __CN, __CN, __CN, __CN, __CN,
-/* 0960 */ __IV, __IV, __NM, __NM, __ND, __ND, __HD, __HD,
-           __HD, __HD, __HD, __HD, __HD, __HD, __HD, __HD,
-/* 0970 */ __ND, __ND, __ND, __ND, __ND, __ND, __ND, __ND,
-           __ND, __ND, __ND, __ND, __ND, __ND, __ND, __ND,
-};
-
-
-#define getCharType(x) \
-	((x >= 0x0900 && x < 0x097f) ? devaCT[x - 0x0900] : __ND)
-
-/*
- * Devanagari character composition table
- */
-static const sal_uInt16 devaCompRel[14][14] = {
-  /*        ND, UP, NP, IV, CN, CK, RC, NM, RM, IM, HL, NK, VD, HD, */
-  /* 0  */ { 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }, /* ND */
-  /* 1  */ { 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }, /* UP */
-  /* 2  */ { 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }, /* NP */
-  /* 3  */ { 0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }, /* IV */
-  /* 4  */ { 0,  1,  1,  0,  0,  0,  0,  1,  1,  1,  1,  0,  0,  0 }, /* CN */
-  /* 5  */ { 0,  1,  1,  0,  0,  0,  0,  1,  1,  1,  1,  1,  0,  0 }, /* CK */
-  /* 6  */ { 0,  1,  1,  0,  0,  0,  0,  1,  1,  1,  1,  0,  0,  0 }, /* RC */
-  /* 7  */ { 0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }, /* NM */
-  /* 8  */ { 0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }, /* RM */
-  /* 9  */ { 0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }, /* IM */
-  /* 10 */ { 0,  0,  0,  0,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0 }, /* HL */
-  /* 11 */ { 0,  1,  1,  0,  0,  0,  0,  1,  1,  1,  1,  0,  0,  0 }, /* NK */
-  /* 12 */ { 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }, /* VD */
-  /* 13 */ { 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }  /* HD */
-};
-
-static sal_uInt16 SAL_CALL 
-getCombState(const sal_Unicode *text, sal_Int32 pos)
-{
-	sal_uInt16 ch1 = getCharType(text[pos]);
-	sal_uInt16 ch2 = getCharType(text[pos+1]);
-
-	return devaCompRel[ch1][ch2];
-}
-
-static sal_uInt32 SAL_CALL 
-getACell(const sal_Unicode *text, sal_Int32 pos, sal_Int32 len)
-{
-	sal_uInt32 curr = 1;
-	for (; pos + 1 < len && getCombState(text, pos) == 1; curr++, pos++) {}
-	return curr;
-}
-
-#define is_Hindi(x)	((x >= 0x0900 && x < 0x097f) || (x >= 0x0905 && x < 0x0940) || \
-                     (x >= 0x093c && x < 0x094e) || (x >= 0x0950 && x < 0x0954) || \
-                     (x >= 0x0958 && x < 0x0971))
-
-void SAL_CALL 
-i18n::BreakIterator_hi::makeIndex(const OUString& Text, sal_Int32 nStartPos)
-	throw(uno::RuntimeException)
-{
-	if (Text != cachedText) {
-    cachedText = Text;
-    if (cellIndexSize < cachedText.getLength()) {
-      cellIndexSize = cachedText.getLength();
-      free(nextCellIndex);
-      free(previousCellIndex);
-      nextCellIndex = (sal_Int32*) calloc(cellIndexSize, sizeof(sal_Int32));
-      previousCellIndex = (sal_Int32*) calloc(cellIndexSize, sizeof(sal_Int32));
-    }
-    // reset nextCell for new Text
-    memset(nextCellIndex, 0, cellIndexSize * sizeof(sal_Int32));
-	}
-	else if (nextCellIndex[nStartPos] > 0 || ! is_Hindi(Text[nStartPos]))
-    return;
-  
-	const sal_Unicode* str = cachedText.getStr();
-	sal_Int32 len = cachedText.getLength(), startPos, endPos;
-  
-	startPos = nStartPos;
-	while (startPos > 0 && is_Hindi(str[startPos-1])) startPos--;
-	endPos = nStartPos+1;
-	while (endPos < len && is_Hindi(str[endPos])) endPos++;
-  
-	sal_Int32 start, end, pos;
-	pos = start = end = startPos;
-  
-	while (pos < endPos) {
-    end += getACell(str, start, endPos);
-    while (pos < end) {
-      nextCellIndex[pos] = end;
-      previousCellIndex[pos] = start;
-      pos++;
-    }
-    start = end;
-	}
-}
-
-} } } }
Index: l10n/i18npool/source/breakiterator/breakiterator_unicode.cxx
diff -u l10n/i18npool/source/breakiterator/breakiterator_unicode.cxx:1.36 l10n/i18npool/source/breakiterator/breakiterator_unicode.cxx:1.36.2.1
--- l10n/i18npool/source/breakiterator/breakiterator_unicode.cxx:1.36	Wed Jul  2 01:52:07 2008
+++ l10n/i18npool/source/breakiterator/breakiterator_unicode.cxx	Mon Sep  1 17:26:14 2008
@@ -363,11 +363,17 @@
 {
         LineBreakResults lbr;
 
+        if (nStartPos >= Text.getLength()) {
+            lbr.breakIndex = Text.getLength();
+            lbr.breakType = BreakType::WORDBOUNDARY;
+            return lbr;
+        }
+
         loadICUBreakIterator(rLocale, LOAD_LINE_BREAKITERATOR, 0, lineRule, Text);
 
         sal_Bool GlueSpace=sal_True;
         while (GlueSpace) {
-            if (line.aBreakIterator->isBoundary(nStartPos)) { //Line boundary break
+            if (line.aBreakIterator->preceding(nStartPos + 1) == nStartPos) { //Line boundary break
                 lbr.breakIndex = nStartPos;
                 lbr.breakType = BreakType::WORDBOUNDARY;
             } else if (hOptions.rHyphenator.is()) { //Hyphenation break
Index: l10n/i18npool/source/breakiterator/makefile.mk
diff -u l10n/i18npool/source/breakiterator/makefile.mk:1.17 l10n/i18npool/source/breakiterator/makefile.mk:1.17.16.1
--- l10n/i18npool/source/breakiterator/makefile.mk:1.17	Thu Apr 10 01:53:36 2008
+++ l10n/i18npool/source/breakiterator/makefile.mk	Mon Sep  1 11:01:24 2008
@@ -57,7 +57,6 @@
 	    $(SLO)$/breakiterator_cjk.obj \
 	    $(SLO)$/breakiterator_ctl.obj \
 	    $(SLO)$/breakiterator_th.obj \
-	    $(SLO)$/breakiterator_hi.obj \
 	    $(SLO)$/breakiterator_unicode.obj \
 	    $(SLO)$/xdictionary.obj \
         $(subst,$(MISC)$/,$(SLO)$/ $(MY_MISC_CXXFILES:s/.c/.obj/))
Index: l10n/i18npool/source/breakiterator/data/char_in.txt
diff -u /dev/null l10n/i18npool/source/breakiterator/data/char_in.txt:1.1.2.1
--- /dev/null	Tue Sep  2 00:59:11 2008
+++ l10n/i18npool/source/breakiterator/data/char_in.txt	Mon Sep  1 10:56:14 2008
@@ -0,0 +1,48 @@
+#
+#   Copyright (C) 2002-2003, International Business Machines Corporation and others.
+#       All Rights Reserved.
+#
+#   file:  char.txt 
+#
+#   ICU Character Break Rules, also known as Grapheme Cluster Boundaries
+#      See Unicode Standard Annex #29.
+#      These rules are based on TR29 Version 4.0.0
+#
+
+#
+#  Character Class Definitions.
+#    The names are those from TR29.
+#
+$CR = \r;
+$LF = \n;
+$Control    = [[:Zl:] [:Zp:] [:Cc:] [:Cf:]];
+
+# add Japanese Half Width voicing marks to $Extend
+$VoiceMarks = [\uff9e\uff9f];
+$cmcextend = [ \u0903 \u093e-\u0940 \u0949-\u094C \u09bf-\u09c0 \u09c7-\u09c8 \u09cb-\u09cc \u0bc1-\u0bc2 \u0bc6-\u0bc8 \u0bca-\u0bcc \u0c01-\u0c03 \u0c41-\u0c44];
+$Extend     = [[:Grapheme_Extend = TRUE:] $VoiceMarks $cmcextend]; 
+
+#
+# Korean Syllable Definitions
+#
+$L   = [:Hangul_Syllable_Type = L:];
+$V   = [:Hangul_Syllable_Type = V:];
+$T   = [:Hangul_Syllable_Type = T:];
+
+$LV  = [:Hangul_Syllable_Type = LV:];
+$LVT = [:Hangul_Syllable_Type = LVT:];
+
+$HangulSyllable = $L+ | ($L* ($LV? $V+ | $LV | $LVT) $T*) | $T+;
+
+#
+#  Forward Break Rules
+#
+$CR $LF;
+([^$Control] | $HangulSyllable) $Extend*;
+.;
+
+
+#
+#  Reverse Rule, back up to the beginning of some preceding grapheme cluster.
+#
+! ($Extend | $V | $T )*   ($LF $CR | ($LV | $LVT)?$L* | .);
Index: l10n/i18npool/source/breakiterator/data/char_ta.txt
diff -u l10n/i18npool/source/breakiterator/data/char_ta.txt:1.2 l10n/i18npool/source/breakiterator/data/char_ta.txt:removed
--- l10n/i18npool/source/breakiterator/data/char_ta.txt:1.2	Mon Oct 17 08:42:47 2005
+++ l10n/i18npool/source/breakiterator/data/char_ta.txt	Tue Sep  2 00:59:11 2008
@@ -1,46 +0,0 @@
-#
-#   Copyright (C) 2002-2003, International Business Machines Corporation and others.
-#       All Rights Reserved.
-#
-#   file:  char.txt 
-#
-#   ICU Character Break Rules, also known as Grapheme Cluster Boundaries
-#      See Unicode Standard Annex #29.
-#      These rules are based on TR29 Version 4.0.0
-#
-
-#
-#  Character Class Definitions.
-#    The names are those from TR29.
-#
-$CR = \r;
-$LF = \n;
-$Control    = [[:Zl:] [:Zp:] [:Cc:] [:Cf:]];
-
-$TAMIL = [ \u0bc1-\u0bc2 \u0bc6-\u0bc8 \u0bca-\u0bcc ];
-$Extend     = [[:Grapheme_Extend = TRUE:] $TAMIL]; 
-
-#
-# Korean Syllable Definitions
-#
-$L   = [:Hangul_Syllable_Type = L:];
-$V   = [:Hangul_Syllable_Type = V:];
-$T   = [:Hangul_Syllable_Type = T:];
-
-$LV  = [:Hangul_Syllable_Type = LV:];
-$LVT = [:Hangul_Syllable_Type = LVT:];
-
-$HangulSyllable = $L+ | ($L* ($LV? $V+ | $LV | $LVT) $T*) | $T+;
-
-#
-#  Forward Break Rules
-#
-$CR $LF;
-([^$Control] | $HangulSyllable) $Extend*;
-.;
-
-
-#
-#  Reverse Rule, back up to the beginning of some preceding grapheme cluster.
-#
-! ($Extend | $V | $T )*   ($LF $CR | ($LV | $LVT)?$L* | .);
Index: l10n/i18npool/source/localedata/LocaleNode.cxx
diff -u l10n/i18npool/source/localedata/LocaleNode.cxx:1.29 l10n/i18npool/source/localedata/LocaleNode.cxx:1.29.16.1
--- l10n/i18npool/source/localedata/LocaleNode.cxx:1.29	Thu Apr 10 02:04:34 2008
+++ l10n/i18npool/source/localedata/LocaleNode.cxx	Mon Aug 18 21:26:23 2008
@@ -1449,15 +1449,18 @@
     if (forbidNode)    {
      	of.writeParameter( "forbiddenBegin", forbidNode -> getChildAt(0)->getValue());
      	of.writeParameter( "forbiddenEnd", forbidNode -> getChildAt(1)->getValue());
+     	of.writeParameter( "hangingChars", forbidNode -> getChildAt(2)->getValue());
     } else {
      	of.writeParameter( "forbiddenBegin", ::rtl::OUString());
      	of.writeParameter( "forbiddenEnd", ::rtl::OUString());
+     	of.writeParameter( "hangingChars", ::rtl::OUString());
     }
 	of.writeAsciiString("\nstatic const sal_Unicode* LCForbiddenCharactersArray[] = {\n");
 	of.writeAsciiString("\tforbiddenBegin,\n");
-	of.writeAsciiString("\tforbiddenEnd\n");
+	of.writeAsciiString("\tforbiddenEnd,\n");
+	of.writeAsciiString("\thangingChars\n");
 	of.writeAsciiString("};\n\n");
-	of.writeFunction("getForbiddenCharacters_", "2", "LCForbiddenCharactersArray");
+	of.writeFunction("getForbiddenCharacters_", "3", "LCForbiddenCharactersArray");
 
     if (breakNode) {
      	of.writeParameter( "EditMode", breakNode -> getChildAt(0)->getValue());
Index: l10n/i18npool/source/localedata/localedata.cxx
diff -u l10n/i18npool/source/localedata/localedata.cxx:1.59 l10n/i18npool/source/localedata/localedata.cxx:1.59.16.1
--- l10n/i18npool/source/localedata/localedata.cxx:1.59	Thu Apr 10 02:05:23 2008
+++ l10n/i18npool/source/localedata/localedata.cxx	Mon Aug 18 21:26:23 2008
@@ -999,6 +999,21 @@
         }
 }
 
+OUString SAL_CALL
+LocaleData::getHangingCharacters( const Locale& rLocale ) throw(RuntimeException)
+{
+        sal_Int16 LCForbiddenCharactersCount = 0;
+        sal_Unicode **LCForbiddenCharactersArray = NULL;
+
+        MyFunc_Type func = (MyFunc_Type) getFunctionSymbol( rLocale, "getForbiddenCharacters" );
+
+        if ( func ) {
+            LCForbiddenCharactersArray = func(LCForbiddenCharactersCount);
+            return OUString(LCForbiddenCharactersArray[2]);
+        }
+
+        return OUString();
+}
 
 Sequence< OUString > SAL_CALL
 LocaleData::getBreakIteratorRules( const Locale& rLocale  ) throw(RuntimeException)
Index: l10n/i18npool/source/localedata/data/bn_BD.xml
diff -u l10n/i18npool/source/localedata/data/bn_BD.xml:1.3 l10n/i18npool/source/localedata/data/bn_BD.xml:1.3.186.1
--- l10n/i18npool/source/localedata/data/bn_BD.xml:1.3	Thu Apr 20 06:31:30 2006
+++ l10n/i18npool/source/localedata/data/bn_BD.xml	Mon Sep  1 11:05:47 2008
@@ -151,6 +151,13 @@
   </LC_CURRENCY>
   <LC_TRANSLITERATION ref="en_US"/>
   <LC_MISC>
+    <BreakIteratorRules>
+      <EditMode/>
+      <DictionaryMode/>
+      <WordCountMode/>
+      <CharacterMode>char_in</CharacterMode>
+      <LineMode/>
+    </BreakIteratorRules>
     <ReservedWords>
       <trueWord>সত্য</trueWord>
       <falseWord>মিথ্যা</falseWord>
Index: l10n/i18npool/source/localedata/data/bn_IN.xml
diff -u l10n/i18npool/source/localedata/data/bn_IN.xml:1.4 l10n/i18npool/source/localedata/data/bn_IN.xml:1.4.12.1
--- l10n/i18npool/source/localedata/data/bn_IN.xml:1.4	Tue May 13 07:06:42 2008
+++ l10n/i18npool/source/localedata/data/bn_IN.xml	Mon Sep  1 11:05:47 2008
@@ -316,6 +316,13 @@
   </LC_CURRENCY>
   <LC_TRANSLITERATION ref="en_US"/>
   <LC_MISC>
+    <BreakIteratorRules>
+      <EditMode/>
+      <DictionaryMode/>
+      <WordCountMode/>
+      <CharacterMode>char_in</CharacterMode>
+      <LineMode/>
+    </BreakIteratorRules>
     <ReservedWords>
       <trueWord>সত্য</trueWord>
       <falseWord>মিথ্যা</falseWord>
Index: l10n/i18npool/source/localedata/data/gu_IN.xml
diff -u l10n/i18npool/source/localedata/data/gu_IN.xml:1.5 l10n/i18npool/source/localedata/data/gu_IN.xml:1.5.4.1
--- l10n/i18npool/source/localedata/data/gu_IN.xml:1.5	Wed Jul  2 03:07:00 2008
+++ l10n/i18npool/source/localedata/data/gu_IN.xml	Mon Sep  1 17:44:31 2008
@@ -146,6 +146,13 @@
 </LC_CURRENCY>
 <LC_TRANSLITERATION ref="en_US"/>
 <LC_MISC>
+<BreakIteratorRules>
+<EditMode/>
+<DictionaryMode/>
+<WordCountMode/>
+<CharacterMode>char_in</CharacterMode>
+<LineMode/>
+</BreakIteratorRules>
 <ReservedWords>
 <trueWord>સહી</trueWord>
 <falseWord>ગલત</falseWord>
Index: l10n/i18npool/source/localedata/data/hi_IN.xml
diff -u l10n/i18npool/source/localedata/data/hi_IN.xml:1.14 l10n/i18npool/source/localedata/data/hi_IN.xml:1.14.4.1
--- l10n/i18npool/source/localedata/data/hi_IN.xml:1.14	Wed Jul  2 03:07:31 2008
+++ l10n/i18npool/source/localedata/data/hi_IN.xml	Mon Sep  1 11:05:47 2008
@@ -358,6 +358,13 @@
 </LC_CURRENCY>
 <LC_TRANSLITERATION ref="en_US"/>
 <LC_MISC>
+<BreakIteratorRules>
+<EditMode/>
+<DictionaryMode/>
+<WordCountMode/>
+<CharacterMode>char_in</CharacterMode>
+<LineMode/>
+</BreakIteratorRules>
 <ReservedWords>
 <trueWord>सही</trueWord>
 <falseWord>गलत</falseWord>
Index: l10n/i18npool/source/localedata/data/ja_JP.xml
diff -u l10n/i18npool/source/localedata/data/ja_JP.xml:1.17 l10n/i18npool/source/localedata/data/ja_JP.xml:1.17.26.2
--- l10n/i18npool/source/localedata/data/ja_JP.xml:1.17	Mon Jan 28 07:35:35 2008
+++ l10n/i18npool/source/localedata/data/ja_JP.xml	Mon Sep  1 17:38:27 2008
@@ -503,6 +503,7 @@
     <ForbiddenCharacters>
       <ForbiddenLineBeginCharacters>!%),.:;?]}¢°’”‰′″℃、。々〉》」』】〕ぁぃぅぇぉっゃゅょゎ゛゜ゝゞァィゥェォッャュョヮヵヶ・ーヽヾ!%),.:;?]}。」、・ァィゥェォャュョッー゙゚¢</ForbiddenLineBeginCharacters>
       <ForbiddenLineEndCharacters>$([¥{£¥‘“〈《「『【〔$([{「£¥</ForbiddenLineEndCharacters>
+      <LineBreakHangingCharacters>、。,.</LineBreakHangingCharacters>
     </ForbiddenCharacters>
     <ReservedWords>
       <trueWord>true</trueWord>
Index: l10n/i18npool/source/localedata/data/kn_IN.xml
diff -u l10n/i18npool/source/localedata/data/kn_IN.xml:1.9 l10n/i18npool/source/localedata/data/kn_IN.xml:1.9.4.1
--- l10n/i18npool/source/localedata/data/kn_IN.xml:1.9	Wed Jul  2 03:09:49 2008
+++ l10n/i18npool/source/localedata/data/kn_IN.xml	Mon Sep  1 17:44:31 2008
@@ -146,6 +146,13 @@
 </LC_CURRENCY>
 <LC_TRANSLITERATION ref="en_US"/>
 <LC_MISC>
+<BreakIteratorRules>
+<EditMode/>
+<DictionaryMode/>
+<WordCountMode/>
+<CharacterMode>char_in</CharacterMode>
+<LineMode/>
+</BreakIteratorRules>
 <ReservedWords>
 <trueWord>ಸಹೀ</trueWord>
 <falseWord>ಗಲತ್</falseWord>
Index: l10n/i18npool/source/localedata/data/ko_KR.xml
diff -u l10n/i18npool/source/localedata/data/ko_KR.xml:1.22 l10n/i18npool/source/localedata/data/ko_KR.xml:1.22.186.1
--- l10n/i18npool/source/localedata/data/ko_KR.xml:1.22	Thu Apr 20 06:47:11 2006
+++ l10n/i18npool/source/localedata/data/ko_KR.xml	Mon Aug 18 21:26:23 2008
@@ -580,6 +580,7 @@
     <ForbiddenCharacters>
       <ForbiddenLineBeginCharacters>!%),.:;?]}¢¢?'"′″℃>〉>》」』】〕!%),.:;?]}。」、・ ゙゚</ForbiddenLineBeginCharacters>
       <ForbiddenLineEndCharacters>$(¥£[\{£¥'"<<《「『【〔$([{₩「</ForbiddenLineEndCharacters>
+      <LineBreakHangingCharacters>!,.:;?、。!,.:;?</LineBreakHangingCharacters>
     </ForbiddenCharacters>
     <ReservedWords>
       <trueWord>ì°¸</trueWord>
Index: l10n/i18npool/source/localedata/data/locale.dtd
diff -u l10n/i18npool/source/localedata/data/locale.dtd:1.24 l10n/i18npool/source/localedata/data/locale.dtd:1.24.26.1
--- l10n/i18npool/source/localedata/data/locale.dtd:1.24	Mon Jan 28 07:36:04 2008
+++ l10n/i18npool/source/localedata/data/locale.dtd	Mon Aug 18 21:26:23 2008
@@ -403,7 +403,7 @@
 
 <!ELEMENT LC_MISC (ForbiddenCharacters?, BreakIteratorRules?, ReservedWords?)>
 <!ATTLIST LC_MISC %RefLocale;>
-<!ELEMENT ForbiddenCharacters (ForbiddenLineBeginCharacters, ForbiddenLineEndCharacters)>
+<!ELEMENT ForbiddenCharacters (ForbiddenLineBeginCharacters, ForbiddenLineEndCharacters, LineBreakHangingCharacters)>
 <!ELEMENT ForbiddenLineBeginCharacters (#PCDATA)>
 <!ELEMENT ForbiddenLineEndCharacters (#PCDATA)>
 
Index: l10n/i18npool/source/localedata/data/ml_IN.xml
diff -u l10n/i18npool/source/localedata/data/ml_IN.xml:1.2 l10n/i18npool/source/localedata/data/ml_IN.xml:1.2.182.1
--- l10n/i18npool/source/localedata/data/ml_IN.xml:1.2	Thu May  4 02:16:24 2006
+++ l10n/i18npool/source/localedata/data/ml_IN.xml	Mon Sep  1 17:44:31 2008
@@ -314,6 +314,13 @@
   </LC_CURRENCY>
   <LC_TRANSLITERATION ref="en_US"/>
   <LC_MISC>
+    <BreakIteratorRules>
+      <EditMode/>
+      <DictionaryMode/>
+      <WordCountMode/>
+      <CharacterMode>char_in</CharacterMode>
+      <LineMode/>
+    </BreakIteratorRules>
     <ReservedWords>
       <trueWord>അതെ</trueWord>
       <falseWord>അല്ല</falseWord>
Index: l10n/i18npool/source/localedata/data/or_IN.xml
diff -u l10n/i18npool/source/localedata/data/or_IN.xml:1.4 l10n/i18npool/source/localedata/data/or_IN.xml:1.4.4.1
--- l10n/i18npool/source/localedata/data/or_IN.xml:1.4	Wed Jul  2 03:11:42 2008
+++ l10n/i18npool/source/localedata/data/or_IN.xml	Mon Sep  1 17:44:31 2008
@@ -327,6 +327,13 @@
     <Transliteration unoid="IGNORE_CASE"/>
   </LC_TRANSLITERATION>
   <LC_MISC>
+    <BreakIteratorRules>
+      <EditMode/>
+      <DictionaryMode/>
+      <WordCountMode/>
+      <CharacterMode>char_in</CharacterMode>
+      <LineMode/>
+    </BreakIteratorRules>
     <ReservedWords>
       <trueWord>ସତ</trueWord>
       <falseWord>ମିଛ</falseWord>
Index: l10n/i18npool/source/localedata/data/pa_IN.xml
diff -u l10n/i18npool/source/localedata/data/pa_IN.xml:1.5 l10n/i18npool/source/localedata/data/pa_IN.xml:1.5.186.1
--- l10n/i18npool/source/localedata/data/pa_IN.xml:1.5	Thu Apr 20 06:50:32 2006
+++ l10n/i18npool/source/localedata/data/pa_IN.xml	Mon Sep  1 11:05:47 2008
@@ -168,6 +168,13 @@
   </LC_CURRENCY>
   <LC_TRANSLITERATION ref="en_US"/>
   <LC_MISC>
+    <BreakIteratorRules>
+      <EditMode/>
+      <DictionaryMode/>
+      <WordCountMode/>
+      <CharacterMode>char_in</CharacterMode>
+      <LineMode/>
+    </BreakIteratorRules>
     <ReservedWords>
       <trueWord>ਸਹੀ</trueWord>
       <falseWord>ਗਲਤ</falseWord>
Index: l10n/i18npool/source/localedata/data/ta_IN.xml
diff -u l10n/i18npool/source/localedata/data/ta_IN.xml:1.8 l10n/i18npool/source/localedata/data/ta_IN.xml:1.8.4.1
--- l10n/i18npool/source/localedata/data/ta_IN.xml:1.8	Wed Jul  2 03:14:34 2008
+++ l10n/i18npool/source/localedata/data/ta_IN.xml	Mon Sep  1 11:05:48 2008
@@ -146,6 +146,13 @@
 </LC_CURRENCY>
 <LC_TRANSLITERATION ref="en_US"/>
 <LC_MISC>
+<BreakIteratorRules>
+<EditMode/>
+<DictionaryMode/>
+<WordCountMode/>
+<CharacterMode>char_in</CharacterMode>
+<LineMode/>
+</BreakIteratorRules>
 <ReservedWords>
 <trueWord>ஸரி</trueWord>
 <falseWord>தப்ப</falseWord>
Index: l10n/i18npool/source/localedata/data/te_IN.xml
diff -u l10n/i18npool/source/localedata/data/te_IN.xml:1.9 l10n/i18npool/source/localedata/data/te_IN.xml:1.9.4.1
--- l10n/i18npool/source/localedata/data/te_IN.xml:1.9	Wed Jul  2 03:14:53 2008
+++ l10n/i18npool/source/localedata/data/te_IN.xml	Mon Sep  1 11:05:48 2008
@@ -145,6 +145,13 @@
 </LC_CURRENCY>
 <LC_TRANSLITERATION ref="en_US"/>
 <LC_MISC>
+<BreakIteratorRules>
+<EditMode/>
+<DictionaryMode/>
+<WordCountMode/>
+<CharacterMode>char_in</CharacterMode>
+<LineMode/>
+</BreakIteratorRules>
 <ReservedWords>
 <trueWord>నిజము</trueWord>
 <falseWord>అపాదము</falseWord>
Index: l10n/i18npool/source/localedata/data/zh_CN.xml
diff -u l10n/i18npool/source/localedata/data/zh_CN.xml:1.21 l10n/i18npool/source/localedata/data/zh_CN.xml:1.21.4.1
--- l10n/i18npool/source/localedata/data/zh_CN.xml:1.21	Wed Jul  2 03:15:57 2008
+++ l10n/i18npool/source/localedata/data/zh_CN.xml	Mon Aug 18 21:26:23 2008
@@ -430,6 +430,7 @@
 <ForbiddenCharacters>
 <ForbiddenLineBeginCharacters>:!),.:;?]}¢'"、。〉》」』】〕〗〞︰︱︳﹐、﹒﹔﹕﹖﹗﹚﹜﹞!),.:;?|}︴︶︸︺︼︾﹀﹂﹄﹏、~¢々‖•·ˇˉ―--′</ForbiddenLineBeginCharacters>
 <ForbiddenLineEndCharacters>([{£¥'"‵〈《「『【〔〖([{£¥〝︵︷︹︻︽︿﹁﹃﹙﹛﹝({</ForbiddenLineEndCharacters>
+<LineBreakHangingCharacters>!,.:;?、。!,.:;?</LineBreakHangingCharacters>
 </ForbiddenCharacters>
 <ReservedWords>
 <trueWord>真</trueWord>
Index: l10n/i18npool/source/localedata/data/zh_TW.xml
diff -u l10n/i18npool/source/localedata/data/zh_TW.xml:1.18 l10n/i18npool/source/localedata/data/zh_TW.xml:1.18.20.1
--- l10n/i18npool/source/localedata/data/zh_TW.xml:1.18	Wed Mar  5 10:45:25 2008
+++ l10n/i18npool/source/localedata/data/zh_TW.xml	Mon Aug 18 21:26:23 2008
@@ -359,6 +359,7 @@
 <ForbiddenCharacters>
 <ForbiddenLineBeginCharacters>!),.:;?]}¢·--'"¨•′、。〉》」』】〕〞︰︱︳︴︶︸︺︼︾﹀﹂﹄﹏﹐、﹒﹔﹕﹖﹗﹚﹜﹞!),.:;?|}、</ForbiddenLineBeginCharacters>
 <ForbiddenLineEndCharacters>([{£¥'"‵〈《「『【〔〝︵︷︹︻︽︿﹁﹃﹙﹛﹝({</ForbiddenLineEndCharacters>
+<LineBreakHangingCharacters>!,.:;?、。!,.:;?</LineBreakHangingCharacters>
 </ForbiddenCharacters>
 <ReservedWords>
 <trueWord>真</trueWord>
Index: l10n/i18npool/source/registerservices/registerservices.cxx
diff -u l10n/i18npool/source/registerservices/registerservices.cxx:1.44 l10n/i18npool/source/registerservices/registerservices.cxx:1.44.16.2
--- l10n/i18npool/source/registerservices/registerservices.cxx:1.44	Thu Apr 10 02:08:28 2008
+++ l10n/i18npool/source/registerservices/registerservices.cxx	Mon Sep  1 11:04:41 2008
@@ -65,7 +65,6 @@
 #include <breakiteratorImpl.hxx>
 #include <breakiterator_cjk.hxx>
 #include <breakiterator_th.hxx>
-#include <breakiterator_hi.hxx>
 #include <breakiterator_unicode.hxx>
 
 #include <indexentrysupplier.hxx>
@@ -152,9 +151,9 @@
 IMPL_CREATEINSTANCE( BreakIterator_Unicode )
 IMPL_CREATEINSTANCE( BreakIterator_ja )
 IMPL_CREATEINSTANCE( BreakIterator_zh )
+IMPL_CREATEINSTANCE( BreakIterator_zh_TW )
 IMPL_CREATEINSTANCE( BreakIterator_ko )
 IMPL_CREATEINSTANCE( BreakIterator_th )
-IMPL_CREATEINSTANCE( BreakIterator_hi )
 IMPL_CREATEINSTANCE_MSF( ChapterCollator )
 IMPL_CREATEINSTANCE_MSF( CollatorImpl )
 IMPL_CREATEINSTANCE( Collator_Unicode )
@@ -369,15 +368,15 @@
     {   "com.sun.star.i18n.BreakIterator_zh",
         "com.sun.star.i18n.BreakIterator_zh",
         &BreakIterator_zh_CreateInstance },
+    {   "com.sun.star.i18n.BreakIterator_zh_TW",
+        "com.sun.star.i18n.BreakIterator_zh_TW",
+        &BreakIterator_zh_TW_CreateInstance },
     {   "com.sun.star.i18n.BreakIterator_ko",
         "com.sun.star.i18n.BreakIterator_ko",
         &BreakIterator_ko_CreateInstance },
     {   "com.sun.star.i18n.BreakIterator_th",
         "com.sun.star.i18n.BreakIterator_th",
         &BreakIterator_th_CreateInstance },
-    {   "com.sun.star.i18n.BreakIterator_hi",
-        "com.sun.star.i18n.BreakIterator_hi",
-        &BreakIterator_hi_CreateInstance },
     {   "com.sun.star.i18n.Collator",
         "com.sun.star.i18n.Collator",
         &CollatorImpl_CreateInstance },


Index: openoffice.org.spec
===================================================================
RCS file: /cvs/pkgs/rpms/openoffice.org/devel/openoffice.org.spec,v
retrieving revision 1.1633
retrieving revision 1.1634
diff -u -r1.1633 -r1.1634
--- openoffice.org.spec	1 Sep 2008 12:09:08 -0000	1.1633
+++ openoffice.org.spec	2 Sep 2008 08:37:17 -0000	1.1634
@@ -78,7 +78,7 @@
 Patch8:  openoffice.org-2.0.2.rh188467.printingdefaults.patch
 Patch9:  openoffice.org-2.0.2.ooo64508.vcl.honourfontconfighinting.patch
 Patch10: openoffice.org-2.0.4.rhXXXXXX.padmin.nospadmin.patch
-Patch11: openoffice.org.2.0.4.ooo80412.i18npool.extendgrapheme.patch
+Patch11: workspace.i18n45.patch
 Patch12: openoffice.org-2.1.0.ooo65491.psprint.enablenups.patch
 Patch13: openoffice.org-2.0.3.rh127576.gtkunixprintdialog.localize
 Patch14: openoffice.org-2.2.0.ooo74188.sw.cursorinsideglyph.patch
@@ -109,6 +109,7 @@
 Patch39: workspace.fpicker8.patch
 Patch40: workspace.cmcfixes49.patch
 Patch41: openoffice.org-3.0.0.ooo91924.svx.consistentordering.patch
+Patch42: openoffice.org-3.0.0.ooo93366.fpicker_in_main.patch
 
 %define instdir %{_libdir}
 %define baseinstdir %{instdir}/openoffice.org
@@ -1257,7 +1258,7 @@
 %patch8  -p1
 %patch9  -p1 -b .ooo64508.vcl.honourfontconfighinting.patch
 %patch10 -p1 -b .rhXXXXXX.padmin.nospadmin.patch
-%patch11 -p1 -b .ooo80412.i18npool.extendgrapheme.patch
+%patch11 -p1 -b .workspace.i18n45.patch
 %patch12 -p1 -b .ooo65491.psprint.enablenups.patch
 cat %{PATCH13} >> svtools/source/dialogs/localize.sdf
 %patch14 -p1 -b .ooo74188.sw.cursorinsideglyph.patch
@@ -1288,6 +1289,7 @@
 %patch39 -p1 -b .workspace.fpicker8.patch
 %patch40 -p0 -b .workspace.cmcfixes49.patch
 %patch41 -p1 -b .ooo91924.svx.consistentordering.patch
+%patch42 -p1 -b .ooo93366.fpicker_in_main.patch
 
 %build
 echo build start time is `date`, diskspace: `df -h . | tail -n 1`
@@ -3646,6 +3648,7 @@
 * Mon Sep 01 2008 Caolán McNamara <caolanm at redhat.com> - 1:3.0.0-4.2
 - Resolves: rhbz#460755 TryExec oowriter on brwriter.desktop etc
 - defuzz patches
+- add openoffice.org-3.0.0.ooo93366.fpicker_in_main.patch
 
 * Fri Aug 29 2008 Caolán McNamara <caolanm at redhat.com> - 1:3.0.0-4.1
 - next milestone


--- openoffice.org.2.0.4.ooo80412.i18npool.extendgrapheme.patch DELETED ---




More information about the fedora-extras-commits mailing list