0.8.1부터 gtkmozembed2.cpp를 사용하도록 되어 있습니다.
GtkMozEmbedChrome.cpp를 패치해도 소용이 없는 것 같습니다.
지금 0.8.1을 패치하여 빌드중입니다.
테스트한 결과는 잠시후 다시 쓰도록 하겠습니다.
from Marzio Lee
: : 패치는 아래 URL에서 다운받으실 수 있습니다.
: :
: : <A HREF="http://www.zuguri.org/linux/mozilla/mozilla-title2.patch">http://www.zuguri.org/linux/mozilla/mozilla-title
: : 2.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)
:
: --
: 내 서명--이 곳에 서명을 적어주십시오.
"서명"