summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schlemmer <azarah@gentoo.org>2003-03-22 06:15:13 +0000
committerMartin Schlemmer <azarah@gentoo.org>2003-03-22 06:15:13 +0000
commit912a46b7ee055d3b7c84a2dc5b6193c39eab930c (patch)
tree3b54bb48543bc96531de761cf6185c0a8a87ef83 /net-www
parentfix pkg_mv_plugins to only try and move things if is not a symlink (diff)
downloadhistorical-912a46b7ee055d3b7c84a2dc5b6193c39eab930c.tar.gz
historical-912a46b7ee055d3b7c84a2dc5b6193c39eab930c.tar.bz2
historical-912a46b7ee055d3b7c84a2dc5b6193c39eab930c.zip
gtk2 patch; cleanups
Diffstat (limited to 'net-www')
-rw-r--r--net-www/mozilla/ChangeLog8
-rw-r--r--net-www/mozilla/files/1.3/mozilla-1.3-gtk2.patch588
-rw-r--r--net-www/mozilla/files/digest-mozilla-1.3-r13
-rw-r--r--net-www/mozilla/files/xft.js3
-rw-r--r--net-www/mozilla/mozilla-1.3-r1.ebuild598
5 files changed, 1199 insertions, 1 deletions
diff --git a/net-www/mozilla/ChangeLog b/net-www/mozilla/ChangeLog
index 1faacdad9106..70d8a6f2c896 100644
--- a/net-www/mozilla/ChangeLog
+++ b/net-www/mozilla/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for net-www/mozilla
# Copyright 2002-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-www/mozilla/ChangeLog,v 1.88 2003/03/22 00:03:00 jayskwak Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-www/mozilla/ChangeLog,v 1.89 2003/03/22 06:15:13 azarah Exp $
+
+*mozilla-1.3-r1 (22 Mar 2003)
+
+ 22 Mar 2003; Martin Schlemmer <azarah@gentoo.org> mozilla-1.3-r1.ebuild :
+ Add Gtk2 patch. Add default/prefs/xft.js when Xft is enabled. Some other
+ long overdue cleanups.
*mozilla-1.3 (18 Mar 2003)
diff --git a/net-www/mozilla/files/1.3/mozilla-1.3-gtk2.patch b/net-www/mozilla/files/1.3/mozilla-1.3-gtk2.patch
new file mode 100644
index 000000000000..9026767d0a9e
--- /dev/null
+++ b/net-www/mozilla/files/1.3/mozilla-1.3-gtk2.patch
@@ -0,0 +1,588 @@
+--- mozilla/widget/src/gtk2/Makefile.in.gtk2 2002-12-28 02:14:45.000000000 +0100
++++ mozilla/widget/src/gtk2/Makefile.in 2003-03-11 14:05:45.000000000 +0100
+@@ -90,7 +90,7 @@
+ CFLAGS += $(MOZ_GTK2_CFLAGS)
+ CXXFLAGS += $(MOZ_GTK2_CFLAGS)
+
+-#DEFINES += -DUSE_XIM
++DEFINES += -DUSE_XIM
+
+ INCLUDES += \
+ -I$(srcdir)/../xpwidgets \
+--- mozilla/widget/src/gtk2/nsWindow.h.gtk2 2003-02-17 19:50:01.000000000 +0100
++++ mozilla/widget/src/gtk2/nsWindow.h 2003-03-13 10:14:36.000000000 +0100
+@@ -139,9 +139,11 @@
+ PRBool aDoCapture,
+ PRBool aConsumeRollupEvent);
+ NS_IMETHOD GetAttention();
++ NS_IMETHOD HideWindowChrome(PRBool aShouldHide);
+
+ // utility methods
+ void LoseFocus();
++ gint ConvertBorderStyles(nsBorderStyle bs);
+
+ // event callbacks
+ gboolean OnExposeEvent(GtkWidget *aWidget,
+@@ -239,6 +241,9 @@
+ static guint32 mLastButtonPressTime;
+
+ #ifdef USE_XIM
++ void IMEDestroyContext(void);
++ void IMESetFocus(void);
++ void IMELoseFocus(void);
+ void IMEComposeStart(void);
+ void IMEComposeText(const PRUnichar *aText,
+ const PRInt32 aLen,
+@@ -249,9 +254,14 @@
+ void IMEGetShellWindow(void);
+ GtkIMContext* IMEGetContext(void);
+ void IMECreateContext(GdkWindow* aGdkWindow);
++ PRBool IMFilterKeypress (GtkIMContext *context,
++ GdkEventKey *aEvent);
++
+
+ nsWindow* mIMEShellWindow;
+ static PLDHashTable gXICLookupTable;
++ static GdkEventKey* gIMEKeyEvent;
++ static PRBool gIMEStringCommited;
+ #endif
+
+ private:
+--- mozilla/widget/src/gtk2/nsWindow.cpp.gtk2 2003-02-21 02:09:17.000000000 +0100
++++ mozilla/widget/src/gtk2/nsWindow.cpp 2003-03-13 10:13:17.000000000 +0100
+@@ -179,6 +179,7 @@
+ nsWeakPtr gRollupWindow;
+
+ #ifdef USE_XIM
++static nsWindow *gIMEFocusWindow = NULL;
+
+ struct nsXICLookupEntry {
+ PLDHashEntryHdr mKeyHash;
+@@ -186,7 +187,9 @@
+ GtkIMContext* mXIC;
+ };
+
+-PLDHashTable nsWindow::gXICLookupTable;
++PLDHashTable nsWindow::gXICLookupTable;
++GdkEventKey* nsWindow::gIMEKeyEvent = NULL;
++PRBool nsWindow::gIMEStringCommited = PR_TRUE;
+
+ static void IM_commit_cb (GtkIMContext *context,
+ const gchar *str,
+@@ -257,61 +260,6 @@
+ #endif
+ }
+
+-#ifdef USE_XIM
+-void
+-nsWindow::IMEGetShellWindow(void)
+-{
+- GtkWidget* top_window = nsnull;
+- GetToplevelWidget(&top_window);
+- if (top_window) {
+- mIMEShellWindow = get_window_for_gtk_widget(top_window);
+- }
+-}
+-
+-GtkIMContext*
+-nsWindow::IMEGetContext()
+-{
+- if (!mIMEShellWindow) {
+- return NULL;
+- }
+- PLDHashEntryHdr* hash_entry;
+- nsXICLookupEntry* entry;
+-
+- hash_entry = PL_DHashTableOperate(&gXICLookupTable,
+- mIMEShellWindow, PL_DHASH_LOOKUP);
+-
+- if (hash_entry) {
+- entry = NS_REINTERPRET_CAST(nsXICLookupEntry *, hash_entry);
+- if (entry->mXIC) {
+- return entry->mXIC;
+- }
+- }
+- return NULL;
+-}
+-
+-void
+-nsWindow::IMECreateContext(GdkWindow* aGdkWindow)
+-{
+- PLDHashEntryHdr* hash_entry;
+- nsXICLookupEntry* entry;
+- GtkIMContext *im = gtk_im_multicontext_new();
+- if (im) {
+- hash_entry = PL_DHashTableOperate(&gXICLookupTable, this, PL_DHASH_ADD);
+- if (hash_entry) {
+- entry = NS_REINTERPRET_CAST(nsXICLookupEntry *, hash_entry);
+- entry->mShellWindow = this;
+- entry->mXIC = im;
+- }
+- gtk_im_context_set_client_window(im, aGdkWindow);
+- g_signal_connect(G_OBJECT(im), "commit",
+- G_CALLBACK(IM_commit_cb), this);
+- g_signal_connect(G_OBJECT(im), "preedit_changed",
+- G_CALLBACK(IM_preedit_changed_cb), this);
+- this->mIMEShellWindow = this;
+- }
+-}
+-#endif
+-
+ nsWindow::~nsWindow()
+ {
+ LOG(("nsWindow::~nsWindow() [%p]\n", (void *)this));
+@@ -397,22 +345,7 @@
+ }
+
+ #ifdef USE_XIM
+- GtkIMContext *im = IMEGetContext();
+- // If this is the focus window and we have an IM context we need
+- // to unset the focus on this window before we destroy the window.
+- if (im && gFocusWindow == this) {
+- LOGFOCUS((" gtk_im_context_focus_out() from Destroy()\n"));
+- gtk_im_context_focus_out(im);
+- }
+-
+- // if shell, delete GtkIMContext
+- if (im && mShell) {
+- gtk_im_context_reset(im);
+- PL_DHashTableOperate(&gXICLookupTable, this, PL_DHASH_REMOVE);
+- g_object_unref(G_OBJECT(im));
+- }
+-
+- mIMEShellWindow = nsnull;
++ IMEDestroyContext();
+ #endif
+
+ // make sure that we remove ourself as the focus window
+@@ -666,11 +599,7 @@
+ gFocusWindow = this;
+
+ #ifdef USE_XIM
+- GtkIMContext *im = IMEGetContext();
+- if (im && !mIsTopLevel) {
+- LOGFOCUS((" gtk_im_context_focus_in()\n"));
+- gtk_im_context_focus_in(im);
+- }
++ IMESetFocus();
+ #endif
+
+ LOGFOCUS((" widget now has focus - dispatching events [%p]\n",
+@@ -735,7 +664,11 @@
+ GtkWidget *widget =
+ get_gtk_widget_for_gdk_window(mDrawingarea->inner_window);
+ nsWindow *window = get_window_for_gtk_widget(widget);
+- return window->SetCursor(aCursor);
++ if (window) {
++ return window->SetCursor(aCursor);
++ }
++ else
++ return NS_OK;
+ }
+
+ // Only change cursor if it's actually been changed
+@@ -746,7 +679,12 @@
+
+ if (nsnull != newCursor) {
+ mCursor = aCursor;
++
++ if (!mContainer)
++ return NS_OK;
++
+ gdk_window_set_cursor(GTK_WIDGET(mContainer)->window, newCursor);
++
+ XFlush(GDK_DISPLAY());
+ }
+ }
+@@ -1161,17 +1099,8 @@
+ nsWindow::LoseFocus(void)
+ {
+ #ifdef USE_XIM
+- GtkIMContext *im = IMEGetContext();
+- if (im && !mIsTopLevel) {
+- LOGFOCUS((" gtk_im_context_focus_out()\n"));
+- gtk_im_context_focus_out(im);
+- IMEComposeStart();
+- IMEComposeText(NULL, 0, NULL, NULL);
+- IMEComposeEnd();
+- LOG(("gtk_im_context_focus_out\n"));
+- }
++ IMELoseFocus();
+ #endif
+-
+ // make sure that we reset our repeat counter so the next keypress
+ // for this widget will get the down event
+ mInKeyRepeat = PR_FALSE;
+@@ -1382,7 +1311,7 @@
+ nsWindow *containerWindow;
+ GetContainerWindow(&containerWindow);
+
+- if (!gFocusWindow) {
++ if (!gFocusWindow && !containerWindow) {
+ containerWindow->mActivatePending = PR_FALSE;
+ DispatchActivateEvent();
+ }
+@@ -1532,7 +1461,7 @@
+ #ifdef USE_XIM
+ GtkIMContext *im = IMEGetContext();
+ if (im) {
+- if (gtk_im_context_filter_keypress(im, aEvent)) {
++ if (IMFilterKeypress(im, aEvent)) {
+ LOGFOCUS((" keypress filtered by XIM\n"));
+ return TRUE;
+ }
+@@ -1616,7 +1545,7 @@
+ #ifdef USE_XIM
+ GtkIMContext *im = IMEGetContext();
+ if (im) {
+- if (gtk_im_context_filter_keypress(im, aEvent)) {
++ if (IMFilterKeypress(im, aEvent)) {
+ LOGFOCUS((" keypress filtered by XIM\n"));
+ return TRUE;
+ }
+@@ -2150,6 +2079,13 @@
+
+ // and the drawing area
+ mDrawingarea = moz_drawingarea_new(nsnull, mContainer);
++
++#if defined(USE_XIM) && !defined(XIM_CREATE_IC_AT_FOCUS)
++ if (mWindowType != eWindowType_popup) {
++ // create im context for shell
++ IMECreateContext(mShell->window);
++ }
++#endif /* XIM_CREATE_IC_AT_FOCUS && !XIM_CREATE_IC_AT_FOCUS*/
+ }
+ break;
+ case eWindowType_child: {
+@@ -2162,11 +2098,11 @@
+ gtk_widget_realize(GTK_WIDGET(mContainer));
+
+ mDrawingarea = moz_drawingarea_new(nsnull, mContainer);
++#if defined(USE_XIM) && !defined(XIM_CREATE_IC_AT_FOCUS)
++ // create im context for gtk container
++ IMECreateContext(GTK_WIDGET(mContainer)->window);
++#endif /* XIM_CREATE_IC_AT_FOCUS && !XIM_CREATE_IC_AT_FOCUS*/
+ }
+-#ifdef USE_XIM
+- // get mIMEShellWindow and keep it
+- IMEGetShellWindow();
+-#endif
+ }
+ break;
+ default:
+@@ -2211,13 +2147,6 @@
+ G_CALLBACK(property_notify_event_cb), NULL);
+ }
+
+-#ifdef USE_XIM
+- if (mShell) {
+- // init GtkIMContext for shell
+- IMECreateContext(mShell->window);
+- }
+-#endif
+-
+ if (mContainer) {
+ g_signal_connect_after(G_OBJECT(mContainer), "size_allocate",
+ G_CALLBACK(size_allocate_cb), NULL);
+@@ -2694,6 +2623,83 @@
+ }
+
+
++gint
++nsWindow::ConvertBorderStyles(nsBorderStyle bs)
++{
++ gint w = 0;
++
++ if (bs == eBorderStyle_default)
++ return -1;
++
++ if (bs & eBorderStyle_all)
++ w |= GDK_DECOR_ALL;
++ if (bs & eBorderStyle_border)
++ w |= GDK_DECOR_BORDER;
++ if (bs & eBorderStyle_resizeh)
++ w |= GDK_DECOR_RESIZEH;
++ if (bs & eBorderStyle_title)
++ w |= GDK_DECOR_TITLE;
++ if (bs & eBorderStyle_menu)
++ w |= GDK_DECOR_MENU;
++ if (bs & eBorderStyle_minimize)
++ w |= GDK_DECOR_MINIMIZE;
++ if (bs & eBorderStyle_maximize)
++ w |= GDK_DECOR_MAXIMIZE;
++ if (bs & eBorderStyle_close) {
++#ifdef DEBUG
++ printf("we don't handle eBorderStyle_close yet... please fix me\n");
++#endif /* DEBUG */
++ }
++
++ return w;
++}
++
++NS_IMETHODIMP
++nsWindow::HideWindowChrome(PRBool aShouldHide)
++{
++ if (!mShell) {
++ // Pass the request to the toplevel window
++ GtkWidget *topWidget = nsnull;
++ GetToplevelWidget(&topWidget);
++ nsWindow *topWindow = get_window_for_gtk_widget(topWidget);
++ if (topWindow)
++ return topWindow->HideWindowChrome(aShouldHide);
++ else
++ return NS_OK;
++ }
++
++ // Sawfish, metacity, and presumably other window managers get
++ // confused if we change the window decorations while the window
++ // is visible.
++#if GTK_CHECK_VERSION(2,2,0)
++ if (aShouldHide)
++ gdk_window_fullscreen (mShell->window);
++ else
++ gdk_window_unfullscreen (mShell->window);
++#else
++ gdk_window_hide(mShell->window);
++
++ gint wmd;
++ if (aShouldHide)
++ wmd = 0;
++ else
++ wmd = ConvertBorderStyles(mBorderStyle);
++
++ gdk_window_set_decorations(mShell->window, (GdkWMDecoration) wmd);
++
++ gdk_window_show(mShell->window);
++#endif
++
++ // For some window managers, adding or removing window decorations
++ // requires unmapping and remapping our toplevel window. Go ahead
++ // and flush the queue here so that we don't end up with a BadWindow
++ // error later when this happens (when the persistence timer fires
++ // and GetWindowPos is called)
++ XSync(GDK_DISPLAY(), False);
++
++ return NS_OK;
++}
++
+ PRBool
+ check_for_rollup(GdkWindow *aWindow, gdouble aMouseX, gdouble aMouseY,
+ PRBool aIsWheel)
+@@ -3662,6 +3668,77 @@
+ }
+
+ #ifdef USE_XIM
++void
++nsWindow::IMEGetShellWindow(void)
++{
++ GtkWidget* top_window = nsnull;
++ GetToplevelWidget(&top_window);
++ if (top_window) {
++ mIMEShellWindow = get_window_for_gtk_widget(top_window);
++ if (mIMEShellWindow) {
++ return;
++ }
++ }
++
++ // find deepest nsWindow
++ if (!mDrawingarea) {
++ return;
++ }
++ GdkWindow *parent = gdk_window_get_parent(mDrawingarea->inner_window);
++ while (parent) {
++ nsWindow *window = get_window_for_gdk_window(parent);
++ if (window == nsnull) {
++ break;
++ }
++ if (window->mContainer) {
++ mIMEShellWindow = window;
++ }
++ parent = gdk_window_get_parent (parent);
++ }
++}
++
++GtkIMContext*
++nsWindow::IMEGetContext()
++{
++ if (!mIMEShellWindow) {
++ return NULL;
++ }
++ PLDHashEntryHdr* hash_entry;
++ nsXICLookupEntry* entry;
++
++ hash_entry = PL_DHashTableOperate(&gXICLookupTable,
++ mIMEShellWindow, PL_DHASH_LOOKUP);
++
++ if (hash_entry) {
++ entry = NS_REINTERPRET_CAST(nsXICLookupEntry *, hash_entry);
++ if (entry->mXIC) {
++ return entry->mXIC;
++ }
++ }
++ return NULL;
++}
++
++void
++nsWindow::IMECreateContext(GdkWindow* aGdkWindow)
++{
++ PLDHashEntryHdr* hash_entry;
++ nsXICLookupEntry* entry;
++ GtkIMContext *im = gtk_im_multicontext_new();
++ if (im) {
++ hash_entry = PL_DHashTableOperate(&gXICLookupTable, this, PL_DHASH_ADD);
++ if (hash_entry) {
++ entry = NS_REINTERPRET_CAST(nsXICLookupEntry *, hash_entry);
++ entry->mShellWindow = this;
++ entry->mXIC = im;
++ }
++ gtk_im_context_set_client_window(im, aGdkWindow);
++ g_signal_connect(G_OBJECT(im), "commit",
++ G_CALLBACK(IM_commit_cb), this);
++ g_signal_connect(G_OBJECT(im), "preedit_changed",
++ G_CALLBACK(IM_preedit_changed_cb), this);
++ this->mIMEShellWindow = this;
++ }
++}
+
+ void
+ nsWindow::IMEComposeStart(void)
+@@ -3732,6 +3809,26 @@
+ DispatchEvent(&compEvent, status);
+ }
+
++PRBool
++nsWindow::IMFilterKeypress (GtkIMContext *context,
++ GdkEventKey *aEvent)
++{
++ gIMEKeyEvent = aEvent;
++ if (gtk_im_context_filter_keypress(context, aEvent)) {
++ /* return true if the keyevent is commited as string and
++ ** has been dispatched as TextEvent.
++ */
++ if( gIMEStringCommited ) {
++ return TRUE;
++ }
++ gIMEStringCommited = PR_TRUE;
++ }
++ gIMEKeyEvent = NULL;
++
++ /* the Keyevent is not filtered by IME */
++ return FALSE;
++}
++
+ /* static */
+ void
+ IM_preedit_changed_cb(GtkIMContext *context,
+@@ -3742,7 +3839,8 @@
+ PangoAttrList *feedback_list;
+
+ // call for focused window
+- nsWindow *window = gFocusWindow;
++ // if gFocusWindow is null, use the last focused gIMEFocusWindow
++ nsWindow *window = gFocusWindow ? gFocusWindow : gIMEFocusWindow;
+ if (!window) return;
+
+ // Should use cursor_pos ?
+@@ -3755,6 +3853,7 @@
+ if (!preedit_string || !*preedit_string) {
+ window->IMEComposeStart();
+ window->IMEComposeText(NULL, 0, NULL, NULL);
++ window->IMEComposeEnd();
+ return;
+ }
+
+@@ -3795,9 +3894,31 @@
+ glong uniStrLen;
+
+ // call for focused window
+- nsWindow *window = gFocusWindow;
++ // if gFocusWindow is null, use the last focused gIMEFocusWindow
++ nsWindow *window = gFocusWindow ? gFocusWindow : gIMEFocusWindow;
+ if (!window) return;
+
++ /* if the IME does not change the keystrock, we won't send it
++ * through the TextEvent.
++ */
++ nsWindow::gIMEStringCommited = PR_TRUE;
++ if ( nsWindow::gIMEKeyEvent )
++ {
++ char keyval_utf8[8]; /* should have at least 6 bytes of space */
++ gint keyval_utf8_len;
++ keyval_utf8_len = g_unichar_to_utf8(
++ gdk_keyval_to_unicode(nsWindow::gIMEKeyEvent->keyval),
++ keyval_utf8);
++
++ keyval_utf8[keyval_utf8_len] = '\0';
++ if ( strcmp(utf8_str, keyval_utf8) == 0)
++ {
++ nsWindow::gIMEStringCommited = PR_FALSE;
++ return;
++ }
++ nsWindow::gIMEKeyEvent = NULL;
++ }
++
+ uniStr = NULL;
+ uniStrLen = 0;
+ uniStr = g_utf8_to_utf16(utf8_str, -1, NULL, &uniStrLen, NULL);
+@@ -3941,4 +4062,61 @@
+ pango_attr_iterator_destroy(aFeedbackIterator);
+ }
+
++void
++nsWindow::IMELoseFocus(void)
++{
++ GtkIMContext *im = IMEGetContext();
++ if (!im) {
++ return;
++ }
++ gtk_im_context_focus_out(im);
++}
++
++void
++nsWindow::IMESetFocus(void)
++{
++ if (mWindowType == eWindowType_child && !mIMEShellWindow) {
++ IMEGetShellWindow();
++ }
++ GtkIMContext *im = IMEGetContext();
++#ifdef XIM_CREATE_IC_AT_FOCUS
++ if (!im && mIMEShellWindow) {
++ if (mIMEShellWindow->mShell) {
++ // init GtkIMContext for shell
++ mIMEShellWindow->IMECreateContext(mIMEShellWindow->mShell->window);
++ } else if (mIMEShellWindow->mContainer) {
++ // init GtkIMContext for mContainer
++ mIMEShellWindow->IMECreateContext(GTK_WIDGET(mIMEShellWindow->mContainer)->window);
++ }
++ }
++ im = IMEGetContext();
++#endif /* XIM_CREATE_IC_AT_FOCUS */
++ if (!im) {
++ return;
++ }
++ gtk_im_context_focus_in(im);
++ gIMEFocusWindow = this;
++}
++
++void
++nsWindow::IMEDestroyContext(void)
++{
++ GtkIMContext *im = IMEGetContext();
++ if (im) {
++ // If this is the focus window and we have an IM context we need
++ // to unset the focus on this window before we destroy the window.
++ if (gIMEFocusWindow == this) {
++ gIMEFocusWindow->IMELoseFocus();
++ gIMEFocusWindow = nsnull;
++ }
++ // if shell, delete GtkIMContext
++ if (mIMEShellWindow == this) {
++ gtk_im_context_set_client_window(im, NULL);
++ PL_DHashTableOperate(&gXICLookupTable, this, PL_DHASH_REMOVE);
++ g_object_unref(G_OBJECT(im));
++ }
++ }
++ mIMEShellWindow = nsnull;
++}
++
+ #endif
diff --git a/net-www/mozilla/files/digest-mozilla-1.3-r1 b/net-www/mozilla/files/digest-mozilla-1.3-r1
new file mode 100644
index 000000000000..c9fdd7fb0fca
--- /dev/null
+++ b/net-www/mozilla/files/digest-mozilla-1.3-r1
@@ -0,0 +1,3 @@
+MD5 4c5a27b5ba39f16d83159d0256ad9147 mozilla-source-1.3.tar.bz2 31128975
+MD5 56d3fdd602a068674465a7387fff7043 enigmail-0.73.1.tar.gz 180838
+MD5 e30be9ef9623bd74c55c71251ed7c1af ipc-1.0.2.tar.gz 234871
diff --git a/net-www/mozilla/files/xft.js b/net-www/mozilla/files/xft.js
new file mode 100644
index 000000000000..ac10eea8d401
--- /dev/null
+++ b/net-www/mozilla/files/xft.js
@@ -0,0 +1,3 @@
+// pref to override the default UI font because we're using xft
+pref("font.uifont.name", "sans");
+pref("font.uifont.pointheight", 10);
diff --git a/net-www/mozilla/mozilla-1.3-r1.ebuild b/net-www/mozilla/mozilla-1.3-r1.ebuild
new file mode 100644
index 000000000000..c432a7e787f0
--- /dev/null
+++ b/net-www/mozilla/mozilla-1.3-r1.ebuild
@@ -0,0 +1,598 @@
+# Copyright 1999-2003 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-www/mozilla/mozilla-1.3-r1.ebuild,v 1.1 2003/03/22 06:15:13 azarah Exp $
+
+IUSE="java crypt ipv6 gtk2 ssl ldap gnome"
+# Internal USE flags that I do not really want to advertise ...
+IUSE="${IUSE} mozsvg mozcalendar mozaccess mozinterfaceinfo mozp3p mozxmlterm"
+IUSE="${IUSE} moznoirc moznomail moznocompose moznoxft"
+
+inherit flag-o-matic gcc eutils nsplugins
+
+# Crashes on start when compiled with -fomit-frame-pointer
+filter-flags "-fomit-frame-pointer"
+
+# Sparc support ...
+replace-flags "-mcpu=ultrasparc" "-mcpu=v8"
+replace-flags "-mcpu=v9" "-mcpu=v8"
+
+# Recently there has been a lot of stability problem in Gentoo-land. Many
+# things can be the cause to this, but I believe that it is due to gcc3
+# still having issues with optimizations, or with it not filtering bad
+# combinations (protecting the user maybe from himeself) yet.
+#
+# This can clearly be seen in large builds like glibc, where too aggressive
+# CFLAGS cause the tests to fail miserbly.
+#
+# Quote from Nick Jones <carpaski@gentoo.org>, who in my opinion
+# knows what he is talking about:
+#
+# People really shouldn't force code-specific options on... It's a
+# bad idea. The -march options aren't just to look pretty. They enable
+# options that are sensible (and include sse,mmx,3dnow when apropriate).
+#
+# The next command strips CFLAGS and CXXFLAGS from nearly all flags. If
+# you do not like it, comment it, but do not bugreport if you run into
+# problems.
+#
+# <azarah@gentoo.org> (13 Oct 2002)
+strip-flags
+
+# We set -O in ./configure to -O1, as -O2 cause crashes on startup ...
+# (bug #13287)
+export CFLAGS="${CFLAGS//-O?}"
+export CXXFLAGS="${CFLAGS//-O?}"
+
+EMVER="0.73.1"
+IPCVER="1.0.2"
+
+PATCH_VER="1.0"
+
+# handle _rc versions
+MY_PV1="${PV/_}"
+MY_PV2="${MY_PV1/eta}"
+S="${WORKDIR}/mozilla"
+DESCRIPTION="The Mozilla Web Browser"
+SRC_URI="ftp://ftp.mozilla.org/pub/mozilla/releases/${PN}${MY_PV2}/src/${PN}-source-${MY_PV2}.tar.bz2
+ crypt? ( http://downloads.mozdev.org/enigmail/enigmail-${EMVER}.tar.gz
+ http://downloads.mozdev.org/enigmail/ipc-${IPCVER}.tar.gz )"
+# mirror://gentoo/${P}-patches-${PATCH_VER}.tar.bz2"
+HOMEPAGE="http://www.mozilla.org"
+
+KEYWORDS="~x86 ~ppc ~sparc ~alpha"
+SLOT="0"
+LICENSE="MPL-1.1 NPL-1.1"
+
+RDEPEND=">=x11-base/xfree-4.2.0-r11
+ >=gnome-base/ORBit-0.5.10-r1
+ >=dev-libs/libIDL-0.8.0
+ >=sys-libs/zlib-1.1.4
+ >=media-libs/fontconfig-2.1
+ >=x11-libs/xft-2.0.1
+ >=media-libs/jpeg-6b
+ >=media-libs/libpng-1.2.1
+ >=sys-apps/portage-2.0.14
+ dev-libs/expat
+ app-arch/zip
+ app-arch/unzip
+ ( gtk2? >=x11-libs/gtk+-2.2.0 :
+ =x11-libs/gtk+-1.2* )
+ ( gtk2? >=dev-libs/glib-2.2.0 :
+ =dev-libs/glib-1.2* )
+ gtk2? ( >=x11-libs/pango-1.2.1 )
+ java? ( virtual/jre )
+ crypt? ( >=app-crypt/gnupg-1.2.1 )"
+
+DEPEND="${RDEPEND}
+ virtual/x11
+ dev-util/pkgconfig
+ dev-lang/perl
+ java? ( >=dev-java/java-config-0.2.0 )"
+
+
+moz_setup() {
+
+ # Setup CC and CXX
+ if [ -z "${CC}" ]
+ then
+ export CC="gcc"
+ fi
+ if [ -z "${CXX}" ]
+ then
+ export CXX="g++"
+ fi
+
+ #This should enable parallel builds, I hope
+ if [ -f /proc/cpuinfo ]
+ then
+ # Set MAKEOPTS to have proper -j? option ..
+ get_number_of_jobs
+ export MAKE="emake"
+ fi
+
+ # needed by src_compile() and src_install()
+ export MOZILLA_OFFICIAL=1
+ export BUILD_OFFICIAL=1
+
+ # make sure the nss module gets build (for NSS support)
+ if [ -n "`use ssl`" ]
+ then
+ export MOZ_PSM="1"
+ fi
+
+ # do we build java support for the NSS stuff ?
+ # NOTE: this is broken for the moment
+# if [ "`use java`" ]
+# then
+# export NS_USE_JDK="1"
+# fi
+}
+
+src_unpack() {
+
+ moz_setup
+
+ unpack ${A}
+
+ cd ${S}
+
+ if [ "$(gcc-major-version)" -eq "3" ]
+ then
+ # ABI Patch for alpha/xpcom for gcc-3.x
+ if [ "${ARCH}" = "alpha" ]
+ then
+ cd ${S}; epatch ${FILESDIR}/${PN}-alpha-xpcom-subs-fix.patch
+ fi
+ fi
+
+ epatch ${FILESDIR}/1.2/${PN}-1.2b-default-plugin-less-annoying.patch.bz2
+ epatch ${FILESDIR}/1.2/${PN}-1.2b-over-the-spot.patch.bz2
+ epatch ${FILESDIR}/1.2/${PN}-1.2b-wallet.patch.bz2
+
+ # Fix logic error when using RAW target
+ # <azarah@gentoo.org> (23 Feb 2003)
+ epatch ${FILESDIR}/1.3/${PN}-1.3-fix-RAW-target.patch
+
+ if [ -n "`use gtk2`" ]
+ then
+ epatch ${FILESDIR}/1.3/${PN}-1.3-gtk2.patch
+ else
+ epatch ${FILESDIR}/1.3/${PN}-1.3-fix-gtkim.patch
+ fi
+
+ export WANT_AUTOCONF_2_1=1
+ autoconf &> /dev/null
+ unset WANT_AUTOCONF_2_1
+
+ # Unpack the enigmail plugin
+ if [ -n "`use crypt`" -a -z "`use moznomail`" ]
+ then
+ mv -f ${WORKDIR}/ipc ${S}/extensions/
+ mv -f ${WORKDIR}/enigmail ${S}/extensions/
+ fi
+}
+
+src_compile() {
+
+ moz_setup
+
+ local myconf=""
+ # NOTE: QT and XLIB toolkit seems very unstable, leave disabled until
+ # tested ok -- azarah
+ if [ -n "`use gtk2`" ]
+ then
+ myconf="${myconf} --enable-toolkit-gtk2 \
+ --enable-default-toolkit=gtk2 \
+ --disable-toolkit-qt \
+ --disable-toolkit-xlib \
+ --disable-toolkit-gtk"
+ else
+ myconf="${myconf} --enable-toolkit-gtk \
+ --enable-default-toolkit=gtk \
+ --disable-toolkit-qt \
+ --disable-toolkit-xlib \
+ --disable-toolkit-gtk2"
+ fi
+
+ if [ -z "`use ldap`" ]
+ then
+ myconf="${myconf} --disable-ldap"
+ fi
+
+ if [ "${DEBUGBUILD}" != "yes" ]
+ then
+ myconf="${myconf} --enable-strip-libs \
+ --disable-debug \
+ --disable-tests \
+ --enable-reorder \
+ --enable-strip"
+# --enable-cpp-rtti"
+
+ # Currently --enable-elf-dynstr-gc only works for x86 and ppc,
+ # thanks to Jason Wever <weeve@gentoo.org> for the fix.
+ if [ -n "`use x86`" -o -n "`use ppc`" ]
+ then
+ myconf="${myconf} --enable-elf-dynstr-gc"
+ fi
+ fi
+
+ # Check if we should enable Xft support ...
+ if [ -z "`use moznoxft`" ]
+ then
+ if [ -n "`use gtk2`" ]
+ then
+ local pango_version=""
+
+ # We need Xft2.0 localy installed
+ if (test -x /usr/bin/pkg-config) && (pkg-config xft)
+ then
+ pango_version="`pkg-config --modversion pango | cut -d. -f1,2`"
+ pango_version="`echo ${pango_version} | sed -e 's:\.::g'`"
+
+ # We also need pango-1.1, else Mozilla links to both
+ # Xft1.1 *and* Xft2.0, and segfault...
+ if [ "${pango_version}" -gt "10" ]
+ then
+ einfo "Building with Xft2.0 (Gtk+-2.0) support!"
+ myconf="${myconf} --enable-xft --disable-freetype2"
+ touch ${WORKDIR}/.xft
+ else
+ ewarn "Building without Xft2.0 support!"
+ myconf="${myconf} --disable-xft `use_enable truetype freetype2`"
+ fi
+ else
+ ewarn "Building without Xft2.0 support!"
+ myconf="${myconf} --disable-xft `use_enable truetype freetype2`"
+ fi
+ else
+ einfo "Building with Xft2.0 (Gtk+-1.0) support!"
+ myconf="${myconf} --enable-xft --disable-freetype2"
+ touch ${WORKDIR}/.xft
+ fi
+ else
+ myconf="${myconf} --disable-xft `use_enable truetype freetype2`"
+ fi
+
+ if [ -n "`use ipv6`" ]
+ then
+ myconf="${myconf} --enable-ipv6"
+ fi
+
+
+ # NB!!: Due to the fact that the non default extensions do not always
+ # compile properly, using them is considered unsupported, and
+ # is just here for completeness. Please do not use if you
+ # do not know what you are doing!
+ #
+ # The defaults are (as of 1.2, according to configure (line ~11445)):
+ # cookie, wallet, content-packs, xml-rpc, xmlextras, help, pref, transformiix,
+ # venkman, inspector, irc, universalchardet, typeaheadfind
+ # Non-defaults are:
+ # xmlterm access-builtin p3p interfaceinfo datetime finger cview
+ local myext="default"
+ if [ -n "`use mozxmlterm`" ]
+ then
+ myext="${myext},xmlterm"
+ fi
+ if [ -n "`use mozaccess-builtin`" ]
+ then
+ myext="${myext},access-builtin"
+ fi
+ if [ -n "`use mozp3p`" ]
+ then
+ myext="${myext},p3p"
+ fi
+ if [ -n "`use mozinterfaceinfo`" ]
+ then
+ myext="${myext},interfaceinfo"
+ fi
+ if [ -n "`use moznoirc`" ]
+ then
+ myext="${myext},-irc"
+ fi
+
+ if [ -n "`use mozsvg`" ]
+ then
+ export MOZ_INTERNAL_LIBART_LGPL="1"
+ myconf="${myconf} --enable-svg"
+ else
+ myconf="${myconf} --disable-svg"
+ fi
+# This puppy needs libical, which is not in portage yet. Also make mozilla
+# depend on swig, so not sure if its the best idea around to enable ...
+# if [ -n "`use mozcalendar`" ]
+# then
+# myconf="${myconf} --enable-calendar"
+# fi
+
+ if [ -n "`use moznomail`" ]
+ then
+ myconf="${myconf} --disable-mailnews"
+ fi
+ if [ -n "`use moznocompose`" ]
+ then
+ myconf="${myconf} --disable-composer"
+ fi
+
+ if [ "$(gcc-major-version)" -eq "3" ]
+ then
+ # Currently gcc-3.2 or older do not work well if we specify "-march"
+ # and other optimizations for pentium4.
+ export CFLAGS="${CFLAGS/-march=pentium4/-march=pentium3}"
+ export CXXFLAGS="${CXXFLAGS/-march=pentium4/-march=pentium3}"
+
+ # Enable us to use flash, etc plugins compiled with gcc-2.95.3
+ if [ "${ARCH}" = "x86" ]
+ then
+ myconf="${myconf} --enable-old-abi-compat-wrappers"
+ fi
+ fi
+
+ # *********************************************************************
+ #
+ # Configure and build Mozilla
+ #
+ # *********************************************************************
+
+ export BUILD_MODULES=all
+ export BUILD_OPT=1
+
+ # Get it to work without warnings on gcc3
+ export CXXFLAGS="${CXXFLAGS} -Wno-deprecated"
+
+ cd ${S}
+ einfo "Configuring Mozilla..."
+ ./configure --prefix=/usr/lib/mozilla \
+ --disable-pedantic \
+ --disable-short-wchar \
+ --disable-xprint \
+ --enable-mathml \
+ --without-system-nspr \
+ --enable-nspr-autoconf \
+ --with-system-zlib \
+ --enable-xsl \
+ --enable-crypto \
+ --enable-extensions="${myext}" \
+ --enable-optimize="-O2" \
+ --with-default-mozilla-five-home=/usr/lib/mozilla \
+ ${myconf} || die
+
+ einfo "Building Mozilla..."
+ make WORKDIR="${WORKDIR}" || die
+
+ # *********************************************************************
+ #
+ # Build Mozilla NSS
+ #
+ # *********************************************************************
+
+ # Build the NSS/SSL support
+ if [ "`use ssl`" ]
+ then
+ einfo "Building Mozilla NSS..."
+ cd ${S}/security/coreconf
+
+ # Fix #include problem
+ cp headers.mk headers.mk.orig
+ echo 'INCLUDES += -I$(DIST)/include/nspr -I$(DIST)/include/dbm'\
+ >>headers.mk
+
+ # Disable jobserver here ...
+ make MAKE="make" || die
+
+ cd ${S}/security/nss
+
+ # Disable jobserver here ...
+ make MAKE="make" moz_import || die
+ make MAKE="make" || die
+ cd ${S}
+ fi
+
+ # *********************************************************************
+ #
+ # Build Enigmail plugin
+ #
+ # *********************************************************************
+
+ # Build the enigmail plugin
+ if [ -n "`use crypt`" -a -z "`use moznomail`" ]
+ then
+ einfo "Building Enigmail plugin..."
+ cd ${S}/extensions/ipc
+ make || die
+
+ cd ${S}/extensions/enigmail
+ make || die
+ fi
+}
+
+src_install() {
+
+ moz_setup
+
+ # Install, don't create tarball
+ dodir /usr/lib
+ cd ${S}/xpinstall/packager
+ einfo "Installing mozilla into build root..."
+ make MOZ_PKG_FORMAT="RAW" TAR_CREATE_FLAGS="-chf" > /dev/null || die
+ mv -f ${S}/dist/mozilla ${D}/usr/lib/mozilla
+
+ einfo "Installing includes and idl files..."
+ # Copy the include and idl files
+ dodir /usr/lib/mozilla/include/idl /usr/include
+ cd ${S}/dist
+ cp -LfR include/* ${D}/usr/lib/mozilla/include
+ cp -LfR idl/* ${D}/usr/lib/mozilla/include/idl
+ dosym /usr/lib/mozilla/include /usr/include/mozilla
+
+ # Install the development tools in /usr
+ dodir /usr/bin
+ mv ${D}/usr/lib/mozilla/{xpcshell,xpidl,xpt_dump,xpt_link} ${D}/usr/bin
+
+ # Install the NSS/SSL libs, headers and tools
+ if [ "`use ssl`" ]
+ then
+ einfo "Installing Mozilla NSS..."
+ # Install the headers ('make install' do not work for headers ...)
+ insinto /usr/lib/mozilla/include/nss
+ [ -d ${S}/dist/public/nss ] && doins ${S}/dist/public/nss/*.h
+ [ -d ${S}/dist/public/seccmd ] && doins ${S}/dist/public/seccmd/*.h
+ [ -d ${S}/dist/public/security ] && doins ${S}/dist/public/security/*.h
+ # These come with zlib ...
+ rm -f ${D}/usr/lib/mozilla/include/nss/{zconf.h,zlib.h}
+
+ cd ${S}/security/nss
+
+ mkdir -p ${WORKDIR}/nss/{bin,lib}
+ export BUILD_OPT=1
+ export SOURCE_BIN_DIR=${WORKDIR}/nss/bin
+ export SOURCE_LIB_DIR=${WORKDIR}/nss/lib
+
+ make install || die
+ # Gets installed as symbolic links ...
+ cp -Lf ${WORKDIR}/nss/bin/* ${D}/usr/bin
+ cp -Lf ${WORKDIR}/nss/lib/* ${D}/usr/lib/mozilla
+
+ # Need to unset these incase we want to rebuild, else the build
+ # gets newked.
+ unset SOURCE_LIB_DIR
+ unset SOURCE_BIN_DIR
+ fi
+
+ cd ${S}/build/unix
+ # Fix mozilla-config and install it
+ perl -pi -e "s:/lib/mozilla-${MY_PV2}::g" mozilla-config
+ perl -pi -e "s:/mozilla-${MY_PV2}::g" mozilla-config
+ exeinto /usr/lib/mozilla
+ doexe mozilla-config
+ # Fix pkgconfig files and install them
+ insinto /usr/lib/pkgconfig
+ for x in *.pc
+ do
+ if [ -f ${x} ]
+ then
+ perl -pi -e "s:/lib/mozilla-${MY_PV2}::g" ${x}
+ perl -pi -e "s:/mozilla-${MY_PV2}::g" ${x}
+ doins ${x}
+ fi
+ done
+
+ cd ${S}
+ exeinto /usr/bin
+ newexe ${FILESDIR}/mozilla.sh mozilla
+ insinto /etc/env.d
+ doins ${FILESDIR}/10mozilla
+ dodoc LEGAL LICENSE README/mozilla/README*
+
+ # Install rebuild script
+ exeinto /usr/lib/mozilla/
+ newexe ${S}/build/package/rpm/SOURCES/mozilla-rebuild-databases.pl.in \
+ mozilla-rebuild-databases.pl
+ dosed 's|LIBDIR|/usr/lib|g' /usr/lib/mozilla/mozilla-rebuild-databases.pl
+ dosed 's|-MOZILLA_VERSION||g' /usr/lib/mozilla/mozilla-rebuild-databases.pl
+
+ # Move plugins dir
+ src_mv_plugins /usr/lib/mozilla/plugins
+
+ # Update Google search plugin to use UTF8 charset ...
+ insinto /usr/lib/mozilla/searchplugins
+ doins ${FILESDIR}/google.src
+
+ if [ -f "${WORKDIR}/.xft" ]
+ then
+ # We are using Xft, so change the default font
+ insinto /usr/lib/mozilla/defaults/pref
+ doins ${FILESDIR}/xft.js
+ fi
+
+ # Fix icons to look the same everywhere
+ insinto /usr/lib/mozilla/icons
+ doins ${S}/build/package/rpm/SOURCES/mozicon16.xpm
+ doins ${S}/build/package/rpm/SOURCES/mozicon50.xpm
+
+ # Install icon and .desktop for menu entry
+ if [ "`use gnome`" ]
+ then
+ insinto /usr/share/pixmaps
+ doins ${S}/build/package/rpm/SOURCES/mozilla-icon.png
+
+ # Fix comment of menu entry
+ cd ${S}/build/package/rpm/SOURCES
+ perl -pi -e 's:Comment=Mozilla:Comment=Mozilla Web Browser:' mozilla.desktop
+ cd ${S}
+ insinto /usr/share/gnome/apps/Internet
+ doins ${S}/build/package/rpm/SOURCES/mozilla.desktop
+ fi
+
+ # Take care of non root execution
+ # (seems the problem is that not all files are readible by the user)
+ einfo "Fixing Permissions..."
+ chmod -R g+r,o+r ${D}/usr/lib/mozilla
+ find ${D}/usr/lib/mozilla/ -type d -exec chmod 0755 {} \; || :
+}
+
+pkg_preinst() {
+ # Stale components and chrome files break when unmerging old
+ if [ -d ${ROOT}/usr/lib/mozilla/components ]
+ then
+ rm -rf ${ROOT}/usr/lib/mozilla/components
+ fi
+ if [ -d ${ROOT}/usr/lib/mozilla/chrome ]
+ then
+ rm -rf ${ROOT}/usr/lib/mozilla/chrome
+ fi
+
+ # Remove stale component registry.
+ if [ -e ${ROOT}/usr/lib/component.reg ]
+ then
+ rm -f ${ROOT}/usr/lib/component.reg
+ fi
+
+ # Make sure these are removed.
+ rm -f ${ROOT}/usr/lib/mozilla/lib{Xft,Xrender}.so*
+
+ # Move old plugins dir
+ pkg_mv_plugins /usr/lib/mozilla/plugins
+}
+
+pkg_postinst() {
+
+ export MOZILLA_FIVE_HOME="${ROOT}/usr/lib/mozilla"
+
+ # Needed to update the run time bindings for REGXPCOM
+ # (do not remove next line!)
+ env-update
+ # Register Components and Chrome
+ einfo "Registering Components and Chrome..."
+ ${MOZILLA_FIVE_HOME}/mozilla-rebuild-databases.pl
+ # Fix directory permissions
+ find ${MOZILLA_FIVE_HOME}/ -type d -perm 0700 -exec chmod 755 {} \; || :
+ # Fix permissions on chrome files
+ find ${MOZILLA_FIVE_HOME}/chrome/ -name '*.rdf' -exec chmod 0644 {} \; || :
+
+
+ echo
+ ewarn "Please unmerge old versions of mozilla, as the header"
+ ewarn "layout in /usr/lib/mozilla/include have changed and will"
+ ewarn "result in compile errors when compiling programs that need"
+ ewarn "mozilla headers and libs (galeon, nautilus, ...)"
+}
+
+pkg_postrm() {
+
+ # Regenerate component.reg in case some things changed
+ if [ -e ${ROOT}/usr/lib/mozilla/regxpcom ]
+ then
+ export MOZILLA_FIVE_HOME="${ROOT}/usr/lib/mozilla"
+
+ if [ -x "${MOZILLA_FIVE_HOME}/mozilla-rebuild-databases.pl" ]
+ then
+ ${MOZILLA_FIVE_HOME}/mozilla-rebuild-databases.pl
+ # Fix directory permissions
+ find ${MOZILLA_FIVE_HOME}/ -type d -perm 0700 -exec chmod 755 {} \; || :
+ # Fix permissions on chrome files
+ find ${MOZILLA_FIVE_HOME}/chrome/ -name '*.rdf' -exec chmod 0644 {} \; || :
+ fi
+ fi
+}
+