diff --git a/mozilla/embedding/browser/gtk/src/EmbedPrivate.cpp b/mozilla/embedding/browser/gtk/src/EmbedPrivate.cpp index c63e18b1153..7d2b812d9fc 100644 --- a/mozilla/embedding/browser/gtk/src/EmbedPrivate.cpp +++ b/mozilla/embedding/browser/gtk/src/EmbedPrivate.cpp @@ -61,6 +61,9 @@ #include #include +// For seting scrollbar visibilty +#include + // for the focus hacking we need to do #include @@ -145,7 +148,7 @@ EmbedPrivate::EmbedPrivate(void) mContentListener = nsnull; mEventListener = nsnull; mStream = nsnull; - mChromeMask = 0; + mChromeMask = nsIWebBrowserChrome::CHROME_ALL; mIsChrome = PR_FALSE; mChromeLoaded = PR_FALSE; mListenersAttached = PR_FALSE; @@ -286,6 +289,9 @@ EmbedPrivate::Realize(PRBool *aAlreadyRealized) gdk_window_get_user_data(tmp_window, &data); mMozWindowWidget = NS_STATIC_CAST(GtkWidget *, data); + // Apply the current chrome mask + ApplyChromeMask(); + return NS_OK; } @@ -403,6 +409,39 @@ EmbedPrivate::LoadCurrentURI(void) nsnull); // extra headers } +void +EmbedPrivate::ApplyChromeMask() +{ + if (mWindow) { + nsCOMPtr webBrowser; + mWindow->GetWebBrowser(getter_AddRefs(webBrowser)); + + nsCOMPtr domWindow; + webBrowser->GetContentDOMWindow(getter_AddRefs(domWindow)); + if (domWindow) { + + nsCOMPtr scrollbars; + domWindow->GetScrollbars(getter_AddRefs(scrollbars)); + if (scrollbars) { + + scrollbars->SetVisible + (mChromeMask & nsIWebBrowserChrome::CHROME_SCROLLBARS ? + PR_TRUE : PR_FALSE); + } + } + } +} + + +void +EmbedPrivate::SetChromeMask (PRUint32 aChromeMask) +{ + mChromeMask = aChromeMask; + + ApplyChromeMask(); +} + + /* static */ void EmbedPrivate::PushStartup(void) diff --git a/mozilla/embedding/browser/gtk/src/EmbedPrivate.h b/mozilla/embedding/browser/gtk/src/EmbedPrivate.h index bfb8d68db0b..d52e9889b55 100644 --- a/mozilla/embedding/browser/gtk/src/EmbedPrivate.h +++ b/mozilla/embedding/browser/gtk/src/EmbedPrivate.h @@ -83,6 +83,9 @@ class EmbedPrivate { void SetURI (const char *aURI); void LoadCurrentURI (void); + void SetChromeMask (PRUint32 chromeMask); + void ApplyChromeMask (); + static void PushStartup (void); static void PopStartup (void); static void SetCompPath (const char *aPath); diff --git a/mozilla/embedding/browser/gtk/src/EmbedWindow.cpp b/mozilla/embedding/browser/gtk/src/EmbedWindow.cpp index 837ab7d50c0..6bd3e189760 100644 --- a/mozilla/embedding/browser/gtk/src/EmbedWindow.cpp +++ b/mozilla/embedding/browser/gtk/src/EmbedWindow.cpp @@ -181,7 +181,7 @@ EmbedWindow::GetChromeFlags(PRUint32 *aChromeFlags) NS_IMETHODIMP EmbedWindow::SetChromeFlags(PRUint32 aChromeFlags) { - mOwner->mChromeMask = aChromeFlags; + mOwner->SetChromeMask(aChromeFlags); return NS_OK; } diff --git a/mozilla/embedding/browser/gtk/src/gtkmozembed2.cpp b/mozilla/embedding/browser/gtk/src/gtkmozembed2.cpp index fdef45491c3..c7cf56d6200 100644 --- a/mozilla/embedding/browser/gtk/src/gtkmozembed2.cpp +++ b/mozilla/embedding/browser/gtk/src/gtkmozembed2.cpp @@ -1164,7 +1164,7 @@ gtk_moz_embed_set_chrome_mask(GtkMozEmbed *embed, guint32 flags) embedPrivate = (EmbedPrivate *)embed->data; - embedPrivate->mChromeMask = flags; + embedPrivate->SetChromeMask(flags); } guint32