diff --git a/mozilla/content/build/Makefile.in b/mozilla/content/build/Makefile.in
index 345e16c19c7..924f023f3a4 100644
--- a/mozilla/content/build/Makefile.in
+++ b/mozilla/content/build/Makefile.in
@@ -55,6 +55,8 @@ REQUIRES = xpcom \
xul \
xuldoc \
xultmpl \
+ timer \
+ webBrowser_core \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/content/build/makefile.win b/mozilla/content/build/makefile.win
index e1f61529a4a..e666b1cb21e 100644
--- a/mozilla/content/build/makefile.win
+++ b/mozilla/content/build/makefile.win
@@ -53,6 +53,7 @@ REQUIRES = xpcom \
gfx \
layout_xul \
content_xul \
+ webBrowser_core \
$(NULL)
LCFLAGS = \
diff --git a/mozilla/content/events/src/Makefile.in b/mozilla/content/events/src/Makefile.in
index 36d5f0fa222..f32c117c2a3 100644
--- a/mozilla/content/events/src/Makefile.in
+++ b/mozilla/content/events/src/Makefile.in
@@ -44,6 +44,7 @@ REQUIRES = xpcom \
htmlparser \
view \
necko \
+ webBrowser_core \
unicharutil \
$(NULL)
diff --git a/mozilla/content/events/src/makefile.win b/mozilla/content/events/src/makefile.win
index 18ce650b97f..07b9bc81f14 100644
--- a/mozilla/content/events/src/makefile.win
+++ b/mozilla/content/events/src/makefile.win
@@ -42,6 +42,7 @@ REQUIRES = xpcom \
layout \
layout_xul \
necko \
+ webBrowser_core \
unicharutil \
$(NULL)
diff --git a/mozilla/content/html/document/src/Makefile.in b/mozilla/content/html/document/src/Makefile.in
index 8b2073c7382..4972e8063e9 100644
--- a/mozilla/content/html/document/src/Makefile.in
+++ b/mozilla/content/html/document/src/Makefile.in
@@ -57,6 +57,7 @@ REQUIRES = xpcom \
imglib2 \
xpconnect \
unicharutil \
+ webBrowser_core \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/content/html/document/src/makefile.win b/mozilla/content/html/document/src/makefile.win
index 5c61524ae8e..379f81221a2 100644
--- a/mozilla/content/html/document/src/makefile.win
+++ b/mozilla/content/html/document/src/makefile.win
@@ -52,6 +52,7 @@ REQUIRES = xpcom \
layout \
gfx \
bookmarks \
+ webBrowser_core\
$(NULL)
DEFINES=-D_IMPL_NS_HTML -DWIN32_LEAN_AND_MEAN
diff --git a/mozilla/content/xbl/src/Makefile.in b/mozilla/content/xbl/src/Makefile.in
index f042bb1ca0c..b933c1af674 100644
--- a/mozilla/content/xbl/src/Makefile.in
+++ b/mozilla/content/xbl/src/Makefile.in
@@ -52,6 +52,7 @@ REQUIRES = xpcom \
rdf \
imglib2 \
unicharutil \
+ webBrowser_core \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/content/xbl/src/makefile.win b/mozilla/content/xbl/src/makefile.win
index b8e73646ad5..94ae5263b9e 100644
--- a/mozilla/content/xbl/src/makefile.win
+++ b/mozilla/content/xbl/src/makefile.win
@@ -46,6 +46,7 @@ REQUIRES = xpcom \
rdf \
content_xul \
unicharutil \
+ webBrowser_core \
$(NULL)
DEFINES=-D_IMPL_NS_HTML -DWIN32_LEAN_AND_MEAN
diff --git a/mozilla/content/xbl/src/nsXBLWindowHandler.cpp b/mozilla/content/xbl/src/nsXBLWindowHandler.cpp
index dd30adc783b..1217ccac250 100644
--- a/mozilla/content/xbl/src/nsXBLWindowHandler.cpp
+++ b/mozilla/content/xbl/src/nsXBLWindowHandler.cpp
@@ -63,6 +63,8 @@
#include "nsIXBLService.h"
#include "nsIServiceManager.h"
#include "nsIDOMDocument.h"
+#include "nsISelectionController.h"
+
#ifdef INCLUDE_XUL
#include "nsXULAtoms.h"
#endif
@@ -240,9 +242,9 @@ nsXBLWindowHandler :: IsEditor()
docShell->GetPresShell(getter_AddRefs(presShell));
if (presShell) {
- PRBool isEditor;
- presShell->GetDisplayNonTextSelection(&isEditor);
- return isEditor;
+ PRInt16 isEditor;
+ presShell->GetSelectionFlags(&isEditor);
+ return isEditor == nsISelectionDisplay::DISPLAY_ALL;
}
return PR_FALSE;
diff --git a/mozilla/content/xul/document/src/Makefile.in b/mozilla/content/xul/document/src/Makefile.in
index 8e4a0dd4aac..cb1cde48e9c 100644
--- a/mozilla/content/xul/document/src/Makefile.in
+++ b/mozilla/content/xul/document/src/Makefile.in
@@ -53,6 +53,7 @@ REQUIRES = xpcom \
xul \
xultmpl \
webshell \
+ webBrowser_core \
unicharutil \
$(NULL)
diff --git a/mozilla/content/xul/document/src/makefile.win b/mozilla/content/xul/document/src/makefile.win
index bc7c4e17f00..795e37f418b 100644
--- a/mozilla/content/xul/document/src/makefile.win
+++ b/mozilla/content/xul/document/src/makefile.win
@@ -47,6 +47,7 @@ REQUIRES = xpcom \
layout_xul \
content \
webshell \
+ webBrowser_core \
unicharutil \
$(NULL)
diff --git a/mozilla/editor/composer/src/Makefile.in b/mozilla/editor/composer/src/Makefile.in
index ef40e2ef63d..e7e547d049f 100644
--- a/mozilla/editor/composer/src/Makefile.in
+++ b/mozilla/editor/composer/src/Makefile.in
@@ -56,6 +56,7 @@ REQUIRES = xpcom \
mimetype \
imglib2 \
gfx2 \
+ webBrowser_core \
unicharutil \
$(NULL)
diff --git a/mozilla/editor/composer/src/makefile.win b/mozilla/editor/composer/src/makefile.win
index a750ebb5ea3..235ca44bc81 100644
--- a/mozilla/editor/composer/src/makefile.win
+++ b/mozilla/editor/composer/src/makefile.win
@@ -62,6 +62,7 @@ REQUIRES = xpcom \
content_xul \
imglib2 \
gfx2 \
+ webBrowser_core \
unicharutil \
$(NULL)
diff --git a/mozilla/editor/libeditor/base/Makefile.in b/mozilla/editor/libeditor/base/Makefile.in
index 1eceb64c052..13a3be8561e 100644
--- a/mozilla/editor/libeditor/base/Makefile.in
+++ b/mozilla/editor/libeditor/base/Makefile.in
@@ -44,6 +44,7 @@ REQUIRES = xpcom \
gfx \
widget \
xuldoc \
+ webBrowser_core \
$(NULL)
# Internal header files, needed by other editor sublibs:
diff --git a/mozilla/editor/libeditor/base/makefile.win b/mozilla/editor/libeditor/base/makefile.win
index 76e1e8f8e37..ec4010b9bb8 100644
--- a/mozilla/editor/libeditor/base/makefile.win
+++ b/mozilla/editor/libeditor/base/makefile.win
@@ -38,6 +38,7 @@ REQUIRES = xpcom \
appshell \
gfx \
widget \
+ webBrowser_core \
$(NULL)
CPP_OBJS = \
diff --git a/mozilla/editor/libeditor/base/nsEditor.cpp b/mozilla/editor/libeditor/base/nsEditor.cpp
index baddd432357..6d7649662b0 100644
--- a/mozilla/editor/libeditor/base/nsEditor.cpp
+++ b/mozilla/editor/libeditor/base/nsEditor.cpp
@@ -38,7 +38,6 @@
* ***** END LICENSE BLOCK ***** */
#include "pratom.h"
-
#include "nsIDOMDocument.h"
#include "nsIPref.h"
@@ -108,6 +107,7 @@
#include "nsEditor.h"
#include "nsEditorUtils.h"
+#include "nsISelectionDisplay.h"
#ifdef HACK_FORCE_REDRAW
// INCLUDES FOR EVIL HACK TO FOR REDRAW
@@ -319,7 +319,7 @@ nsEditor::Init(nsIDOMDocument *aDoc, nsIPresShell* aPresShell, nsIContent *aRoot
aSelCon->SetCaretReadOnly(PR_FALSE);
aSelCon->SetDisplaySelection(nsISelectionController::SELECTION_ON);
- aSelCon->SetDisplayNonTextSelection(PR_TRUE);//we want to see all the selection reflected to user
+ aSelCon->SetSelectionFlags(nsISelectionDisplay::DISPLAY_ALL);//we want to see all the selection reflected to user
// Set the selection to the beginning:
diff --git a/mozilla/editor/libeditor/html/Makefile.in b/mozilla/editor/libeditor/html/Makefile.in
index 5af151cabbc..2418df3f0fb 100644
--- a/mozilla/editor/libeditor/html/Makefile.in
+++ b/mozilla/editor/libeditor/html/Makefile.in
@@ -42,6 +42,7 @@ REQUIRES = xpcom \
pref \
gfx \
widget \
+ webBrowser_core \
$(NULL)
# Building the full blown HTML Editor so add its source files and objects:
diff --git a/mozilla/editor/libeditor/html/makefile.win b/mozilla/editor/libeditor/html/makefile.win
index 558cc837280..457e100baca 100644
--- a/mozilla/editor/libeditor/html/makefile.win
+++ b/mozilla/editor/libeditor/html/makefile.win
@@ -36,6 +36,7 @@ REQUIRES = xpcom \
pref \
gfx \
widget \
+ webBrowser_core \
$(NULL)
CPP_OBJS = \
diff --git a/mozilla/editor/libeditor/text/Makefile.in b/mozilla/editor/libeditor/text/Makefile.in
index 6ee57181828..13e1466ab54 100644
--- a/mozilla/editor/libeditor/text/Makefile.in
+++ b/mozilla/editor/libeditor/text/Makefile.in
@@ -44,7 +44,8 @@ REQUIRES = xpcom \
lwbrk \
gfx \
widget \
- unicharutil \
+ webBrowser_core \
+ unicharutil \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/editor/libeditor/text/makefile.win b/mozilla/editor/libeditor/text/makefile.win
index 8b98f24990c..2af22eff8fd 100644
--- a/mozilla/editor/libeditor/text/makefile.win
+++ b/mozilla/editor/libeditor/text/makefile.win
@@ -37,6 +37,7 @@ REQUIRES = xpcom \
lwbrk \
gfx \
widget \
+ webBrowser_core \
unicharutil \
$(NULL)
diff --git a/mozilla/editor/txtsvc/src/Makefile.in b/mozilla/editor/txtsvc/src/Makefile.in
index 61ec7c02229..9ef1a7c2cc6 100644
--- a/mozilla/editor/txtsvc/src/Makefile.in
+++ b/mozilla/editor/txtsvc/src/Makefile.in
@@ -39,6 +39,7 @@ REQUIRES = xpcom \
content \
dom \
widget \
+ webBrowser_core \
unicharutil \
$(NULL)
diff --git a/mozilla/editor/txtsvc/src/makefile.win b/mozilla/editor/txtsvc/src/makefile.win
index aa3da413bbb..05223f24146 100644
--- a/mozilla/editor/txtsvc/src/makefile.win
+++ b/mozilla/editor/txtsvc/src/makefile.win
@@ -30,6 +30,7 @@ REQUIRES = xpcom \
dom \
widget \
gfx \
+ webBrowser_core \
unicharutil \
$(NULL)
LIBRARY_NAME=txtsvc
diff --git a/mozilla/embedding/browser/macbuild/browserIDL.xml b/mozilla/embedding/browser/macbuild/browserIDL.xml
index 66803577c5a..5486e58a85e 100644
--- a/mozilla/embedding/browser/macbuild/browserIDL.xml
+++ b/mozilla/embedding/browser/macbuild/browserIDL.xml
@@ -738,6 +738,13 @@
Text
+
+ Name
+ nsISelectionDisplay.idl
+ MacOS
+ Text
+
+
Name
nsIContextMenuListener.idl
@@ -821,6 +828,11 @@
nsICommandHandler.idl
MacOS
+
+ Name
+ nsISelectionDisplay.idl
+ MacOS
+
Name
nsIContextMenuListener.idl
@@ -1543,6 +1555,13 @@
Text
+
+ Name
+ nsISelectionDisplay.idl
+ MacOS
+ Text
+
+
Name
nsIContextMenuListener.idl
@@ -1621,6 +1640,11 @@
nsICommandHandler.idl
MacOS
+
+ Name
+ nsISelectionDisplay.idl
+ MacOS
+
Name
nsIContextMenuListener.idl
@@ -1683,6 +1707,12 @@
nsICommandHandler.idl
MacOS
+
+ embeddingbrowser.xpt
+ Name
+ nsISelectionDisplay.idl
+ MacOS
+
embeddingbrowser.xpt
Name
diff --git a/mozilla/embedding/browser/webBrowser/Makefile.in b/mozilla/embedding/browser/webBrowser/Makefile.in
index 881796f41df..0d15702f6ca 100644
--- a/mozilla/embedding/browser/webBrowser/Makefile.in
+++ b/mozilla/embedding/browser/webBrowser/Makefile.in
@@ -65,6 +65,7 @@ XPIDLSRCS = \
nsITooltipTextProvider.idl \
nsIWebBrowserFocus.idl \
nsIWebBrowserPrint.idl \
+ nsISelectionDisplay.idl\
$(NULL)
CPPSRCS = \
diff --git a/mozilla/embedding/browser/webBrowser/makefile.win b/mozilla/embedding/browser/webBrowser/makefile.win
index 51ce724d227..9758d6b6b03 100644
--- a/mozilla/embedding/browser/webBrowser/makefile.win
+++ b/mozilla/embedding/browser/webBrowser/makefile.win
@@ -58,6 +58,7 @@ XPIDLSRCS= \
.\nsIEmbeddingSiteWindow.idl \
.\nsIWebBrowserFocus.idl \
.\nsIWebBrowserPrint.idl \
+ .\nsISelectionDisplay.idl \
$(NULL)
LIBRARY_NAME=nsWebBrowser_s
diff --git a/mozilla/layout/base/nsIPresShell.h b/mozilla/layout/base/nsIPresShell.h
index e4e3e3cec35..26df6858229 100644
--- a/mozilla/layout/base/nsIPresShell.h
+++ b/mozilla/layout/base/nsIPresShell.h
@@ -445,7 +445,7 @@ public:
* if PR_FALSE visual selection effects are disabled
* @return always NS_OK
*/
- NS_IMETHOD SetDisplayNonTextSelection(PRBool aInEnable) = 0;
+ NS_IMETHOD SetSelectionFlags(PRInt16 aInEnable) = 0;
/**
* Gets the current state of non text selection effects
@@ -454,7 +454,7 @@ public:
* @return if aOutEnabled==null, returns NS_ERROR_INVALID_ARG
* else NS_OK
*/
- NS_IMETHOD GetDisplayNonTextSelection(PRBool *aOutEnabled) = 0;
+ NS_IMETHOD GetSelectionFlags(PRInt16 *aOutEnabled) = 0;
/**
* Interface to dispatch events via the presshell
diff --git a/mozilla/layout/base/nsPresShell.cpp b/mozilla/layout/base/nsPresShell.cpp
index 2b548d5cd68..c44c8e2c683 100644
--- a/mozilla/layout/base/nsPresShell.cpp
+++ b/mozilla/layout/base/nsPresShell.cpp
@@ -1001,8 +1001,8 @@ public:
NS_IMETHOD SetCaretReadOnly(PRBool aReadOnly);
NS_IMETHOD GetCaretEnabled(PRBool *aOutEnabled);
- NS_IMETHOD SetDisplayNonTextSelection(PRBool aInEnable);
- NS_IMETHOD GetDisplayNonTextSelection(PRBool *aOutEnable);
+ NS_IMETHOD SetSelectionFlags(PRInt16 aInEnable);
+ NS_IMETHOD GetSelectionFlags(PRInt16 *aOutEnable);
// nsISelectionController
@@ -3057,13 +3057,13 @@ NS_IMETHODIMP PresShell::GetCaretEnabled(PRBool *aOutEnabled)
return NS_OK;
}
-NS_IMETHODIMP PresShell::SetDisplayNonTextSelection(PRBool aInEnable)
+NS_IMETHODIMP PresShell::SetSelectionFlags(PRInt16 aInEnable)
{
- mDisplayNonTextSelection = PR_TRUE;
+ mDisplayNonTextSelection = aInEnable;
return NS_OK;
}
-NS_IMETHODIMP PresShell::GetDisplayNonTextSelection(PRBool *aOutEnable)
+NS_IMETHODIMP PresShell::GetSelectionFlags(PRInt16 *aOutEnable)
{
if (!aOutEnable)
return NS_ERROR_INVALID_ARG;
diff --git a/mozilla/layout/base/public/nsIPresShell.h b/mozilla/layout/base/public/nsIPresShell.h
index e4e3e3cec35..26df6858229 100644
--- a/mozilla/layout/base/public/nsIPresShell.h
+++ b/mozilla/layout/base/public/nsIPresShell.h
@@ -445,7 +445,7 @@ public:
* if PR_FALSE visual selection effects are disabled
* @return always NS_OK
*/
- NS_IMETHOD SetDisplayNonTextSelection(PRBool aInEnable) = 0;
+ NS_IMETHOD SetSelectionFlags(PRInt16 aInEnable) = 0;
/**
* Gets the current state of non text selection effects
@@ -454,7 +454,7 @@ public:
* @return if aOutEnabled==null, returns NS_ERROR_INVALID_ARG
* else NS_OK
*/
- NS_IMETHOD GetDisplayNonTextSelection(PRBool *aOutEnabled) = 0;
+ NS_IMETHOD GetSelectionFlags(PRInt16 *aOutEnabled) = 0;
/**
* Interface to dispatch events via the presshell
diff --git a/mozilla/layout/base/src/Makefile.in b/mozilla/layout/base/src/Makefile.in
index 96e4a809a9c..e924c8aea68 100644
--- a/mozilla/layout/base/src/Makefile.in
+++ b/mozilla/layout/base/src/Makefile.in
@@ -46,6 +46,7 @@ REQUIRES = xpcom \
docshell \
imglib2 \
gfx2 \
+ webBrowser_core \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/layout/base/src/makefile.win b/mozilla/layout/base/src/makefile.win
index 1598552ec81..3ff94329e32 100644
--- a/mozilla/layout/base/src/makefile.win
+++ b/mozilla/layout/base/src/makefile.win
@@ -38,6 +38,8 @@ REQUIRES = xpcom \
imglib2 \
gfx2 \
content \
+ gfx \
+ webBrowser_core \
gfx \
$(NULL)
diff --git a/mozilla/layout/generic/nsFrame.cpp b/mozilla/layout/generic/nsFrame.cpp
index 25ed485048a..7d7972f560b 100644
--- a/mozilla/layout/generic/nsFrame.cpp
+++ b/mozilla/layout/generic/nsFrame.cpp
@@ -611,12 +611,15 @@ nsFrame::Paint(nsIPresContext* aPresContext,
if (NS_FAILED(result))
return result;
- PRBool displaySelection = PR_TRUE;
- result = shell->GetDisplayNonTextSelection(&displaySelection);
- if (NS_FAILED(result))
- return result;
- if (!displaySelection)
- return NS_OK;
+ PRInt16 displaySelection = nsISelectionDisplay::DISPLAY_ALL;
+ if (aFlags != nsISelectionDisplay::DISPLAY_IMAGES)
+ {
+ result = shell->GetSelectionFlags(&displaySelection);
+ if (NS_FAILED(result))
+ return result;
+ if (!(displaySelection == nsISelectionDisplay::DISPLAY_FRAMES))
+ return NS_OK;
+ }
//check frame selection state
PRBool isSelected;
@@ -987,8 +990,11 @@ nsFrame::HandlePress(nsIPresContext* aPresContext,
// if we are in Navigator and the click is in a link, we don't want to start
// selection because we don't want to interfere with a potential drag of said
// link and steal all its glory.
- PRBool isEditor = PR_FALSE;
- shell->GetDisplayNonTextSelection ( &isEditor );
+ PRInt16 isEditor = 0;
+ shell->GetSelectionFlags ( &isEditor );
+ //weaaak. only the editor can display frame selction not just text and images
+ isEditor = isEditor == nsISelectionDisplay::DISPLAY_ALL;
+
nsKeyEvent* keyEvent = (nsKeyEvent*)aEvent;
if (!isEditor && !keyEvent->isAlt) {
nsCOMPtr content;
@@ -2878,12 +2884,13 @@ nsFrame::GetNextPrevLineFromeBlockFrame(nsIPresContext* aPresContext,
//special check. if we allow non-text selection then we can allow a hit location to fall before a table.
//otherwise there is no way to get and click signal to fall before a table (it being a line iterator itself)
- PRBool isEditor = PR_FALSE;
+ PRInt16 isEditor = 0;
nsCOMPtr shell;
aPresContext->GetShell(getter_AddRefs(shell));
if (!shell)
return NS_ERROR_FAILURE;
- shell->GetDisplayNonTextSelection ( &isEditor );
+ shell->GetSelectionFlags ( &isEditor );
+ isEditor = isEditor == nsISelectionDisplay::DISPLAY_ALL;
if ( isEditor )
{
nsIAtom *resultFrameType;
diff --git a/mozilla/layout/generic/nsImageFrame.cpp b/mozilla/layout/generic/nsImageFrame.cpp
index bdf8f1ee011..fa59c3a07af 100644
--- a/mozilla/layout/generic/nsImageFrame.cpp
+++ b/mozilla/layout/generic/nsImageFrame.cpp
@@ -1342,6 +1342,18 @@ nsImageFrame::Paint(nsIPresContext* aPresContext,
}
}
+ PRInt16 displaySelection = 0;
+
+ nsresult result;
+ nsCOMPtr shell;
+ result = aPresContext->GetShell(getter_AddRefs(shell));
+ if (NS_FAILED(result))
+ return result;
+ result = shell->GetSelectionFlags(&displaySelection);
+ if (NS_FAILED(result))
+ return result;
+ if (!(displaySelection & nsISelectionDisplay::DISPLAY_IMAGES))
+ return NS_OK;//no need to check the blue border, we cannot be drawn selected
return nsFrame::Paint(aPresContext, aRenderingContext, aDirtyRect, aWhichLayer);
}
diff --git a/mozilla/layout/generic/nsTextFrame.cpp b/mozilla/layout/generic/nsTextFrame.cpp
index bdea9020794..d4b3fb2e485 100644
--- a/mozilla/layout/generic/nsTextFrame.cpp
+++ b/mozilla/layout/generic/nsTextFrame.cpp
@@ -2011,6 +2011,10 @@ nsresult nsTextFrame::GetTextInfoForPainting(nsIPresContext* aPresConte
aDisplayingSelection = (aSelectionValue > nsISelectionController::SELECTION_HIDDEN);
}
+ PRInt16 textSel=0;
+ (*aSelectionController)->GetSelectionFlags(&textSel);
+ if (!(textSel & nsISelectionDisplay::DISPLAY_TEXT))
+ aDisplayingSelection = false;
// Transform text from content into renderable form
// XXX If the text fragment is already Unicode and text text wasn't
diff --git a/mozilla/layout/html/base/src/nsFrame.cpp b/mozilla/layout/html/base/src/nsFrame.cpp
index 25ed485048a..7d7972f560b 100644
--- a/mozilla/layout/html/base/src/nsFrame.cpp
+++ b/mozilla/layout/html/base/src/nsFrame.cpp
@@ -611,12 +611,15 @@ nsFrame::Paint(nsIPresContext* aPresContext,
if (NS_FAILED(result))
return result;
- PRBool displaySelection = PR_TRUE;
- result = shell->GetDisplayNonTextSelection(&displaySelection);
- if (NS_FAILED(result))
- return result;
- if (!displaySelection)
- return NS_OK;
+ PRInt16 displaySelection = nsISelectionDisplay::DISPLAY_ALL;
+ if (aFlags != nsISelectionDisplay::DISPLAY_IMAGES)
+ {
+ result = shell->GetSelectionFlags(&displaySelection);
+ if (NS_FAILED(result))
+ return result;
+ if (!(displaySelection == nsISelectionDisplay::DISPLAY_FRAMES))
+ return NS_OK;
+ }
//check frame selection state
PRBool isSelected;
@@ -987,8 +990,11 @@ nsFrame::HandlePress(nsIPresContext* aPresContext,
// if we are in Navigator and the click is in a link, we don't want to start
// selection because we don't want to interfere with a potential drag of said
// link and steal all its glory.
- PRBool isEditor = PR_FALSE;
- shell->GetDisplayNonTextSelection ( &isEditor );
+ PRInt16 isEditor = 0;
+ shell->GetSelectionFlags ( &isEditor );
+ //weaaak. only the editor can display frame selction not just text and images
+ isEditor = isEditor == nsISelectionDisplay::DISPLAY_ALL;
+
nsKeyEvent* keyEvent = (nsKeyEvent*)aEvent;
if (!isEditor && !keyEvent->isAlt) {
nsCOMPtr content;
@@ -2878,12 +2884,13 @@ nsFrame::GetNextPrevLineFromeBlockFrame(nsIPresContext* aPresContext,
//special check. if we allow non-text selection then we can allow a hit location to fall before a table.
//otherwise there is no way to get and click signal to fall before a table (it being a line iterator itself)
- PRBool isEditor = PR_FALSE;
+ PRInt16 isEditor = 0;
nsCOMPtr shell;
aPresContext->GetShell(getter_AddRefs(shell));
if (!shell)
return NS_ERROR_FAILURE;
- shell->GetDisplayNonTextSelection ( &isEditor );
+ shell->GetSelectionFlags ( &isEditor );
+ isEditor = isEditor == nsISelectionDisplay::DISPLAY_ALL;
if ( isEditor )
{
nsIAtom *resultFrameType;
diff --git a/mozilla/layout/html/base/src/nsImageFrame.cpp b/mozilla/layout/html/base/src/nsImageFrame.cpp
index bdf8f1ee011..fa59c3a07af 100644
--- a/mozilla/layout/html/base/src/nsImageFrame.cpp
+++ b/mozilla/layout/html/base/src/nsImageFrame.cpp
@@ -1342,6 +1342,18 @@ nsImageFrame::Paint(nsIPresContext* aPresContext,
}
}
+ PRInt16 displaySelection = 0;
+
+ nsresult result;
+ nsCOMPtr shell;
+ result = aPresContext->GetShell(getter_AddRefs(shell));
+ if (NS_FAILED(result))
+ return result;
+ result = shell->GetSelectionFlags(&displaySelection);
+ if (NS_FAILED(result))
+ return result;
+ if (!(displaySelection & nsISelectionDisplay::DISPLAY_IMAGES))
+ return NS_OK;//no need to check the blue border, we cannot be drawn selected
return nsFrame::Paint(aPresContext, aRenderingContext, aDirtyRect, aWhichLayer);
}
diff --git a/mozilla/layout/html/base/src/nsPresShell.cpp b/mozilla/layout/html/base/src/nsPresShell.cpp
index 2b548d5cd68..c44c8e2c683 100644
--- a/mozilla/layout/html/base/src/nsPresShell.cpp
+++ b/mozilla/layout/html/base/src/nsPresShell.cpp
@@ -1001,8 +1001,8 @@ public:
NS_IMETHOD SetCaretReadOnly(PRBool aReadOnly);
NS_IMETHOD GetCaretEnabled(PRBool *aOutEnabled);
- NS_IMETHOD SetDisplayNonTextSelection(PRBool aInEnable);
- NS_IMETHOD GetDisplayNonTextSelection(PRBool *aOutEnable);
+ NS_IMETHOD SetSelectionFlags(PRInt16 aInEnable);
+ NS_IMETHOD GetSelectionFlags(PRInt16 *aOutEnable);
// nsISelectionController
@@ -3057,13 +3057,13 @@ NS_IMETHODIMP PresShell::GetCaretEnabled(PRBool *aOutEnabled)
return NS_OK;
}
-NS_IMETHODIMP PresShell::SetDisplayNonTextSelection(PRBool aInEnable)
+NS_IMETHODIMP PresShell::SetSelectionFlags(PRInt16 aInEnable)
{
- mDisplayNonTextSelection = PR_TRUE;
+ mDisplayNonTextSelection = aInEnable;
return NS_OK;
}
-NS_IMETHODIMP PresShell::GetDisplayNonTextSelection(PRBool *aOutEnable)
+NS_IMETHODIMP PresShell::GetSelectionFlags(PRInt16 *aOutEnable)
{
if (!aOutEnable)
return NS_ERROR_INVALID_ARG;
diff --git a/mozilla/layout/html/base/src/nsTextFrame.cpp b/mozilla/layout/html/base/src/nsTextFrame.cpp
index bdea9020794..d4b3fb2e485 100644
--- a/mozilla/layout/html/base/src/nsTextFrame.cpp
+++ b/mozilla/layout/html/base/src/nsTextFrame.cpp
@@ -2011,6 +2011,10 @@ nsresult nsTextFrame::GetTextInfoForPainting(nsIPresContext* aPresConte
aDisplayingSelection = (aSelectionValue > nsISelectionController::SELECTION_HIDDEN);
}
+ PRInt16 textSel=0;
+ (*aSelectionController)->GetSelectionFlags(&textSel);
+ if (!(textSel & nsISelectionDisplay::DISPLAY_TEXT))
+ aDisplayingSelection = false;
// Transform text from content into renderable form
// XXX If the text fragment is already Unicode and text text wasn't
diff --git a/mozilla/layout/html/document/src/Makefile.in b/mozilla/layout/html/document/src/Makefile.in
index 9faae98e7de..4d4b3ff3ae5 100644
--- a/mozilla/layout/html/document/src/Makefile.in
+++ b/mozilla/layout/html/document/src/Makefile.in
@@ -46,6 +46,7 @@ REQUIRES = xpcom \
shistory \
xpconnect \
accessibility \
+ webBrowser_core \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/layout/html/document/src/makefile.win b/mozilla/layout/html/document/src/makefile.win
index 11d8ef97288..53102f56f20 100644
--- a/mozilla/layout/html/document/src/makefile.win
+++ b/mozilla/layout/html/document/src/makefile.win
@@ -42,6 +42,7 @@ REQUIRES = xpcom \
gfx \
content \
layout_xul \
+ webBrowser_core \
$(NULL)
DEFINES=-D_IMPL_NS_HTML -DWIN32_LEAN_AND_MEAN
diff --git a/mozilla/layout/html/forms/src/Makefile.in b/mozilla/layout/html/forms/src/Makefile.in
index efb109210ac..1f8362783eb 100644
--- a/mozilla/layout/html/forms/src/Makefile.in
+++ b/mozilla/layout/html/forms/src/Makefile.in
@@ -52,6 +52,7 @@ REQUIRES = xpcom \
xpconnect \
unicharutil \
pref \
+ webBrowser_core \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/layout/html/forms/src/makefile.win b/mozilla/layout/html/forms/src/makefile.win
index f08d31d9e79..ff461fee400 100644
--- a/mozilla/layout/html/forms/src/makefile.win
+++ b/mozilla/layout/html/forms/src/makefile.win
@@ -49,6 +49,7 @@ REQUIRES = xpcom \
gfx \
content \
content_xul \
+ webBrowser_core \
$(NULL)
CPP_OBJS= \
diff --git a/mozilla/layout/html/forms/src/nsGfxTextControlFrame2.cpp b/mozilla/layout/html/forms/src/nsGfxTextControlFrame2.cpp
index 52bd2d7d877..aa87f23497c 100644
--- a/mozilla/layout/html/forms/src/nsGfxTextControlFrame2.cpp
+++ b/mozilla/layout/html/forms/src/nsGfxTextControlFrame2.cpp
@@ -610,8 +610,8 @@ public:
//NSISELECTIONCONTROLLER INTERFACES
NS_IMETHOD SetDisplaySelection(PRInt16 toggle);
NS_IMETHOD GetDisplaySelection(PRInt16 *_retval);
- NS_IMETHOD SetDisplayNonTextSelection(PRBool toggle);
- NS_IMETHOD GetDisplayNonTextSelection(PRBool *_retval);
+ NS_IMETHOD SetSelectionFlags(PRInt16 aInEnable);
+ NS_IMETHOD GetSelectionFlags(PRInt16 *aOutEnable);
NS_IMETHOD GetSelection(PRInt16 type, nsISelection **_retval);
NS_IMETHOD ScrollSelectionIntoView(PRInt16 type, PRInt16 region);
NS_IMETHOD RepaintSelection(PRInt16 type);
@@ -728,13 +728,13 @@ nsTextInputSelectionImpl::GetDisplaySelection(PRInt16 *aToggle)
}
NS_IMETHODIMP
-nsTextInputSelectionImpl::SetDisplayNonTextSelection(PRBool aToggle)
+nsTextInputSelectionImpl::SetSelectionFlags(PRInt16 aToggle)
{
return NS_OK;//stub this out. not used in input
}
NS_IMETHODIMP
-nsTextInputSelectionImpl::GetDisplayNonTextSelection(PRBool *aToggle)
+nsTextInputSelectionImpl::GetSelectionFlags(PRInt16 *aOutEnable)
{
return NS_OK;//stub this out. not used in input
}
diff --git a/mozilla/layout/html/style/src/Makefile.in b/mozilla/layout/html/style/src/Makefile.in
index 7395a1a070d..35546e3c55e 100644
--- a/mozilla/layout/html/style/src/Makefile.in
+++ b/mozilla/layout/html/style/src/Makefile.in
@@ -44,6 +44,7 @@ REQUIRES = xpcom \
xuldoc \
imglib2 \
gfx2 \
+ webBrowser_core \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/layout/html/style/src/makefile.win b/mozilla/layout/html/style/src/makefile.win
index a6193130731..fa57d625886 100644
--- a/mozilla/layout/html/style/src/makefile.win
+++ b/mozilla/layout/html/style/src/makefile.win
@@ -44,6 +44,7 @@ REQUIRES = xpcom \
!ifdef MOZ_SVG
raptor \
!endif
+ webBrowser_core \
$(NULL)
diff --git a/mozilla/layout/html/table/src/Makefile.in b/mozilla/layout/html/table/src/Makefile.in
index b7d00a7f762..fd84d910cc7 100644
--- a/mozilla/layout/html/table/src/Makefile.in
+++ b/mozilla/layout/html/table/src/Makefile.in
@@ -39,6 +39,7 @@ REQUIRES = xpcom \
view \
accessibility \
necko \
+ webBrowser_core \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/layout/html/table/src/makefile.win b/mozilla/layout/html/table/src/makefile.win
index 64cf28a9d19..8ee237cb660 100644
--- a/mozilla/layout/html/table/src/makefile.win
+++ b/mozilla/layout/html/table/src/makefile.win
@@ -34,6 +34,7 @@ REQUIRES = xpcom \
gfx \
content \
necko \
+ webBrowser_core \
$(NULL)
diff --git a/mozilla/layout/xul/base/src/Makefile.in b/mozilla/layout/xul/base/src/Makefile.in
index a18e18725e6..e35f6ca019b 100644
--- a/mozilla/layout/xul/base/src/Makefile.in
+++ b/mozilla/layout/xul/base/src/Makefile.in
@@ -49,6 +49,7 @@ REQUIRES = xpcom \
gfx2 \
imglib2 \
unicharutil \
+ webBrowser_core \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/layout/xul/base/src/grid/Makefile.in b/mozilla/layout/xul/base/src/grid/Makefile.in
index 77ea4d312d7..6a2037661b1 100644
--- a/mozilla/layout/xul/base/src/grid/Makefile.in
+++ b/mozilla/layout/xul/base/src/grid/Makefile.in
@@ -36,6 +36,7 @@ REQUIRES = xpcom \
locale \
view \
necko \
+ webBrowser_core \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/layout/xul/base/src/grid/makefile.win b/mozilla/layout/xul/base/src/grid/makefile.win
index d1f3aef0755..ef033d15350 100644
--- a/mozilla/layout/xul/base/src/grid/makefile.win
+++ b/mozilla/layout/xul/base/src/grid/makefile.win
@@ -31,6 +31,7 @@ REQUIRES = xpcom \
necko \
gfx \
content \
+ webBrowser_core \
$(NULL)
DEFINES=-D_IMPL_NS_HTML -DWIN32_LEAN_AND_MEAN
diff --git a/mozilla/layout/xul/base/src/makefile.win b/mozilla/layout/xul/base/src/makefile.win
index e6e87c4232c..3adef466591 100644
--- a/mozilla/layout/xul/base/src/makefile.win
+++ b/mozilla/layout/xul/base/src/makefile.win
@@ -45,6 +45,7 @@ REQUIRES = xpcom \
gfx \
content \
layout \
+ webBrowser_core \
$(NULL)
DEFINES=-D_IMPL_NS_HTML -DWIN32_LEAN_AND_MEAN
diff --git a/mozilla/layout/xul/base/src/outliner/src/Makefile.in b/mozilla/layout/xul/base/src/outliner/src/Makefile.in
index e4252b63370..321aa505c68 100644
--- a/mozilla/layout/xul/base/src/outliner/src/Makefile.in
+++ b/mozilla/layout/xul/base/src/outliner/src/Makefile.in
@@ -41,6 +41,7 @@ REQUIRES = xpcom \
necko \
gfx2 \
imglib2 \
+ webBrowser_core \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/layout/xul/base/src/outliner/src/makefile.win b/mozilla/layout/xul/base/src/outliner/src/makefile.win
index adf2818a9aa..d3858acf225 100644
--- a/mozilla/layout/xul/base/src/outliner/src/makefile.win
+++ b/mozilla/layout/xul/base/src/outliner/src/makefile.win
@@ -36,6 +36,7 @@ REQUIRES = xpcom \
gfx \
content \
content_xul \
+ webBrowser_core \
$(NULL)
DEFINES=-D_IMPL_NS_HTML -DWIN32_LEAN_AND_MEAN
diff --git a/mozilla/mailnews/compose/src/Makefile.in b/mozilla/mailnews/compose/src/Makefile.in
index ad6f3eaeeda..5e0060c564e 100644
--- a/mozilla/mailnews/compose/src/Makefile.in
+++ b/mozilla/mailnews/compose/src/Makefile.in
@@ -62,6 +62,7 @@ REQUIRES = xpcom \
nkcache \
mimetype \
windowwatcher \
+ webBrowser_core \
$(NULL)
CPPSRCS = \
diff --git a/mozilla/mailnews/compose/src/makefile.win b/mozilla/mailnews/compose/src/makefile.win
index 09db104d383..d804dad0ce9 100644
--- a/mozilla/mailnews/compose/src/makefile.win
+++ b/mozilla/mailnews/compose/src/makefile.win
@@ -55,6 +55,7 @@ REQUIRES = xpcom \
mimetype \
windowwatcher \
content \
+ webBrowser_core \
$(NULL)
include <$(DEPTH)\config\config.mak>