>> Delete Reply from No. 0 article
No. RE: 모질라 0.9(pre) Embedded 패치

등록 2001-05-01 10:28:00     조회 5
이름 철이    

		: 패치는 아래 URL에서 다운받으실 수 있습니다.
:
: <A HREF="http://www.zuguri.org/linux/mozilla/mozilla-title2.patch">http://www.zuguri.org/linux/mozilla/mozilla-title2.
: patch</A>
 0.8.1 버전은 소스의 라인 수가 변경 되어서 실제 패치 화일 중에 가르키는 라인
  수만 조정하면 패치는 가능합니다.
  gcc 2.95.3으로 패치를 적용해서 만든 mozilla가 있기는 합니다만 galeon이 아직
  0.8.1을 지원하지 않아서 잘 작동하는지 확인드릴 수는 없을 것 같고,
  제가 조정한 0.8.1용 패치는 다음과 같습니다.
  도움이 되었길 빕니다.
 --- mozilla/widget/src/gtk/nsWidget.cpp.orig	Tue Nov 14 14:06:29 2000
+++ mozilla/widget/src/gtk/nsWidget.cpp	Tue Nov 14 14:07:44 2000
@@ -3106,15 +3106,18 @@
 {
   GdkWindow *parent = gdk_window_get_parent(gdkWindow);
   nsWidget *root_win = nsnull;
+  nsWidget *candidate = nsnull;
   gpointer data;
 
   while (parent) {
     gdk_window_get_user_data(parent, &data);
     if (GTK_IS_OBJECT(data)) {
       root_win = (nsWidget *) gtk_object_get_data(GTK_OBJECT(data), "nsWindow");
+      if (!root_win && candidate) return candidate;
       if(root_win && root_win->mIsToplevel == PR_TRUE){
 	return root_win;
       }
+      candidate = root_win;
     }
     parent = gdk_window_get_parent(parent);
   }
--- mozilla/embedding/browser/gtk/src/GtkMozEmbedChrome.cpp.orig	Mon Nov 13 11:46:51 2000
+++ mozilla/embedding/browser/gtk/src/GtkMozEmbedChrome.cpp	Mon Nov 13 13:56:07 2000
@@ -21,6 +21,8 @@
 
 #include "GtkMozEmbedChrome.h"
 #include "GtkMozEmbedStream.h"
+#include "nsICharsetConverterManager.h"
+#include "nsIPlatformCharset.h"
 #include "nsCWebBrowser.h"
 #include "nsIURI.h"
 #include "nsNetUtil.h"
@@ -82,6 +84,36 @@
   sBrowsers->RemoveElement((void *)this);
 }
 
+char *
+getMbString(nsString uni)
+{
+    nsresult rv;
+    char *platformText = 0;
+    PRInt32 platformLen;
+    static nsCOMPtr<nsIUnicodeEncoder> encoder = 0;
+
+    if (!encoder) {
+	nsAutoString platformCharset;
+	nsCOMPtr <nsIPlatformCharset> platformCharsetService = do_GetService(NS_PLATFORMCHARSET_CONTRACTID, &rv);
+	if (NS_SUCCEEDED(rv)) rv = platformCharsetService->GetCharset(kPlatformCharsetSel_Menu, platformCharset);
+	if (NS_FAILED(rv))
+	    platformCharset.AssignWithConversion("ISO-8859-1");
+	NS_WITH_SERVICE(nsICharsetConverterManager, ccm, NS_CHARSETCONVERTERMANAGER_CONTRACTID, &rv);
+	rv = ccm->GetUnicodeEncoder(&platformCharset, getter_AddRefs(encoder));
+    }
+
+    PRInt32 len = uni.Length();
+    encoder->GetMaxLength(uni.GetUnicode(), len, &platformLen);
+    if (platformLen) {
+	platformText = NS_REINTERPRET_CAST(char*, nsMemory::Alloc(platformLen + sizeof(char)));
+	if (platformText) {
+	    rv = encoder->Convert(uni.GetUnicode(), &len, platformText, &platformLen);
+	    (platformText)[platformLen] = '';
+	}
+    }
+    return platformText;
+}
+
 // nsISupports interface
 

 NS_IMPL_ADDREF(GtkMozEmbedChrome)
@@ -372,7 +404,7 @@
     case STATUS_SCRIPT:
       {
 	nsString jsStatusStrin
g(status);
-	mJSStatus = jsStatusString.ToNewCString();
+	mJSStatus = getMbString(jsStatusString);
 	PR_LOG(mozEmbedLm,
 PR_LOG_DEBUG, ("js status is %s", (const char *)mJSStatus));
 	// let our chrome listener know that the JS message has
 changed.
 	if (mChromeListener)
@@ -385,7 +417,7 @@
     case STATUS_LINK:
       {
 	nsString linkMessageString
(status);
-	mLinkMessage = linkMessageString.ToNewCString();
+	mLinkMessage = getMbString(linkMessageString);
 	PR_LOG(
mozEmbedLm, PR_LOG_DEBUG, ("message is %s", (const char *)mLinkMessage));
 	// notify the chrome listener that the link
 message has changed
 	if (mChromeListener)
@@ -811,7 +843,7 @@
   PR_LOG(mozEmbedLm, PR_LOG_DEBUG, ("GtkMozEmbedChrom
e::SetTitle"));
   nsString newTitleString(aTitle);
   mTitleUnicode = aTitle;
-  mTitle = newTitleString.ToNewCStrin
g();
+  mTitle = getMbString(newTitleString);
   PR_LOG(mozEmbedLm, PR_LOG_DEBUG, ("title is %s", (const char *)mTitle
));
   // let the listener know that the title has changed
   if (mChromeListener)--내 서명
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved