--- a/firefox-kde.patch Wed Oct 06 19:15:35 2010 +0200
+++ b/firefox-kde.patch Wed Oct 06 19:28:13 2010 +0200
@@ -23,7 +23,7 @@
new file mode 100644
--- /dev/null
+++ b/browser/base/content/browser-kde.xul
-@@ -0,0 +1,1094 @@
+@@ -0,0 +1,1337 @@
+#filter substitution
+<?xml version="1.0"?>
+# -*- Mode: HTML -*-
@@ -61,6 +61,7 @@
+# Robert Strong <robert.bugzilla@gmail.com>
+# Rob Campbell <rcampbell@mozilla.com>
+# Patrick Walton <pcwalton@mozilla.com>
++# David Dahl <ddahl@mozilla.com>
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
@@ -128,7 +129,7 @@
+
+<script type="application/javascript" src="chrome://browser/content/places/editBookmarkOverlay.js"/>
+
-+# All sets except for popupsets (commands, keys, stringbundles and broadcasters) *must* go into the
++# All sets except for popupsets (commands, keys, stringbundles and broadcasters) *must* go into the
+# browser-sets.inc file for sharing with hiddenWindow.xul.
+#include browser-sets.inc
+
@@ -142,21 +143,26 @@
+ tbattr="tabbrowser-multiple"
+ oncommand="gBrowser.reloadAllTabs();"/>
+ <menuseparator/>
-+ <menuitem id="context_openTabInWindow" label="&openTabInNewWindow.label;"
-+ accesskey="&openTabInNewWindow.accesskey;"
++ <menuitem id="context_pinTab" label="&pinAppTab.label;"
++ accesskey="&pinAppTab.accesskey;"
++ oncommand="gBrowser.pinTab(TabContextMenu.contextTab);"/>
++ <menuitem id="context_unpinTab" label="&unpinAppTab.label;" hidden="true"
++ accesskey="&unpinAppTab.accesskey;"
++ oncommand="gBrowser.unpinTab(TabContextMenu.contextTab);"/>
++ <menu id="context_tabViewMenu" label="&moveToGroup.label;"
++ accesskey="&moveToGroup.accesskey;">
++ <menupopup id="context_tabViewMenuPopup"
++ onpopupshowing="if (event.target == this) TabView.updateContextMenu(TabContextMenu.contextTab, this);">
++ <menuseparator id="context_tabViewNamedGroups" hidden="true"/>
++ <menuitem label="&moveToNewGroup.label;"
++ oncommand="TabView.moveTabTo(TabContextMenu.contextTab, null);"/>
++ </menupopup>
++ </menu>
++ <menuitem id="context_openTabInWindow" label="&moveToNewWindow.label;"
++ accesskey="&moveToNewWindow.accesskey;"
+ tbattr="tabbrowser-multiple"
+ oncommand="gBrowser.replaceTabWithWindow(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_pinTab" label="&pinTab.label;"
-+ accesskey="&pinTab.accesskey;"
-+ oncommand="gBrowser.pinTab(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_unpinTab" label="&unpinTab.label;" hidden="true"
-+ accesskey="&unpinTab.accesskey;"
-+ oncommand="gBrowser.unpinTab(TabContextMenu.contextTab);"/>
+ <menuseparator/>
-+ <menuitem id="context_bookmarkTab"
-+ label="&bookmarkThisTab.label;"
-+ accesskey="&bookmarkThisTab.accesskey;"
-+ oncommand="BookmarkThisTab(TabContextMenu.contextTab);"/>
+ <menuitem id="context_bookmarkAllTabs"
+ label="&bookmarkAllTabs.label;"
+ accesskey="&bookmarkAllTabs.accesskey;"
@@ -184,6 +190,9 @@
+ <!-- for url bar autocomplete -->
+ <panel type="autocomplete-richlistbox" id="PopupAutoCompleteRichResult" noautofocus="true" hidden="true"/>
+
++ <!-- for invalid form error message -->
++ <panel id="invalid-form-popup" noautofocus="true" hidden="true" level="parent"/>
++
+ <panel id="editBookmarkPanel"
+ orient="vertical"
+ ignorekeys="true"
@@ -218,7 +227,7 @@
+ </row>
+ <vbox id="editBookmarkPanelContent" flex="1" hidden="true"/>
+ <hbox id="editBookmarkPanelBottomButtons" pack="end">
-+#ifndef XP_UNIX
++#ifdef XP_UNIX // XP_UNIX != KDE
+ <button id="editBookmarkPanelDoneButton"
+ class="editBookmarkPanelBottomButton"
+ label="&editBookmark.done.label;"
@@ -228,7 +237,7 @@
+ class="editBookmarkPanelBottomButton"
+ label="&editBookmark.cancel.label;"
+ oncommand="StarUI.cancelButtonOnCommand();"/>
-+#elif XP_UNIX_GNOME
++#else
+ <button id="editBookmarkPanelDeleteButton"
+ class="editBookmarkPanelBottomButton"
+ label="&editBookmark.cancel.label;"
@@ -238,16 +247,6 @@
+ label="&editBookmark.done.label;"
+ default="true"
+ oncommand="StarUI.panel.hidePopup();"/>
-+#else
-+ <button id="editBookmarkPanelDoneButton"
-+ class="editBookmarkPanelBottomButton"
-+ label="&editBookmark.done.label;"
-+ default="true"
-+ oncommand="StarUI.panel.hidePopup();"/>
-+ <button id="editBookmarkPanelDeleteButton"
-+ class="editBookmarkPanelBottomButton"
-+ label="&editBookmark.cancel.label;"
-+ oncommand="StarUI.cancelButtonOnCommand();"/>
+#endif
+ </hbox>
+ </panel>
@@ -261,14 +260,15 @@
+ onmousemove="InspectorUI.highlighter.handleMouseMove(event);"
+ onMozMousePixelScroll="InspectorUI.highlighter.handlePixelScroll(event);"/>
+
-+ <panel id="inspector-panel"
++ <panel id="inspector-tree-panel"
+ orient="vertical"
+ hidden="true"
+ ignorekeys="true"
+ noautofocus="true"
+ noautohide="true"
-+ level="top"
+ titlebar="normal"
++ close="true"
++ onpopuphiding="InspectorUI.closeInspectorUI(true);"
+ label="&inspectPanelTitle.label;">
+ <toolbar id="inspector-toolbar"
+ nowindowdrag="true">
@@ -291,23 +291,14 @@
+ label="&inspectStyleButton.label;"
+ accesskey="&inspectStyleButton.accesskey;"
+ class="toolbarbutton-text"
-+ command="Inspector:Style"/>
++ oncommand="InspectorUI.toggleStylePanel();"/>
++ <toolbarbutton id="inspector-dom-toolbutton"
++ label="&inspectObjectButton.label;"
++ accesskey="&inspectObjectButton.accesskey;"
++ class="toolbarbutton-text"
++ oncommand="InspectorUI.toggleDOMPanel();"/>
+ </toolbar>
-+ <tree id="inspector-tree" class="plain"
-+ seltype="single"
-+ treelines="true"
-+ onselect="InspectorUI.onTreeSelected()"
-+ flex="1">
-+ <treecols>
-+ <treecol id="colNodeName" label="nodeName" primary="true"
-+ persist="width,hidden,ordinal" flex="1"/>
-+ <splitter class="tree-splitter"/>
-+ <treecol id="colNodeValue" label="nodeValue"
-+ persist="width,hidden,ordinal" flex="1"/>
-+ </treecols>
-+ <treechildren id="inspector-tree-body"/>
-+ </tree>
-+ <hbox align="end">
++ <hbox id="tree-panel-resizer-box" align="end">
+ <spacer flex="1" />
+ <resizer dir="bottomend" />
+ </hbox>
@@ -319,13 +310,12 @@
+ ignorekeys="true"
+ noautofocus="true"
+ noautohide="true"
-+ level="top"
+ titlebar="normal"
+ label="&inspectStylePanelTitle.label;">
+ <listbox id="inspector-style-listbox" flex="1"/>
+ <hbox align="end">
+ <spacer flex="1" />
-+ <resizer dir="bottomend" />
++ <resizer dir="bottomend"/>
+ </hbox>
+ </panel>
+
@@ -452,7 +442,7 @@
+ <stack id="allTabs-stack">
+ <vbox id="allTabs-container"><hbox/></vbox>
+ <toolbarbutton id="allTabs-tab-close-button"
-+ class="tab-close-button"
++ class="tabs-closebutton"
+ oncommand="allTabs.closeTab(event);"
+ tooltiptext="&closeCmd.label;"
+ style="visibility:hidden"/>
@@ -473,149 +463,394 @@
+ </popupset>
+
+#ifdef MENUBAR_CAN_AUTOHIDE
-+ <hbox id="appmenu-button-container">
-+ <button id="appmenu-button"
-+ type="menu"
-+ label="&brandShortName;"
-+ style="-moz-user-focus: ignore;">
-+ <menupopup id="appmenu-popup">
-+ <hbox flex="1" class="split-menuitem">
-+ <menuitem id="appmenu_newTab"
-+ class="split-menuitem-item"
-+ flex="1"
-+ label="&tabCmd.label;"
-+ command="cmd_newNavigatorTab"/>
-+ <menu class="split-menuitem-menu">
-+ <menupopup>
-+ <menuitem id="appmenu_newTab_sub"
-+ label="&tabCmd.label;"
-+ command="cmd_newNavigatorTab"/>
-+ <menuitem id="appmenu_newNavigator"
-+ label="&newNavigatorCmd.label;"
-+ command="cmd_newNavigator"/>
-+ </menupopup>
-+ </menu>
-+ </hbox>
-+ <menuseparator/>
-+ <menuitem id="appmenu_savePage"
-+ label="&savePageCmd.label;"
-+ command="Browser:SavePage"/>
-+ <menuitem id="appmenu_sendLink"
-+ label="&sendPageCmd.label;"
-+ command="Browser:SendLink"/>
-+ <hbox flex="1" class="split-menuitem">
-+ <menuitem id="appmenu_print"
-+ class="split-menuitem-item"
-+ flex="1"
-+ label="&appMenuPrintCmd.label;"
-+ command="cmd_print"/>
-+ <menu class="split-menuitem-menu">
-+ <menupopup>
-+ <menuitem id="menu_printSetup"
-+ label="&printSetupCmd.label;"
-+ command="cmd_pageSetup"/>
-+ <menuitem id="menu_printPreview"
-+ label="&printPreviewCmd.label;"
-+ command="cmd_printPreview"/>
++ <vbox id="titlebar">
++ <hbox id="titlebar-content">
++ <hbox id="appmenu-button-container" align="start">
++ <button id="appmenu-button"
++ type="menu"
++#ifdef XP_WIN
++ label="&brandShortName;"
++#else
++ label="&appMenuButton.label;"
++#endif
++ style="-moz-user-focus: ignore;">
++ <menupopup id="appmenu-popup"
++#ifdef MOZ_SERVICES_SYNC
++ onpopupshowing="updateEditUIVisibility();gSyncUI.updateUI();">
++#else
++ onpopupshowing="updateEditUIVisibility();">
++#endif
++ <hbox>
++ <vbox id="appmenuPrimaryPane">
++ <hbox flex="1"
++ class="split-menuitem">
++ <menuitem id="appmenu_newTab"
++ class="menuitem-tooltip split-menuitem-item"
++ flex="1"
++ label="&tabCmd.label;"
++ command="cmd_newNavigatorTab"
++ key="key_newNavigatorTab"/>
++ <menu class="split-menuitem-menu">
++ <menupopup>
++ <menuitem id="appmenu_newTab_popup"
++ label="&tabCmd.label;"
++ command="cmd_newNavigatorTab"
++ key="key_newNavigatorTab"/>
++ <menuitem id="appmenu_newNavigator"
++ label="&newNavigatorCmd.label;"
++ command="cmd_newNavigator"
++ key="key_newNavigator"/>
++ <menuseparator/>
++ <menuitem id="appmenu_openFile"
++ label="&openFileCmd.label;"
++ command="Browser:OpenFile"
++ key="openFileKb"/>
++ </menupopup>
++ </menu>
++ </hbox>
++ <menuitem id="appmenu_privateBrowsing"
++ class="menuitem-iconic menuitem-iconic-tooltip"
++ label="&privateBrowsingCmd.start.label;"
++ startlabel="&privateBrowsingCmd.start.label;"
++ stoplabel="&privateBrowsingCmd.stop.label;"
++ command="Tools:PrivateBrowsing"
++ key="key_privatebrowsing"/>
++ <menuitem label="&goOfflineCmd.label;"
++ id="appmenu_offlineModeRecovery"
++ type="checkbox"
++ observes="workOfflineMenuitemState"
++ oncommand="BrowserOffline.toggleOfflineStatus();"/>
++ <menuseparator class="appmenu-menuseparator"/>
++ <hbox>
++ <menuitem id="appmenu-edit-label"
++ label="&appMenuEdit.label;"
++ disabled="true"/>
++ <toolbarbutton id="appmenu-cut"
++ class="appmenu-edit-button"
++ command="cmd_cut"
++ onclick="if (!this.disabled) hidePopup();"
++ tooltiptext="&cutButton.tooltip;"/>
++ <toolbarbutton id="appmenu-copy"
++ class="appmenu-edit-button"
++ command="cmd_copy"
++ onclick="if (!this.disabled) hidePopup();"
++ tooltiptext="©Button.tooltip;"/>
++ <toolbarbutton id="appmenu-paste"
++ class="appmenu-edit-button"
++ command="cmd_paste"
++ onclick="if (!this.disabled) hidePopup();"
++ tooltiptext="&pasteButton.tooltip;"/>
++ </hbox>
++ <menuitem id="appmenu_find"
++ class="menuitem-tooltip"
++ label="&appMenuFind.label;"
++ command="cmd_find"
++ key="key_find"/>
++ <menuseparator class="appmenu-menuseparator"/>
++ <menuitem id="appmenu_savePage"
++ class="menuitem-tooltip"
++ label="&savePageCmd.label;"
++ command="Browser:SavePage"
++ key="key_savePage"/>
++ <menuitem id="appmenu_sendLink"
++ label="&sendPageCmd.label;"
++ command="Browser:SendLink"/>
++ <hbox flex="1"
++ class="split-menuitem">
++ <menuitem id="appmenu_print"
++ class="menuitem-iconic menuitem-iconic-tooltip split-menuitem-item"
++ flex="1"
++ label="&printCmd.label;"
++ command="cmd_print"
++ key="printKb"/>
++ <menu class="split-menuitem-menu">
++ <menupopup>
++ <menuitem id="appmenu_print_popup"
++ class="menuitem-iconic"
++ label="&printCmd.label;"
++ command="cmd_print"
++ key="printKb"/>
++ <menuitem id="appmenu_printPreview"
++ label="&printPreviewCmd.label;"
++ command="cmd_printPreview"/>
++ <menuitem id="appmenu_printSetup"
++ label="&printSetupCmd.label;"
++ command="cmd_pageSetup"/>
++ </menupopup>
++ </menu>
++ </hbox>
++ <menuseparator class="appmenu-menuseparator"/>
++ <menu id="appmenu_webDeveloper"
++ label="&appMenuWebDeveloper.label;">
++ <menupopup id="appmenu_webDeveloper_popup">
++ <menuitem id="appmenu_webConsole"
++ label="&webConsoleCmd.label;"
++ type="checkbox"
++ oncommand="HUDConsoleUI.toggleHUD();"
++ key="key_webConsole"/>
++ <menuitem id="appmenu_pageInspect"
++ hidden="true"
++ label="&inspectMenu.label;"
++ type="checkbox"
++ command="Tools:Inspect"
++ key="key_inspect"/>
++ <menuseparator/>
++ <menuitem id="appmenu_pageSource"
++ label="&viewPageSourceCmd.label;"
++ command="View:PageSource"
++ key="key_viewSource"/>
++ <menuseparator/>
++#define ID_PREFIX appmenu_developer_
++#include browser-charsetmenu.inc
++#undef ID_PREFIX
++ <menuseparator/>
++ <menuitem label="&goOfflineCmd.label;"
++ type="checkbox"
++ observes="workOfflineMenuitemState"
++ oncommand="BrowserOffline.toggleOfflineStatus();"/>
+ </menupopup>
+ </menu>
-+ </hbox>
-+ <menuitem id="appmenu_find"
-+ label="&findOnCmd.label;"
-+ command="cmd_find"/>
-+ <menuseparator/>
-+ <menu id="appmenu_history"
-+ label="&historyMenu.label;">
-+ <menupopup id="appmenu_history_popup"
-+ placespopup="true"
-+ oncommand="this.parentNode._placesView._onCommand(event);"
-+ onclick="checkForMiddleClick(this, event);"
-+ onpopupshowing="if (!this.parentNode._placesView)
-+ new HistoryMenu(event);"
-+ tooltip="bhTooltip"
-+ popupsinherittooltip="true">
-+ <menuitem id="appmenu_sanitizeHistory"
-+ label="&clearRecentHistory.label;"
-+ key="key_sanitize"
-+ command="Tools:Sanitize"/>
-+ <menuseparator/>
-+ <menuitem id="appmenu_showAllHistory"
-+ label="&showAllHistoryCmd2.label;"
-+ key="showAllHistoryKb"
-+ command="Browser:ShowAllHistory"/>
-+ <menuseparator class="hide-if-empty-places-result"/>
-+ </menupopup>
-+ </menu>
-+ <menuseparator/>
-+ <menu id="appmenu_developer"
-+ label="&developerMenu.label;">
-+ <menupopup id="appmenu_developer_popup">
-+ <menuitem id="appmenu_pageSource"
-+ label="&pageSourceCmd.label;"
-+ command="View:PageSource"/>
-+ <menuseparator/>
-+ <menuitem id="appmenu_pageInspect"
-+ label="&inspectMenu.label;"
-+ command="Tools:Inspect"/>
-+ <menuitem id="appmenu_webConsole"
-+ label="&webConsoleCmd.label;"
-+ oncommand="HUDConsoleUI.toggleHUD();"/>
-+ </menupopup>
-+ </menu>
-+ <menuseparator/>
-+ <menu id="appmenu_customize"
-+ label="&appMenuCustomize.label;">
-+ <menupopup id="appmenu_customizeMenu"
-+ onpopupshowing="onViewToolbarsPopupShowing(event);">
-+ <menuseparator/>
-+ <menuitem command="cmd_ToggleTabsOnTop"
-+ type="checkbox"
-+ label="&viewTabsOnTop.label;"/>
-+ <menuitem id="appmenu_toolbarLayout"
-+ label="&appMenuToolbarLayout.label;"
-+ command="cmd_CustomizeToolbars"/>
-+ <menu id="appmenu_sidebars"
-+ label="&appMenuSidebars.label;">
-+ <menupopup id="appmenu_sidebarMenu">
-+ <menuitem id="appmenu_bookmarksSidebar"
-+ key="viewBookmarksSidebarKb"
-+ observes="viewBookmarksSidebar"/>
-+ <menuitem id="appmenu_historySidebar"
-+ key="key_gotoHistory"
-+ observes="viewHistorySidebar"
-+ label="&historyButton.label;"/>
++ <menuseparator class="appmenu-menuseparator"/>
++#define ID_PREFIX appmenu_
++#include browser-charsetmenu.inc
++#undef ID_PREFIX
++ <menuitem id="appmenu_fullScreen"
++ class="menuitem-tooltip"
++ label="&fullScreenCmd.label;"
++ type="checkbox"
++ observes="View:FullScreen"
++ key="key_fullScreen"/>
++ <menuitem id="appmenu-quit"
++ class="menuitem-iconic"
++#ifdef XP_WIN
++ label="&quitApplicationCmdWin.label;"
++#else
++ label="&quitApplicationCmd.label;"
++#endif
++ command="cmd_quitApplication"/>
++ </vbox>
++ <vbox id="appmenuSecondaryPane">
++ <hbox class="split-menuitem">
++ <menuitem id="appmenu_bookmarks"
++ class="menuitem-iconic menuitem-iconic-tooltip split-menuitem-item"
++ flex="1"
++ label="&bookmarksMenu.label;"
++ command="Browser:ShowAllBookmarks"
++ key="manBookmarkKb"/>
++ <menu id="appmenu_bookmarksMenu"
++ class="split-menuitem-menu">
++ <menupopup id="appmenu_bookmarksPopup"
++ placespopup="true"
++ context="placesContext"
++ openInTabs="children"
++ oncommand="BookmarksEventHandler.onCommand(event);"
++ onclick="BookmarksEventHandler.onClick(event);"
++ onpopupshowing="BookmarksMenuButton.onPopupShowing(event);
++ if (!this.parentNode._placesView)
++ new PlacesMenu(event, 'place:folder=BOOKMARKS_MENU');"
++ tooltip="bhTooltip"
++ popupsinherittooltip="true">
++ <menuitem id="appmenu_showAllBookmarks"
++ label="&showAllBookmarks.label;"
++ command="Browser:ShowAllBookmarks"
++ context=""
++ key="manBookmarkKb"/>
++ <menuseparator/>
++ <menuitem id="appmenu_bookmarkThisPage"
++ class="menuitem-iconic"
++ label="&bookmarkThisPageCmd.label;"
++ command="Browser:AddBookmarkAs"
++ key="addBookmarkAsKb"/>
++ <menuitem id="appmenu_subscribeToPage"
++ class="menuitem-iconic"
++ label="&subscribeToPageMenuitem.label;"
++ oncommand="return FeedHandler.subscribeToFeed(null, event);"
++ onclick="checkForMiddleClick(this, event);"
++ observes="singleFeedMenuitemState"/>
++ <menu id="appmenu_subscribeToPageMenu"
++ class="menu-iconic"
++ label="&subscribeToPageMenupopup.label;"
++ observes="multipleFeedsMenuState">
++ <menupopup id="appmenu_subscribeToPageMenupopup"
++ onpopupshowing="return FeedHandler.buildFeedList(event.target);"
++ oncommand="return FeedHandler.subscribeToFeed(null, event);"
++ onclick="checkForMiddleClick(this, event);"/>
++ </menu>
++ <menuseparator/>
++ <menu id="appmenu_bookmarksToolbar"
++ placesanonid="toolbar-autohide"
++ class="menu-iconic bookmark-item"
++ label="&personalbarCmd.label;"
++ container="true">
++ <menupopup id="appmenu_bookmarksToolbarPopup"
++ placespopup="true"
++ context="placesContext"
++ onpopupshowing="if (!this.parentNode._placesView)
++ new PlacesMenu(event, 'place:folder=TOOLBAR');"/>
++ </menu>
++ <menuseparator/>
++ <!-- Bookmarks menu items -->
++ <menuseparator builder="end"
++ class="hide-if-empty-places-result"/>
++ <menuitem id="appmenu_unsortedBookmarks"
++ label="&appMenuUnsorted.label;"
++ oncommand="PlacesCommandHook.showPlacesOrganizer('UnfiledBookmarks');"
++ class="menuitem-iconic"/>
+ </menupopup>
+ </menu>
-+ <menuseparator/>
-+ <menuitem id="appmenu_openAddons"
++ </hbox>
++ <hbox class="split-menuitem">
++ <menuitem id="appmenu_history"
++ class="menuitem-iconic menuitem-iconic-tooltip split-menuitem-item"
++ flex="1"
++ label="&historyMenu.label;"
++ command="Browser:ShowAllHistory"
++ key="showAllHistoryKb"/>
++ <menu id="appmenu_historyMenu"
++ class="split-menuitem-menu">
++ <menupopup id="appmenu_historyMenupopup"
++ placespopup="true"
++ oncommand="this.parentNode._placesView._onCommand(event);"
++ onclick="checkForMiddleClick(this, event);"
++ onpopupshowing="if (!this.parentNode._placesView)
++ new HistoryMenu(event);"
++ tooltip="bhTooltip"
++ popupsinherittooltip="true">
++ <menuitem id="appmenu_showAllHistory"
++ label="&showAllHistoryCmd2.label;"
++ command="Browser:ShowAllHistory"
++ key="showAllHistoryKb"/>
++ <menuseparator/>
++ <menuitem id="appmenu_sanitizeHistory"
++ label="&clearRecentHistory.label;"
++ key="key_sanitize"
++ command="Tools:Sanitize"/>
++ <menuseparator class="hide-if-empty-places-result"/>
++ <menuitem id="appmenu_restoreLastSession"
++ class="restoreLastSession"
++ label="&historyRestoreLastSession.label;"
++ oncommand="restoreLastSession();"
++ disabled="true"/>
++ <menu id="appmenu_recentlyClosedTabsMenu"
++ class="recentlyClosedTabsMenu"
++ label="&historyUndoMenu.label;"
++ disabled="true">
++ <menupopup id="appmenu_recentlyClosedTabsMenupopup"
++ onpopupshowing="document.getElementById('appmenu_historyMenu')._placesView.populateUndoSubmenu();"/>
++ </menu>
++ <menu id="appmenu_recentlyClosedWindowsMenu"
++ class="recentlyClosedWindowsMenu"
++ label="&historyUndoWindowMenu.label;"
++ disabled="true">
++ <menupopup id="appmenu_recentlyClosedWindowsMenupopup"
++ onpopupshowing="document.getElementById('appmenu_historyMenu')._placesView.populateUndoWindowSubmenu();"/>
++ </menu>
++ <menuseparator/>
++ </menupopup>
++ </menu>
++ </hbox>
++ <menuitem id="appmenu_downloads"
++ class="menuitem-tooltip"
++ label="&downloads.label;"
++ command="Tools:Downloads"
++ key="key_openDownloads"/>
++ <spacer id="appmenuSecondaryPane-spacer"/>
++ <menuitem id="appmenu_addons"
++ class="menuitem-iconic menuitem-iconic-tooltip"
+ label="&addons.label;"
-+ command="Tools:Addons"/>
-+ </menupopup>
-+ </menu>
-+ <menuitem id="appmenu_preferences"
++ command="Tools:Addons"
++ key="key_openAddons"/>
++ <hbox class="split-menuitem">
++ <menuitem id="appmenu_customize"
++ label="&preferencesCmd.label;"
++ class="split-menuitem-item"
++ flex="1"
++ oncommand="openPreferences();"/>
++ <menu class="split-menuitem-menu"
++ label="&preferencesCmd.label;">
++ <menupopup id="appmenu_customizeMenu"
++ onpopupshowing="onViewToolbarsPopupShowing(event, document.getElementById('appmenu_toggleTabsOnTop').previousSibling);">
++ <menuitem id="appmenu_preferences"
+#ifdef XP_UNIX
-+ label="&preferencesCmdUnix.label;"
++ label="&preferencesCmdUnix.label;"
+#else
-+ label="&preferencesCmd.label;"
++ label="&preferencesCmd.label;"
+#endif
-+ oncommand="openPreferences();"/>
-+ <menuitem id="appmenu_openHelp"
-+ label="&appMenuHelp.label;"
-+ oncommand="openHelpLink('firefox-help')"
-+ onclick="checkForMiddleClick(this, event);"/>
-+ <menuseparator/>
-+ <menuitem id="appmenu_quit"
-+#ifdef XP_WIN
-+ label="&quitApplicationCmdWin.label;"
-+#else
-+ label="&quitApplicationCmd.label;"
++ oncommand="openPreferences();"/>
++ <menuseparator/>
++ <menuseparator/>
++ <menuitem id="appmenu_toggleTabsOnTop"
++ label="&viewTabsOnTop.label;"
++ type="checkbox"
++ command="cmd_ToggleTabsOnTop"/>
++ <menuitem id="appmenu_toolbarLayout"
++ label="&appMenuToolbarLayout.label;"
++ command="cmd_CustomizeToolbars"/>
++ </menupopup>
++ </menu>
++ </hbox>
++ <hbox class="split-menuitem">
++ <menuitem id="appmenu_help"
++ class="split-menuitem-item"
++ flex="1"
++ label="&helpMenu.label;"
++ oncommand="openHelpLink('firefox-help')"/>
++ <menu class="split-menuitem-menu">
++ <menupopup id="appmenu_helpMenupopup">
++ <menuitem id="appmenu_openHelp"
++ label="&helpMenu.label;"
++ oncommand="openHelpLink('firefox-help')"
++ onclick="checkForMiddleClick(this, event);"/>
++ <menuitem id="appmenu_gettingStarted"
++ label="&appMenuGettingStarted.label;"
++ oncommand="gBrowser.loadOneTab('http://www.mozilla.com/firefox/central/', {inBackground: false});"
++ onclick="checkForMiddleClick(this, event);"/>
++ <menuitem id="appmenu_troubleshootingInfo"
++ label="&helpTroubleshootingInfo.label;"
++ oncommand="openTroubleshootingPage()"
++ onclick="checkForMiddleClick(this,event);"/>
++ <menuseparator/>
++ <menuitem id="appmenu_safeMode"
++ accesskey="&appMenuSafeMode.accesskey;"
++ label="&appMenuSafeMode.label;"
++ oncommand="safeModeRestart();"/>
++ <menuseparator/>
++ <menuitem id="appmenu_about"
++ label="&aboutProduct.label;"
++ oncommand="openAboutDialog();"/>
++ </menupopup>
++ </menu>
++ </hbox>
++#ifdef MOZ_SERVICES_SYNC
++ <spacer flex="1"/>
++ <!-- only one of sync-setup or sync-syncnow will be showing at once -->
++ <menuitem id="sync-setup-appmenu"
++ label="&syncSetup.label;"
++ observes="sync-setup-state"
++ oncommand="gSyncUI.openSetup()"/>
++ <menuitem id="sync-syncnowitem-appmenu"
++ label="&syncSyncNowItem.label;"
++ observes="sync-syncnow-state"
++ oncommand="gSyncUI.doSync(event);"/>
+#endif
-+ command="cmd_quitApplication"/>
-+ </menupopup>
-+ </button>
++ </vbox>
++ </hbox>
++ </menupopup>
++ </button>
+ </hbox>
++ <spacer id="titlebar-spacer" flex="1"/>
++ <hbox id="titlebar-buttonbox">
++ <toolbarbutton id="titlebar-min" oncommand="window.minimize();"/>
++ <toolbarbutton id="titlebar-max" oncommand="onTitlebarMaxClick();"/>
++ <toolbarbutton id="titlebar-close" command="cmd_closeWindow"/>
++ </hbox>
++ </hbox>
++ </vbox>
+#endif
+
++<deck flex="1" id="tab-view-deck">
++<vbox flex="1">
++
+ <toolbox id="navigator-toolbox"
+ defaultmode="icons" mode="icons"
+#ifdef WINCE
@@ -650,10 +885,10 @@
+ fullscreentoolbar="true" mode="icons" customizable="true"
+#ifdef WINCE
+ iconsize="small" defaulticonsize="small"
-+ defaultset="unified-back-forward-button,reload-button,stop-button,home-button,urlbar-container,search-container,bookmarks-menu-button-container,navigator-throbber,fullscreenflex,window-controls"
++ defaultset="unified-back-forward-button,home-button,urlbar-container,reload-button,stop-button,search-container,bookmarks-menu-button-container,navigator-throbber,fullscreenflex,window-controls"
+#else
+ iconsize="large"
-+ defaultset="unified-back-forward-button,reload-button,stop-button,home-button,urlbar-container,search-container,bookmarks-menu-button-container,fullscreenflex,window-controls"
++ defaultset="unified-back-forward-button,home-button,urlbar-container,reload-button,stop-button,search-container,bookmarks-menu-button-container,fullscreenflex,window-controls"
+#endif
+ context="toolbar-context-menu">
+
@@ -687,17 +922,6 @@
+ </toolbarbutton>
+ </toolbaritem>
+
-+ <toolbarbutton id="reload-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+ label="&reloadCmd.label;" removable="true"
-+ command="Browser:ReloadOrDuplicate"
-+ onclick="checkForMiddleClick(this, event);"
-+ tooltiptext="&reloadButton.tooltip;"/>
-+
-+ <toolbarbutton id="stop-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+ label="&stopCmd.label;" removable="true"
-+ command="Browser:Stop"
-+ tooltiptext="&stopButton.tooltip;"/>
-+
+ <toolbarbutton id="home-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ persist="class" removable="true"
+ label="&homeButton.label;"
@@ -705,9 +929,10 @@
+ ondragenter="homeButtonObserver.onDragOver(event)"
+ ondrop="homeButtonObserver.onDrop(event)"
+ ondragleave="homeButtonObserver.onDragLeave(event)"
-+ onclick="BrowserGoHome(event);"/>
++ onclick="BrowserGoHome(event);"
++ aboutHomeOverrideTooltip="&abouthome.pageTitle;"/>
+
-+ <toolbaritem id="urlbar-container" align="center" flex="400" persist="width"
++ <toolbaritem id="urlbar-container" align="center" flex="400" persist="width" combined="true"
+ title="&locationItem.title;" class="chromeclass-location" removable="true">
+ <textbox id="urlbar" flex="1"
+ placeholder="&urlbar.placeholder;"
@@ -733,6 +958,8 @@
+ <box id="notification-popup-box" hidden="true" align="center">
+ <image id="geo-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="addons-notification-icon" class="notification-anchor-icon" role="button"/>
++ <image id="indexedDB-notification-icon" class="notification-anchor-icon" role="button"/>
++ <image id="password-notification-icon" class="notification-anchor-icon" role="button"/>
+ </box>
+ <!-- Use onclick instead of normal popup= syntax since the popup
+ code fires onmousedown, and hence eats our favicon drag events.
@@ -740,14 +967,14 @@
+ has focus, otherwise pressing F6 focuses it instead of the location bar -->
+ <box id="identity-box" role="button"
+ onclick="gIdentityHandler.handleIdentityButtonEvent(event);"
-+ onkeypress="gIdentityHandler.handleIdentityButtonEvent(event);">
++ onkeypress="gIdentityHandler.handleIdentityButtonEvent(event);"
++ ondragstart="gIdentityHandler.onDragStart(event);">
+ <hbox id="identity-box-inner" align="center">
+ <stack id="page-proxy-stack"
+ onclick="PageProxyClickHandler(event);">
+ <image id="urlbar-throbber" busy="false"/>
+ <image id="page-proxy-favicon" validate="never"
+ pageproxystate="invalid"
-+ ondragstart="proxyIconDNDObserver.onDragStart(event);"
+ onerror="this.removeAttribute('src');"/>
+ </stack>
+ <hbox id="identity-icon-labels">
@@ -758,19 +985,6 @@
+ </box>
+ <label id="urlbar-display" value="&urlbar.switchToTab.label;"/>
+ <hbox id="urlbar-icons">
-+ <button type="menu"
-+ style="-moz-user-focus: none"
-+ class="plain urlbar-icon"
-+ id="feed-button"
-+ collapsed="true"
-+ tooltiptext="&feedButton.tooltip;"
-+ onclick="return FeedHandler.onFeedButtonClick(event);">
-+ <menupopup position="after_end"
-+ id="feed-menu"
-+ onpopupshowing="return FeedHandler.buildFeedList(this);"
-+ oncommand="return FeedHandler.subscribeToFeed(null, event);"
-+ onclick="checkForMiddleClick(this, event);"/>
-+ </button>
+ <image id="star-button"
+ class="urlbar-icon"
+ onclick="PlacesStarButton.onClick(event);"/>
@@ -779,9 +993,31 @@
+ tooltiptext="&goEndCap.tooltip;"
+ onclick="gURLBar.handleCommand(event);"/>
+ </hbox>
++ <progressmeter id="urlbar-progress" mode="normal" value="0" collapsed="true"/>
++ <toolbarbutton id="urlbar-go-button"
++ onclick="gURLBar.handleCommand(event);"
++ tooltiptext="&goEndCap.tooltip;"/>
++ <toolbarbutton id="urlbar-reload-button"
++ command="Browser:ReloadOrDuplicate"
++ onclick="checkForMiddleClick(this, event);"
++ tooltiptext="&reloadButton.tooltip;"/>
++ <toolbarbutton id="urlbar-stop-button"
++ command="Browser:Stop"
++ tooltiptext="&stopButton.tooltip;"/>
+ </textbox>
+ </toolbaritem>
+
++ <toolbarbutton id="reload-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++ label="&reloadCmd.label;" removable="true"
++ command="Browser:ReloadOrDuplicate"
++ onclick="checkForMiddleClick(this, event);"
++ tooltiptext="&reloadButton.tooltip;"/>
++
++ <toolbarbutton id="stop-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++ label="&stopCmd.label;" removable="true"
++ command="Browser:Stop"
++ tooltiptext="&stopButton.tooltip;"/>
++
+ <toolbaritem id="search-container" title="&searchItem.title;"
+ align="center" class="chromeclass-toolbar-additional"
+ flex="100" persist="width" removable="true">
@@ -811,47 +1047,56 @@
+ if (!this.parentNode._placesView)
+ new PlacesMenu(event, 'place:folder=BOOKMARKS_MENU');"
+ tooltip="bhTooltip" popupsinherittooltip="true">
-+ <menuitem id="BMB_bookmarkAllTabs"
-+ label="&addCurPagesCmd.label;"
-+ command="Browser:BookmarkAllTabs"
-+ key="bookmarkAllTabsKb"/>
-+ <menuitem id="BMB_bookmarksShowAll"
-+ label="&organizeBookmarks.label;"
-+ command="Browser:ShowAllBookmarks"
-+ key="manBookmarkKb"/>
-+ <menuseparator/>
+ <menuitem id="BMB_viewBookmarksToolbar"
++ placesanonid="view-toolbar"
++ toolbarId="PersonalToolbar"
+ type="checkbox"
+ oncommand="onViewToolbarCommand(event)"
+ label="&viewBookmarksToolbar.label;"/>
-+ <menuitem id="BMB_viewBookmarksSidebar"
-+ label="&viewBookmarksSidebar.label;"
-+ type="checkbox"
-+ oncommand="toggleSidebar('viewBookmarksSidebar');"
-+ key="viewBookmarksSidebarKb">
-+ <observes element="viewBookmarksSidebar" attribute="checked"/>
-+ </menuitem>
++ <menuseparator/>
++ <menuitem id="BMB_bookmarksShowAll"
++ label="&showAllBookmarks.label;"
++ command="Browser:ShowAllBookmarks"
++ key="manBookmarkKb"/>
+ <menuseparator/>
-+ <menu id="BMB_bookmarksToolbarFolderMenu"
++ <menuitem id="BMB_bookmarkThisPage"
++ class="menuitem-iconic"
++ label="&bookmarkThisPageCmd.label;"
++ command="Browser:AddBookmarkAs"
++ key="addBookmarkAsKb"/>
++ <menuitem id="BMB_subscribeToPageMenuitem"
++ label="&subscribeToPageMenuitem.label;"
++ oncommand="return FeedHandler.subscribeToFeed(null, event);"
++ onclick="checkForMiddleClick(this, event);"
++ observes="singleFeedMenuitemState"/>
++ <menu id="BMB_subscribeToPageMenupopup"
++ label="&subscribeToPageMenupopup.label;"
++ observes="multipleFeedsMenuState">
++ <menupopup id="BMB_subscribeToPageSubmenuMenupopup"
++ onpopupshowing="return FeedHandler.buildFeedList(event.target);"
++ oncommand="return FeedHandler.subscribeToFeed(null, event);"
++ onclick="checkForMiddleClick(this, event);"/>
++ </menu>
++ <menuseparator/>
++ <menu id="BMB_bookmarksToolbar"
++ placesanonid="toolbar-autohide"
+ class="menu-iconic bookmark-item"
+ label="&personalbarCmd.label;"
+ container="true">
-+ <menupopup id="BMB_bookmarksToolbarFolderPopup"
++ <menupopup id="BMB_bookmarksToolbarPopup"
+ placespopup="true"
+ context="placesContext"
+ onpopupshowing="if (!this.parentNode._placesView)
+ new PlacesMenu(event, 'place:folder=TOOLBAR');"/>
+ </menu>
-+ <menu id="BMB_unsortedBookmarksFolderMenu"
-+ class="menu-iconic bookmark-item"
-+ container="true">
-+ <menupopup id="BMB_unsortedBookmarksFolderPopup"
-+ placespopup="true"
-+ context="placesContext"
-+ onpopupshowing="if (!this.parentNode._placesView)
-+ new PlacesMenu(event, 'place:folder=UNFILED_BOOKMARKS');"/>
-+ </menu>
+ <menuseparator/>
++ <!-- Bookmarks menu items -->
++ <menuseparator builder="end"
++ class="hide-if-empty-places-result"/>
++ <menuitem id="BMB_unsortedBookmarks"
++ label="&bookmarksMenuButton.unsorted.label;"
++ oncommand="PlacesCommandHook.showPlacesOrganizer('UnfiledBookmarks');"
++ class="menuitem-iconic"/>
+ </menupopup>
+ </toolbarbutton>
+ </toolbaritem>
@@ -929,7 +1174,7 @@
+ iconsize="small" defaulticonsize="small" lockiconsize="true"
+ aria-label="&tabsToolbar.label;"
+ context="toolbar-context-menu"
-+ defaultset="tabbrowser-tabs,new-tab-button,alltabs-button,tabs-closebutton"
++ defaultset="tabbrowser-tabs,new-tab-button,alltabs-button,tabview-button,tabs-closebutton"
+ collapsed="true">
+
+ <tabs id="tabbrowser-tabs"
@@ -963,6 +1208,13 @@
+ position="after_end"/>
+ </toolbarbutton>
+
++ <toolbarbutton id="tabview-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++ label="&tabGroupsButton.label;"
++ command="Browser:ToggleTabView"
++ tooltiptext="&tabGroupsButton.tooltip;"
++ removable="true"
++ observes="tabviewGroupsNumber"/>
++
+ <toolbarbutton id="tabs-closebutton"
+ class="close-button tabs-closebutton"
+ command="cmd_close"
@@ -973,6 +1225,9 @@
+
+ <toolbarpalette id="BrowserToolbarPalette">
+
++# Update primaryToolbarButtons in browser/themes/browserShared.inc when adding
++# or removing default items with the toolbarbutton-1 class.
++
+ <toolbarbutton id="print-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ label="&printButton.label;" command="cmd_print"
+ tooltiptext="&printButton.tooltip;"/>
@@ -1033,6 +1288,23 @@
+ label="&fullScreenCmd.label;"
+ tooltiptext="&fullScreenButton.tooltip;"/>
+
++ <toolbaritem id="zoom-controls" class="chromeclass-toolbar-additional"
++ title="&zoomControls.label;">
++ <toolbarbutton id="zoom-out-button" class="toolbarbutton-1"
++ label="&fullZoomReduceCmd.label;"
++ command="cmd_fullZoomReduce"
++ tooltiptext="&zoomOutButton.tooltip;"/>
++ <toolbarbutton id="zoom-in-button" class="toolbarbutton-1"
++ label="&fullZoomEnlargeCmd.label;"
++ command="cmd_fullZoomEnlarge"
++ tooltiptext="&zoomInButton.tooltip;"/>
++ </toolbaritem>
++#ifdef MOZ_SERVICES_SYNC
++ <toolbarbutton id="sync-button"
++ class="toolbarbutton-1 chromeclass-toolbar-additional"
++ label="&syncToolbarButton.label;"
++ oncommand="gSyncUI.handleToolbarButton()"/>
++#endif
+ </toolbarpalette>
+ </toolbox>
+
@@ -1058,53 +1330,17 @@
+ </vbox>
+ </hbox>
+
-+ <vbox id="browser-bottombox">
-+ <statusbar class="chromeclass-status" id="status-bar"
-+#ifdef WINCE
-+ hidden="true"
-+#endif
-+ >
-+ <statusbarpanel id="statusbar-display" label="" flex="1"/>
-+ <statusbarpanel class="statusbarpanel-progress" collapsed="true" id="statusbar-progresspanel">
-+ <progressmeter class="progressmeter-statusbar" id="statusbar-icon" mode="normal" value="0"/>
-+ </statusbarpanel>
-+ <statusbarpanel id="download-monitor" class="statusbarpanel-iconic-text"
-+ tooltiptext="&downloadMonitor2.tooltip;" hidden="true"
-+ command="Tools:Downloads"/>
-+ <statusbarpanel id="security-button" class="statusbarpanel-iconic"
-+ hidden="true"
-+ onclick="if (event.button == 0 && event.detail == 1) displaySecurityInfo();"/>
-+#ifdef MOZ_SERVICES_SYNC
-+ <statusbarpanel id="sync-status-button"
-+ class="statusbarpanel-iconic-text"
-+ image="chrome://browser/skin/sync-16.png"
-+ label="&syncLogInItem.label;"
-+ oncommand="gSyncUI.handleStatusbarButton();"
-+ onmousedown="event.preventDefault();">
-+ </statusbarpanel>
-+ <separator class="thin"/>
-+ <statusbarpanel id="sync-notifications-button"
-+ class="statusbarpanel-iconic-text"
-+ hidden="true"
-+ popup="sync-notifications-panel">
-+ </statusbarpanel>
-+ <panel id="sync-notifications-panel" position="before_end">
-+ <notificationbox id="sync-notifications-box"/>
-+ </panel>
-+#endif
-+ <statusbarpanel id="page-report-button" type="menu"
-+ class="statusbarpanel-menu-iconic"
-+ hidden="true"
-+ tooltiptext="&pageReportIcon.tooltip;">
-+ <menupopup onpopupshowing="gPopupBlockerObserver.fillPopupList(event);">
-+ <menuitem observes="blockedPopupAllowSite"/>
-+ <menuitem observes="blockedPopupEditSettings"/>
-+ <menuitem observes="blockedPopupDontShowMessage"/>
-+ <menuseparator observes="blockedPopupsSeparator"/>
-+ </menupopup>
-+ </statusbarpanel>
-+ </statusbar>
++ <vbox id="browser-bottombox" layer="true">
++ <toolbar id="addon-bar" toolbarname="&addonBarCmd.label;" collapsed="true"
++ class="toolbar-primary chromeclass-toolbar"
++ context="toolbar-context-menu" toolboxid="navigator-toolbox"
++ mode="icons" iconsize="small" defaulticonsize="small"
++ lockiconsize="true"
++ customizable="true" align="right">
++ <statusbar id="status-bar"/>
++ </toolbar>
+ </vbox>
++
+#ifndef XP_UNIX
+ <svg:svg height="0">
+ <svg:mask id="winstripe-keyhole-forward-mask" maskContentUnits="objectBoundingBox">
@@ -1117,6 +1353,13 @@
+ </svg:mask>
+ </svg:svg>
+#endif
++
++</vbox>
++# <iframe id="tab-view"> is dynamically appended as the 2nd child of #tab-view-deck.
++# Introducing the iframe dynamically, as needed, was found to be better than
++# starting with an empty iframe here in browser.xul from a Ts standpoint.
++</deck>
++
+</window>
diff --git a/browser/base/jar.mn b/browser/base/jar.mn
--- a/browser/base/jar.mn