Add code to post fix string to title and to tell the window mediator about title changes

git-svn-id: svn://10.0.0.236/trunk@32244 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
davidm%netscape.com
1999-05-19 03:21:19 +00:00
parent e8f14c6429
commit b5cc6cd2be
2 changed files with 37 additions and 7 deletions

View File

@@ -87,7 +87,7 @@
#ifdef XP_MAC
#include <Menus.h>
#endif
#include "nsIWindowMediator.h"
/* Define Class IDs */
static NS_DEFINE_IID(kWindowCID, NS_WINDOW_CID);
@@ -104,9 +104,14 @@ static NS_DEFINE_IID(kContextMenuCID, NS_CONTEXTMENU_CID);
static NS_DEFINE_CID(kPrefCID, NS_PREF_CID);
static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID);
static NS_DEFINE_CID(kWindowMediatorCID, NS_WINDOWMEDIATOR_CID);
static NS_DEFINE_IID(kIDocumentLoaderFactoryIID, NS_IDOCUMENTLOADERFACTORY_IID);
static NS_DEFINE_CID(kLayoutDocumentLoaderFactoryCID, NS_LAYOUT_DOCUMENT_LOADER_FACTORY_CID);
/* Define Interface IDs */
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIWebShellWindowIID, NS_IWEBSHELL_WINDOW_IID);
@@ -134,9 +139,12 @@ static NS_DEFINE_IID(kIXULCommandIID, NS_IXULCOMMAND_IID);
static NS_DEFINE_IID(kIContentIID, NS_ICONTENT_IID);
static NS_DEFINE_IID(kIEventQueueServiceIID, NS_IEVENTQUEUESERVICE_IID);
static NS_DEFINE_IID(kIWindowMediatorIID,NS_IWINDOWMEDIATOR_IID);
static NS_DEFINE_IID(kIXULPopupListenerIID, NS_IXULPOPUPLISTENER_IID);
static NS_DEFINE_CID(kXULPopupListenerCID, NS_XULPOPUPLISTENER_CID);
#ifdef DEBUG_rods
#define DEBUG_MENUSDEL 1
#endif
@@ -1819,7 +1827,7 @@ void nsWebShellWindow::SetTitleFromXUL()
webshellElement = do_QueryInterface(webshellNode);
if (webshellElement && windowWidget &&
NS_SUCCEEDED(webshellElement->GetAttribute("title", windowTitle)))
windowWidget->SetTitle(windowTitle);
SetTitle(windowTitle);
} // SetTitleFromXUL
@@ -2070,9 +2078,33 @@ NS_IMETHODIMP nsWebShellWindow::GetChrome(PRUint32& aChromeMaskResult)
NS_IMETHODIMP nsWebShellWindow::SetTitle(const PRUnichar* aTitle)
{
nsIWidget *windowWidget = GetWidget();
// Get window modifier
nsCOMPtr<nsIDOMNode> webshellNode = GetDOMNodeFromWebShell(mWebShell);
nsCOMPtr<nsIDOMElement> webshellElement;
nsString windowTitleModifier;
if (webshellNode)
webshellElement = do_QueryInterface(webshellNode);
if (webshellElement )
webshellElement->GetAttribute("titlemodifier", windowTitleModifier );
nsString title( aTitle );
title += windowTitleModifier;
if (windowWidget)
windowWidget->SetTitle(aTitle);
windowWidget->SetTitle(title);
// Tell the window mediator that a title has changed
#if 1
{
nsIWindowMediator* service;
if (NS_FAILED(nsServiceManager::GetService(kWindowMediatorCID, kIWindowMediatorIID, (nsISupports**) &service ) ) )
return NS_OK;
service->UpdateWindowTitle( this, title );
nsServiceManager::ReleaseService(kWindowMediatorCID, service);
}
#endif // Window Mediation
return NS_OK;
}