: 패치는 아래 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)--내 서명