>> Edit article
이름
제목
패스워드
: 패치는 아래 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 jsStatusString(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, ("GtkMozEmbedChrome::SetTitle")); nsString newTitleString(aTitle); mTitleUnicode = aTitle; - mTitle = newTitleString.ToNewCString(); + 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