From d66224105185ab16f03ce2786fa2d53edd35b1b9 Mon Sep 17 00:00:00 2001 From: "cbiesinger%web.de" Date: Wed, 28 Jul 2004 20:54:50 +0000 Subject: [PATCH] Bug 246695 Gtk Embedding widget ignore scrollbar chrome setting r=bryner sr=blizzard patch by Crispin Flowerday git-svn-id: svn://10.0.0.236/trunk@159988 18797224-902f-48f8-a5cc-f745e15eee43 --- .../browser/gtk/src/EmbedPrivate.cpp | 41 ++++++++++++++++++- .../embedding/browser/gtk/src/EmbedPrivate.h | 3 ++ .../embedding/browser/gtk/src/EmbedWindow.cpp | 2 +- .../browser/gtk/src/gtkmozembed2.cpp | 2 +- 4 files changed, 45 insertions(+), 3 deletions(-) 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