sync with 1.0 branch up to MOZILLA_1_0_20020805
git-svn-id: svn://10.0.0.236/branches/CHIMERA_M1_0_BRANCH@126766 18797224-902f-48f8-a5cc-f745e15eee43
@@ -45,6 +45,7 @@
|
||||
|
||||
#sidebar-panel-picker {
|
||||
color: inherit;
|
||||
-moz-user-focus:normal !important;
|
||||
}
|
||||
|
||||
#sidebar-panel-picker > .toolbarbutton-dropmarker {
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
#content-source,
|
||||
#doctype-text {
|
||||
font-family: -moz-fixed;
|
||||
font-size: -moz-initial;
|
||||
}
|
||||
|
||||
#appcontent {
|
||||
@@ -62,4 +63,3 @@
|
||||
border-right: 1px solid ThreeDLightShadow;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -38,3 +38,8 @@ tab[busy] > .tab-icon {
|
||||
.tabs-closebutton > .toolbarbutton-icon {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.tabs-newbutton {
|
||||
margin: 0px;
|
||||
list-style-image: url("chrome://global/skin/icons/tab-new.gif");
|
||||
}
|
||||
|
||||
@@ -31,16 +31,19 @@
|
||||
</content>
|
||||
</binding>
|
||||
|
||||
<binding id="tabs-closebutton"
|
||||
<binding id="tabs-closebutton"
|
||||
extends="chrome://global/content/bindings/tabbox.xml#tabs">
|
||||
<content>
|
||||
<xul:spacer class="tabs-left-cap"/>
|
||||
<xul:spacer class="tabs-left"/>
|
||||
<xul:stack>
|
||||
<xul:spacer class="tabs-left"/>
|
||||
<xul:toolbarbutton class="tabs-newbutton" xbl:inherits="oncommand=onnewtab,tooltiptext=tooltiptextnew"/>
|
||||
</xul:stack>
|
||||
<children/>
|
||||
<xul:stack flex="1">
|
||||
<xul:spacer class="tabs-right"/>
|
||||
<xul:hbox class="tabs-closebutton-box" align="center" pack="end">
|
||||
<xul:toolbarbutton class="tabs-closebutton close-button" xbl:inherits="oncommand=onclosetab"/>
|
||||
<xul:toolbarbutton class="tabs-closebutton close-button" xbl:inherits="disabled=disableclose,oncommand=onclosetab"/>
|
||||
</xul:hbox>
|
||||
</xul:stack>
|
||||
<xul:spacer class="tabs-right-cap"/>
|
||||
|
||||
@@ -185,7 +185,7 @@ menuitem[checked="true"][type="radio"][disabled="true"] {
|
||||
menulist > menupopup > menuitem,
|
||||
.menulist-menupopup > menuitem {
|
||||
max-width: none;
|
||||
padding: 0;
|
||||
padding: 0px 20px 0px 0px;
|
||||
font: message-box;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,8 +47,13 @@ menubar {
|
||||
Prevents hiding of scrollbars in browser when window is made smaller.*/
|
||||
}
|
||||
|
||||
.toolbar-holder {
|
||||
.toolbar-prefix {
|
||||
border-left: 1px solid ThreeDHighlight;
|
||||
border-top: 1px solid ThreeDHighlight;
|
||||
border-bottom: 1px solid ThreeDShadow;
|
||||
}
|
||||
|
||||
.toolbar-holder {
|
||||
border-top: 1px solid ThreeDHighlight;
|
||||
border-right: 1px solid ThreeDShadow;
|
||||
border-bottom: 1px solid ThreeDShadow;
|
||||
|
||||
@@ -43,3 +43,7 @@ tab[busy] > .tab-icon {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.tabs-newbutton {
|
||||
margin: 0px;
|
||||
list-style-image: url("chrome://global/skin/icons/tab-new.gif");
|
||||
}
|
||||
|
||||
@@ -150,10 +150,10 @@ menulist > menupopup > menuitem,
|
||||
.menulist-menupopup > menu,
|
||||
menulist > menupopup > menu {
|
||||
border: 1px solid transparent;
|
||||
padding: 1px 16px 1px 5px;
|
||||
padding: 1px 30px 1px 5px;
|
||||
max-width: none;
|
||||
font: message-box;
|
||||
color: -moz-FieldText
|
||||
color: -moz-FieldText;
|
||||
}
|
||||
|
||||
.menulist-menupopup > menuitem > .menu-iconic-left,
|
||||
|
||||
@@ -45,8 +45,13 @@ menubar {
|
||||
Prevents hiding of scrollbars in browser when window is made smaller.*/
|
||||
}
|
||||
|
||||
.toolbar-holder {
|
||||
.toolbar-prefix {
|
||||
border-left: 1px solid ThreeDHighlight;
|
||||
border-top: 1px solid ThreeDHighlight;
|
||||
border-bottom: 1px solid ThreeDShadow;
|
||||
}
|
||||
|
||||
.toolbar-holder {
|
||||
border-top: 1px solid ThreeDHighlight;
|
||||
border-right: 1px solid ThreeDShadow;
|
||||
border-bottom: 1px solid ThreeDShadow;
|
||||
|
||||
@@ -141,6 +141,7 @@ classic.jar:
|
||||
skin/classic/global/console/console-error-dash.gif (global/console/console-error-dash.gif)
|
||||
skin/classic/global/console/console-error-caret.gif (global/console/console-error-caret.gif)
|
||||
skin/classic/global/icons/close-button.gif (global/icons/close-button.gif)
|
||||
skin/classic/global/icons/tab-new.gif (global/icons/tab-new.gif)
|
||||
skin/classic/global/toolbar/tbgrip-arrow.gif (global/toolbar/tbgrip-arrow.gif)
|
||||
skin/classic/global/toolbar/tbgrip-arrow-clps.gif (global/toolbar/tbgrip-arrow-clps.gif)
|
||||
skin/classic/global/toolbar/tbgrip-texture.gif (global/toolbar/tbgrip-texture.gif)
|
||||
@@ -285,6 +286,7 @@ classic.jar:
|
||||
skin/classic/messenger/smime/msgCompSecurityInfo.css (messenger/smime/msgCompSecurityInfo.css)
|
||||
skin/classic/messenger/smime/msgReadSMIMEOverlay.css (messenger/smime/msgReadSMIMEOverlay.css)
|
||||
skin/classic/messenger/smime/msgCompSMIMEOverlay.css (messenger/smime/msgCompSMIMEOverlay.css)
|
||||
skin/classic/messenger/smime/certFetchingStatus.css (messenger/smime/certFetchingStatus.css)
|
||||
skin/classic/messenger/smime/msgHdrViewSMIMEOverlay.css (messenger/smime/msgHdrViewSMIMEOverlay.css)
|
||||
skin/classic/messenger/smime/icons/smbtn1.gif (messenger/smime/icons/smbtn1.gif)
|
||||
skin/classic/messenger/smime/icons/sbSignOk.gif (messenger/smime/icons/sbSignOk.gif)
|
||||
|
||||
@@ -100,6 +100,11 @@
|
||||
color: #FF0000;
|
||||
}
|
||||
|
||||
.emailDisplayImage {
|
||||
padding-left: 2px;
|
||||
-moz-box-pack: end;
|
||||
}
|
||||
|
||||
/* ::::: email address twisty ::::: */
|
||||
|
||||
.addresstwisty {
|
||||
|
||||
@@ -40,35 +40,28 @@
|
||||
|
||||
#status-bar #signed-status {
|
||||
list-style-image: none;
|
||||
visibility: collapsed;
|
||||
}
|
||||
|
||||
#status-bar[signed="ok"] #signed-status {
|
||||
list-style-image: url("chrome://messenger/skin/smime/icons/sbSignOk.gif");
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
#status-bar[signed="unknown"] #signed-status {
|
||||
list-style-image: url("chrome://messenger/skin/smime/icons/sbSignUnknown.gif");
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
#status-bar[signed="notok"] #signed-status {
|
||||
list-style-image: url("chrome://messenger/skin/smime/icons/sbSignNotOk.gif");
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
#status-bar #encrypted-status {
|
||||
list-style-image: none;
|
||||
visibility: collapsed;
|
||||
}
|
||||
|
||||
#status-bar[encrypted="ok"] #encrypted-status {
|
||||
list-style-image: url("chrome://messenger/skin/smime/icons/sbCryptoOk.gif");
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
#status-bar[encrypted="notok"] #encrypted-status {
|
||||
list-style-image: url("chrome://messenger/skin/smime/icons/sbCryptoNotOk.gif");
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
BIN
mozilla/themes/modern/communicator/sidebar/sbar-top.gif
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 194 B After Width: | Height: | Size: 199 B |
|
Before Width: | Height: | Size: 197 B After Width: | Height: | Size: 196 B |
|
Before Width: | Height: | Size: 196 B After Width: | Height: | Size: 195 B |
|
Before Width: | Height: | Size: 93 B After Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 93 B After Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 93 B After Width: | Height: | Size: 93 B |
|
Before Width: | Height: | Size: 185 B After Width: | Height: | Size: 144 B |
|
Before Width: | Height: | Size: 83 B After Width: | Height: | Size: 132 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -43,20 +43,41 @@
|
||||
|
||||
#sidebar-box {
|
||||
border-left: 1px solid #8998AA;
|
||||
background-color: #C1CBD5;
|
||||
background-color: #B9C4D0;
|
||||
}
|
||||
|
||||
/* ::::: sidebar header ::::: */
|
||||
|
||||
.sidebarheader-main {
|
||||
-moz-binding: url("chrome://communicator/skin/sidebar/sidebarBindings.xml#sidebarheader") !important;
|
||||
-moz-box-align: center;
|
||||
border-top: 1px solid #DFE5EF;
|
||||
.grippy-aligner {
|
||||
width: 10px;
|
||||
border-left: 1px solid #DFE5EF;
|
||||
padding: 3px 0px 2px 6px;
|
||||
background-color: #C1CBD5;
|
||||
border-top: 1px solid #DFE5EF;
|
||||
}
|
||||
|
||||
.toolbar-button-aligner {
|
||||
width: 51px;
|
||||
}
|
||||
|
||||
.toolbar-button-aligner[prefixhidden="true"] {
|
||||
width: 0px;
|
||||
}
|
||||
|
||||
.sidebar-header-text {
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
-moz-box-align: center;
|
||||
}
|
||||
|
||||
.sidebar-header-body {
|
||||
border-top: 1px solid #DFE5EF;
|
||||
-moz-box-align: center;
|
||||
}
|
||||
|
||||
.sidebarheader-main {
|
||||
-moz-binding: url("chrome://communicator/skin/sidebar/sidebarBindings.xml#sidebarheader") !important;
|
||||
background-color: #B9C4D0;
|
||||
background-image: url("chrome://communicator/skin/sidebar/sbar-top.gif");
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
/* ..... picker button ..... */
|
||||
@@ -65,6 +86,7 @@
|
||||
margin-right: 1px;
|
||||
margin-top: 1px;
|
||||
padding: 2px;
|
||||
-moz-user-focus:normal !important;
|
||||
}
|
||||
|
||||
#sidebar-panel-picker:hover {
|
||||
@@ -86,10 +108,12 @@
|
||||
#sidebar-close-button {
|
||||
margin: 0px 1px;
|
||||
-moz-binding: url("chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton-image");
|
||||
padding: 0px 2px 0px 4px;
|
||||
padding: 4px 2px 4px 4px;
|
||||
list-style-image: url("chrome://global/skin/icons/closebox.gif");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ::::: loading info ::::: */
|
||||
|
||||
.text-panel-loading {
|
||||
@@ -110,7 +134,7 @@
|
||||
.iframe-panel {
|
||||
-moz-binding: url("chrome://global/skin/globalBindings.xml#iframe-miniscroll") !important;
|
||||
border-bottom: 6px solid;
|
||||
-moz-border-bottom-colors: #C1CBD5 #C1CBD5 #C1CBD5 #C1CBD5 #DFE5EF #A1ADBE;
|
||||
-moz-border-bottom-colors: #B9C4D0 #B9C4D0 #B9C4D0 #B9C4D0 #DAE3ED #96A7B8;
|
||||
}
|
||||
|
||||
/* ::::: sidebar tabs ::::: */
|
||||
@@ -120,7 +144,7 @@
|
||||
.box-texttab {
|
||||
-moz-binding: url("chrome://communicator/skin/sidebar/sidebarBindings.xml#sidebar-tab");
|
||||
color: #000000;
|
||||
border-left: 1px solid #DFE5EF;
|
||||
border-left: 1px solid #DAE3ED;
|
||||
}
|
||||
|
||||
.sidebar-tab-left-box,
|
||||
@@ -130,8 +154,8 @@
|
||||
|
||||
.sidebar-tab-left-box {
|
||||
border-top: 2px solid;
|
||||
border-bottom: 1px solid #C1CBD5;
|
||||
-moz-border-top-colors: #97A4B2 #DFE5EF;
|
||||
border-bottom: 1px solid #B9C4D0;
|
||||
-moz-border-top-colors: #8A9DAF #D4E1EA;
|
||||
min-width: 90px;
|
||||
}
|
||||
|
||||
@@ -157,14 +181,14 @@
|
||||
|
||||
.sidebar-tab-right-line {
|
||||
border-bottom: 2px solid;
|
||||
-moz-border-bottom-colors: #DFE5EF #97A4B2;
|
||||
-moz-border-bottom-colors: #DAE3ED #96A7B8;
|
||||
}
|
||||
|
||||
/* ..... hover state ..... */
|
||||
|
||||
.box-texttab:hover > .sidebar-tab-left-box {
|
||||
border-bottom: 2px solid;
|
||||
-moz-border-bottom-colors: #DFE5EF #99A8B9;
|
||||
-moz-border-bottom-colors: #CCD7E2 #9CADBB;
|
||||
}
|
||||
|
||||
.box-texttab:hover > .sidebar-tab-right-box > .sidebar-tab-right-top-box
|
||||
@@ -186,10 +210,10 @@
|
||||
|
||||
.box-texttab:hover:active > .sidebar-tab-left-box {
|
||||
border-left: 2px solid;
|
||||
-moz-border-bottom-colors: #DFE5EF #ADB9C5;
|
||||
-moz-border-top-colors: #97A4B2 #838D97;
|
||||
-moz-border-left-colors: #97A4B2 #AAB5C1;
|
||||
background-color: #ADB9C5;
|
||||
-moz-border-bottom-colors: #D8E2EC #A1B1BE ;
|
||||
-moz-border-top-colors: #8A9DAF #748490;
|
||||
-moz-border-left-colors: #737E8A #90A0AD;
|
||||
background-color: #A1B1BE;
|
||||
}
|
||||
|
||||
.box-texttab:hover:active > .sidebar-tab-left-box > .sidebar-tab-left {
|
||||
@@ -213,16 +237,16 @@
|
||||
/* ..... selected state ..... */
|
||||
|
||||
.box-texttab[selected] {
|
||||
border-left: 1px solid #EAF0F7 !important;
|
||||
border-bottom: 1px solid #97A4B2 !important;
|
||||
border-left: 1px solid #E8EEF5 !important;
|
||||
border-bottom: 1px solid #CBD5E0 !important;
|
||||
color: #000000 !important;
|
||||
}
|
||||
|
||||
.box-texttab[selected] > .sidebar-tab-left-box {
|
||||
border-bottom: none !important;
|
||||
border-left: none !important;
|
||||
-moz-border-top-colors: #97A4B2 #E6EAF4 !important;
|
||||
background-color: #D2D8E3 !important;
|
||||
-moz-border-top-colors: #8A9DAF #DFEBF2 !important;
|
||||
background-color: #CBD5E0 !important;
|
||||
}
|
||||
|
||||
.box-texttab[selected] > .sidebar-tab-left-box,
|
||||
@@ -245,7 +269,12 @@
|
||||
}
|
||||
|
||||
.box-texttab[selected] > .sidebar-tab-right-box > .sidebar-tab-right-btm {
|
||||
background: #D2D8E3 !important;
|
||||
background: #CBD5E0 !important;
|
||||
}
|
||||
|
||||
.box-texttab[selected] > .sidebar-tab-right-box > .sidebar-tab-right-top-box > .sidebar-tab-right-line
|
||||
{
|
||||
-moz-border-bottom-colors: #E2EAF4 #8CA2B3 !important;
|
||||
}
|
||||
|
||||
/* ::::: sidebar navigation buttons ::::: */
|
||||
|
||||
@@ -55,10 +55,22 @@
|
||||
|
||||
<binding id="sidebarheader">
|
||||
<content>
|
||||
<xul:label class="sidebar-header-text" xbl:inherits="value=label,crop" crop="right" flex="1"/>
|
||||
<xul:hbox>
|
||||
<children/>
|
||||
</xul:hbox>
|
||||
<xul:stack flex="1">
|
||||
<xul:hbox flex="1">
|
||||
<xul:hbox class="grippy-aligner"/>
|
||||
<xul:hbox class="toolbar-button-aligner" xbl:inherits="prefixhidden"/>
|
||||
<xul:hbox class="sidebar-header-body" flex="1"/>
|
||||
</xul:hbox>
|
||||
<xul:hbox flex="1">
|
||||
<xul:hbox flex="1" align="center">
|
||||
<xul:label class="sidebar-header-text"
|
||||
xbl:inherits="value=label,crop" crop="right" flex="1"/>
|
||||
</xul:hbox>
|
||||
<xul:hbox class="sidebar-header-body" pack="end">
|
||||
<children/>
|
||||
</xul:hbox>
|
||||
</xul:hbox>
|
||||
</xul:stack>
|
||||
</content>
|
||||
</binding>
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 979 B After Width: | Height: | Size: 992 B |
|
Before Width: | Height: | Size: 603 B After Width: | Height: | Size: 581 B |
|
Before Width: | Height: | Size: 603 B After Width: | Height: | Size: 581 B |
|
Before Width: | Height: | Size: 998 B After Width: | Height: | Size: 596 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -60,5 +60,6 @@
|
||||
/* Multiline textarea for HTML source editing */
|
||||
#content-source, #doctype-text {
|
||||
font-family : -moz-fixed;
|
||||
font-size: -moz-initial;
|
||||
}
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 39 KiB |
@@ -72,7 +72,7 @@ tab[busy] {
|
||||
|
||||
.tabs-closebutton {
|
||||
margin: 0px 4px;
|
||||
padding: 4px 2px 4px 2px;
|
||||
padding: 3px 2px;
|
||||
border: none;
|
||||
list-style-image: url("chrome://global/skin/icons/close.gif");
|
||||
}
|
||||
@@ -83,4 +83,20 @@ tab[busy] {
|
||||
|
||||
.tabs-closebutton:hover:active {
|
||||
list-style-image: url("chrome://global/skin/icons/close-act.gif");
|
||||
}
|
||||
}
|
||||
|
||||
.tabs-newbutton {
|
||||
margin: 0px;
|
||||
padding: 2px 0px 3px 2px;
|
||||
border: none;
|
||||
list-style-image: url("chrome://global/skin/icons/tab-new.gif");
|
||||
}
|
||||
|
||||
.tabs-newbutton:hover {
|
||||
list-style-image: url("chrome://global/skin/icons/tab-new-hov.gif");
|
||||
}
|
||||
|
||||
.tabs-newbutton:hover:active {
|
||||
list-style-image: url("chrome://global/skin/icons/tab-new-act.gif");
|
||||
}
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@ popup > menuitem[_moz-menuactive="true"] {
|
||||
menulist > menupopup > menuitem,
|
||||
.menulist-menupopup > menu,
|
||||
menulist > menupopup > menu {
|
||||
padding-right: 12px;
|
||||
padding-right: 26px;
|
||||
padding-top: 1px;
|
||||
padding-bottom: 1px;
|
||||
max-width: none;
|
||||
|
||||
@@ -41,12 +41,6 @@
|
||||
|
||||
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
|
||||
|
||||
/* ::::: toolbox ::::: */
|
||||
|
||||
toolbox {
|
||||
border-bottom: 1px solid #494F5D;
|
||||
}
|
||||
|
||||
/* ::::: toolbar ::::: */
|
||||
|
||||
toolbar {
|
||||
@@ -56,11 +50,15 @@ toolbar {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
toolbar > .toolbar-prefix {
|
||||
border-top: 1px solid #EEF0F3;
|
||||
border-left: 1px solid #EEF0F3;
|
||||
}
|
||||
|
||||
toolbar > .toolbar-holder {
|
||||
border-top: 1px solid #EEF0F3;
|
||||
border-right: 1px solid #86929E;
|
||||
border-bottom: 1px solid #86929E;
|
||||
border-left: 1px solid #EEF0F3;
|
||||
}
|
||||
|
||||
/* ::::: menubar ::::: */
|
||||
|
||||
@@ -62,23 +62,23 @@ toolbarbutton {
|
||||
}
|
||||
|
||||
toolbarbutton:hover {
|
||||
border-top: 1px solid #EEF0F3;
|
||||
border-right: 1px solid #86929E;
|
||||
border-bottom: 1px solid #86929E;
|
||||
border-left: 1px solid #EEF0F3;
|
||||
border-top-color: #EEF0F3;
|
||||
border-right-color: #86929E;
|
||||
border-bottom-color: #86929E;
|
||||
border-left-color: #EEF0F3;
|
||||
}
|
||||
|
||||
toolbarbutton:hover:active,
|
||||
toolbarbutton[open="true"] {
|
||||
border-top: 1px solid #86929E;
|
||||
border-right: 1px solid #EEF0F3;
|
||||
border-bottom: 1px solid #EEF0F3;
|
||||
border-left: 1px solid #86929E;
|
||||
border-top-color: #86929E;
|
||||
border-right-color: #EEF0F3;
|
||||
border-bottom-color: #EEF0F3;
|
||||
border-left-color: #86929E;
|
||||
padding: 2px 1px 0px 3px;
|
||||
}
|
||||
|
||||
toolbarbutton[disabled="true"] {
|
||||
border: 1px solid transparent !important;
|
||||
border-color: transparent !important;
|
||||
padding: 1px 2px !important;
|
||||
color: #9399AB !important;
|
||||
}
|
||||
@@ -86,10 +86,10 @@ toolbarbutton[disabled="true"] {
|
||||
/* ..... checked state ..... */
|
||||
|
||||
toolbarbutton[checked="true"] {
|
||||
border-top: 1px solid #454C55 !important;
|
||||
border-right: 1px solid #7D848D !important;
|
||||
border-bottom: 1px solid #7D848D !important;
|
||||
border-left: 1px solid #454C55 !important;
|
||||
border-top-color: #454C55 !important;
|
||||
border-right-color: #7D848D !important;
|
||||
border-bottom-color: #7D848D !important;
|
||||
border-left-color: #454C55 !important;
|
||||
background-color: #8C9AA8 !important;
|
||||
color: #EFF1F4;
|
||||
}
|
||||
|
||||
@@ -57,6 +57,7 @@ modern.jar:
|
||||
skin/modern/communicator/search/search.css (communicator/search/search.css)
|
||||
skin/modern/communicator/alerts/alert.css (communicator/alerts/alert.css)
|
||||
skin/modern/communicator/sidebar/sidebarBindings.xml (communicator/sidebar/sidebarBindings.xml)
|
||||
skin/modern/communicator/sidebar/sbar-top.gif (communicator/sidebar/sbar-top.gif)
|
||||
skin/modern/communicator/sidebar/sbtab-rit-top-act.gif (communicator/sidebar/sbtab-rit-top-act.gif)
|
||||
skin/modern/communicator/sidebar/sbtab-rit-btm-act.gif (communicator/sidebar/sbtab-rit-btm-act.gif)
|
||||
skin/modern/communicator/sidebar/sbtab-rit-top.gif (communicator/sidebar/sbtab-rit-top.gif)
|
||||
@@ -199,6 +200,9 @@ modern.jar:
|
||||
skin/modern/global/icons/close-act.gif (global/icons/close-act.gif)
|
||||
skin/modern/global/icons/close.gif (global/icons/close.gif)
|
||||
skin/modern/global/icons/close-hov.gif (global/icons/close-hov.gif)
|
||||
skin/modern/global/icons/tab-new.gif (global/icons/tab-new.gif)
|
||||
skin/modern/global/icons/tab-new-hov.gif (global/icons/tab-new-hov.gif)
|
||||
skin/modern/global/icons/tab-new-act.gif (global/icons/tab-new-act.gif)
|
||||
skin/modern/global/icons/closebox.gif (global/icons/closebox.gif)
|
||||
skin/modern/global/menu/menu-arrow-dis.gif (global/menu/menu-arrow-dis.gif)
|
||||
skin/modern/global/menu/menu-arrow-hov.gif (global/menu/menu-arrow-hov.gif)
|
||||
@@ -392,6 +396,7 @@ modern.jar:
|
||||
skin/modern/messenger/smime/msgCompSecurityInfo.css (messenger/smime/msgCompSecurityInfo.css)
|
||||
skin/modern/messenger/smime/msgReadSMIMEOverlay.css (messenger/smime/msgReadSMIMEOverlay.css)
|
||||
skin/modern/messenger/smime/msgCompSMIMEOverlay.css (messenger/smime/msgCompSMIMEOverlay.css)
|
||||
skin/modern/messenger/smime/certFetchingStatus.css (messenger/smime/certFetchingStatus.css)
|
||||
skin/modern/messenger/smime/msgHdrViewSMIMEOverlay.css (messenger/smime/msgHdrViewSMIMEOverlay.css)
|
||||
skin/modern/messenger/smime/icons/smbtn1.gif (messenger/smime/icons/smbtn1.gif)
|
||||
skin/modern/messenger/smime/icons/sbSignOk.gif (messenger/smime/icons/sbSignOk.gif)
|
||||
|
||||
@@ -119,6 +119,7 @@
|
||||
}
|
||||
|
||||
.emailDisplayImage {
|
||||
padding-left: 2px;
|
||||
-moz-box-pack: end;
|
||||
}
|
||||
|
||||
|
||||
@@ -39,34 +39,29 @@
|
||||
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
|
||||
|
||||
#status-bar #signed-status {
|
||||
visibility: collapsed;
|
||||
list-style-image: none;
|
||||
}
|
||||
|
||||
#status-bar[signed="ok"] #signed-status {
|
||||
list-style-image: url("chrome://messenger/skin/smime/icons/sbSignOk.gif");
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
#status-bar[signed="unknown"] #signed-status {
|
||||
list-style-image: url("chrome://messenger/skin/smime/icons/sbSignUnknown.gif");
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
#status-bar[signed="notok"] #signed-status {
|
||||
list-style-image: url("chrome://messenger/skin/smime/icons/sbSignNotOk.gif");
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
#status-bar #encrypted-status {
|
||||
visibility: collapsed;
|
||||
list-style-image: none;
|
||||
}
|
||||
|
||||
#status-bar[encrypted="ok"] #encrypted-status {
|
||||
list-style-image: url("chrome://messenger/skin/smime/icons/sbCryptoOk.gif");
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
#status-bar[encrypted="notok"] #encrypted-status {
|
||||
list-style-image: url("chrome://messenger/skin/smime/icons/sbCryptoNotOk.gif");
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
@@ -472,10 +472,19 @@
|
||||
}
|
||||
|
||||
#PersonalToolbar > toolbargrippy,
|
||||
#PersonalToolbar > .toolbar-prefix,
|
||||
#PersonalToolbar > .toolbar-holder {
|
||||
border-top: 1px solid #CED6DD;
|
||||
}
|
||||
|
||||
#PersonalToolbar > toolbargrippy,
|
||||
#PersonalToolbar > .toolbar-holder {
|
||||
border-right: 1px solid #95A0AD;
|
||||
border-bottom: 1px solid #95A0AD;
|
||||
}
|
||||
|
||||
#PersonalToolbar > toolbargrippy,
|
||||
#PersonalToolbar > .toolbar-prefix {
|
||||
border-left: 1px solid #DAE3ED;
|
||||
}
|
||||
|
||||
@@ -494,6 +503,10 @@
|
||||
|
||||
/* ::::: content area ::::: */
|
||||
|
||||
#appcontent {
|
||||
border-top: 1px solid #494F5D;
|
||||
}
|
||||
|
||||
#content {
|
||||
border-bottom: 1px solid #494F5D;
|
||||
}
|
||||
|
||||
@@ -254,6 +254,12 @@ int nsPlatformToDOMKeyCode(GdkEventKey *aGEK)
|
||||
#if defined(SUNOS4) || defined(SOLARIS)
|
||||
if (keysym == GDK_F11)
|
||||
return NS_VK_ESCAPE;
|
||||
//When F11 key is pressed in Sun keyboard, keysym is SunF36 not F11
|
||||
if (keysym == 268828432) //SunF36's value is 0x1005ff10(268828432)
|
||||
return NS_VK_F11; //Change it into F11
|
||||
//When F12 key is pressed in Sun keyboard, keysym is SunF37 not F12
|
||||
if (keysym == 268828433) //SunF37's value is 0x1005ff11(268828433)
|
||||
return NS_VK_F12; //Change it into F12
|
||||
#endif
|
||||
if (keysym >= GDK_F1 && keysym <= GDK_F24)
|
||||
return keysym - GDK_F1 + NS_VK_F1;
|
||||
|
||||
@@ -1893,6 +1893,15 @@ NS_METHOD nsWindow::CreateNative(GtkObject *parentWidget)
|
||||
// set the back pixmap to None so that we don't get a flash of
|
||||
// black
|
||||
gdk_window_set_back_pixmap(mShell->window, NULL, FALSE);
|
||||
|
||||
// gdk does not automatically set the cursor for "temporary"
|
||||
// windows, which are what gtk uses for popups.
|
||||
|
||||
mCursor = eCursor_wait; // force SetCursor to actually set the cursor,
|
||||
// even though our internal state indicates
|
||||
// that we already have the standard cursor.
|
||||
SetCursor(eCursor_standard);
|
||||
|
||||
break;
|
||||
|
||||
case eWindowType_toplevel:
|
||||
|
||||
@@ -213,7 +213,7 @@ gtk_xtbin_realize (GtkWidget *widget)
|
||||
GdkWindowAttr attributes;
|
||||
gint attributes_mask, n;
|
||||
GtkXtBin *xtbin;
|
||||
Arg args[2];
|
||||
Arg args[5];
|
||||
gint width, height;
|
||||
Widget top_widget;
|
||||
Window win;
|
||||
@@ -254,9 +254,9 @@ gtk_xtbin_realize (GtkWidget *widget)
|
||||
attributes.width = widget->allocation.width;
|
||||
attributes.height = widget->allocation.height;
|
||||
attributes.wclass = GDK_INPUT_OUTPUT;
|
||||
attributes.visual = gtk_widget_get_visual (widget);
|
||||
attributes.colormap = gtk_widget_get_colormap (widget);
|
||||
attributes.event_mask = gtk_widget_get_events (widget);
|
||||
attributes.visual = gdk_window_get_visual (xtbin->parent_window);
|
||||
attributes.colormap = gdk_window_get_colormap (xtbin->parent_window);
|
||||
attributes.event_mask = gdk_window_get_events (xtbin->parent_window);
|
||||
attributes.event_mask |= GDK_EXPOSURE_MASK;
|
||||
attributes_mask = GDK_WA_X | GDK_WA_Y |
|
||||
GDK_WA_VISUAL | GDK_WA_COLORMAP;
|
||||
@@ -309,6 +309,9 @@ gtk_xtbin_realize (GtkWidget *widget)
|
||||
n = 0;
|
||||
XtSetArg(args[n], XtNheight, xtbin->height);n++;
|
||||
XtSetArg(args[n], XtNwidth, xtbin->width);n++;
|
||||
XtSetArg(args[n], XtNvisual, GDK_VISUAL_XVISUAL(gdk_window_get_visual( xtbin->parent_window )) ); n++;
|
||||
XtSetArg(args[n], XtNdepth, gdk_window_get_visual( xtbin->parent_window )->depth ); n++;
|
||||
XtSetArg(args[n], XtNcolormap, GDK_COLORMAP_XCOLORMAP(gdk_window_get_colormap( xtbin->parent_window)) ); n++;
|
||||
XtSetValues(embeded, args, n);
|
||||
|
||||
/* Ok, here is the dirty little secret on how I am */
|
||||
|
||||
@@ -164,12 +164,15 @@ nsresult nsAppShell::Run()
|
||||
if (mDispatchListener)
|
||||
mDispatchListener->AfterDispatch();
|
||||
} else {
|
||||
if( mQmsg.hwnd) {
|
||||
if ((mQmsg.hwnd) && (mQmsg.mp1 || mQmsg.mp2)) {
|
||||
// send WM_SYSCOMMAND, SC_CLOSE to window (tasklist close)
|
||||
WinSendMsg( mQmsg.hwnd, WM_SYSCOMMAND, MPFROMSHORT(SC_CLOSE), 0);
|
||||
} else {
|
||||
if( mQuitNow) // Don't want to close the app when a window
|
||||
keepGoing = 0; // is closed, just when our `Exit' is called.
|
||||
// Don't want to close the app when a window
|
||||
// is closed, just when our `Exit' is called or
|
||||
// shutdown is invoked.
|
||||
if (mQuitNow || ((mQmsg.mp1 == 0) && (mQmsg.mp2 == 0)))
|
||||
keepGoing = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ MRESULT EXPENTRY nsDragWindowProc(HWND hWnd, ULONG msg, MPARAM mp1,
|
||||
pszURL = (PSZ)nsMemory::Alloc(ulLength+1);
|
||||
DrgQueryStrName(pdragtransfer->pditem->hstrSourceName, ulLength+1, pszURL);
|
||||
fp = fopen(chPath, "wb+");
|
||||
fwrite(pszURL, ulLength+1, 1, fp);
|
||||
fwrite(pszURL, ulLength, 1, fp);
|
||||
fclose(fp);
|
||||
WriteTypeEA(chPath, "UniformResourceLocator");
|
||||
nsMemory::Free(pszURL);
|
||||
|
||||
@@ -41,9 +41,6 @@ extern nsIRollupListener * gRollupListener;
|
||||
extern nsIWidget * gRollupWidget;
|
||||
extern PRBool gRollupConsumeRollupEvent;
|
||||
|
||||
extern PRBool gJustGotDeactivate;
|
||||
extern HWND gHwndBeingDestroyed;
|
||||
|
||||
BOOL nsFrameWindow::fHiddenWindowCreated = FALSE;
|
||||
|
||||
nsFrameWindow::nsFrameWindow() : nsWindow()
|
||||
@@ -61,7 +58,7 @@ void nsFrameWindow::SetWindowListVisibility( PRBool bState)
|
||||
HSWITCH hswitch;
|
||||
SWCNTRL swctl;
|
||||
|
||||
hswitch = WinQuerySwitchHandle(GetMainWindow(), 0);
|
||||
hswitch = WinQuerySwitchHandle(mFrameWnd, 0);
|
||||
if( hswitch)
|
||||
{
|
||||
WinQuerySwitchEntry( hswitch, &swctl);
|
||||
@@ -393,22 +390,6 @@ MRESULT nsFrameWindow::FrameMessage( ULONG msg, MPARAM mp1, MPARAM mp2)
|
||||
WinRemoveProperty(mFrameWnd, "hwndMinMax");
|
||||
WinRemoveProperty(mFrameWnd, "ulStyle");
|
||||
break;
|
||||
|
||||
case WM_ACTIVATE:
|
||||
if( !mp1)
|
||||
{
|
||||
/* we don't want to go through all of this deactivation stuff if
|
||||
* the window is just going away anyhow. Causes problems to process
|
||||
* the deactivation event if we've hit some destructors or done
|
||||
* some destroy work. Especially w.r.t the focus controller
|
||||
*/
|
||||
if( (mFrameWnd != gHwndBeingDestroyed) ||
|
||||
(!WinIsChild( mFrameWnd, gHwndBeingDestroyed )) )
|
||||
{
|
||||
gJustGotDeactivate = PR_TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if( !bDone)
|
||||
|
||||
@@ -43,7 +43,6 @@ class nsFrameWindow : public nsWindow
|
||||
HWND GetMainWindow() const { return mFrameWnd; }
|
||||
|
||||
protected:
|
||||
HWND mFrameWnd;
|
||||
PFNWP fnwpDefFrame;
|
||||
nsSize mSizeClient;
|
||||
nsSize mSizeBorder;
|
||||
|
||||
@@ -38,6 +38,8 @@
|
||||
#include "resource.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "nsIPref.h"
|
||||
#include "nsIServiceManager.h"
|
||||
|
||||
// Module-level data & utility functions:
|
||||
// * unicode keycode & string conversion
|
||||
@@ -117,6 +119,13 @@ void nsWidgetModuleData::Init( nsIAppShell *aPrimaevalAppShell)
|
||||
for (int i=0;i<=16;i++ ) {
|
||||
hptrArray[i] = ::WinLoadPointer(HWND_DESKTOP, gModuleHandle, IDC_BASE+i);
|
||||
}
|
||||
nsresult rv;
|
||||
|
||||
bIsTrackPoint = PR_FALSE;
|
||||
|
||||
nsCOMPtr<nsIPref> prefs(do_GetService(NS_PREF_CONTRACTID, &rv));
|
||||
if (NS_SUCCEEDED(rv) && prefs)
|
||||
prefs->GetBoolPref("os2.trackpoint", &bIsTrackPoint);
|
||||
}
|
||||
|
||||
nsWidgetModuleData::~nsWidgetModuleData()
|
||||
|
||||
@@ -55,6 +55,7 @@ class nsWidgetModuleData : public nsISupports
|
||||
BOOL bMouseSwitched; // true if MB1 is the RH mouse button
|
||||
LONG lHtEntryfield; // ideal height of an entryfield
|
||||
BOOL bIsDBCS; // true if system is dbcs
|
||||
PRBool bIsTrackPoint; // true if system has a TrackPoint
|
||||
HPOINTER hptrArray[17];
|
||||
|
||||
// xptoolkit services we look after, & the primaeval appshell too.
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
static int WINDOWCOUNT = 0;
|
||||
#endif
|
||||
|
||||
#define kWindowPositionSlop 20
|
||||
static const char *sScreenManagerContractID = "@mozilla.org/gfx/screenmanager;1";
|
||||
|
||||
// HWNDs are mapped to nsWindow objects using a custom presentation parameter,
|
||||
@@ -105,8 +104,7 @@ PRBool gRollupConsumeRollupEvent = PR_FALSE;
|
||||
|
||||
PRBool gJustGotActivate = PR_FALSE;
|
||||
PRBool gJustGotDeactivate = PR_FALSE;
|
||||
|
||||
HWND gHwndBeingDestroyed = NULLHANDLE;
|
||||
PRBool gIsDestroyingAny = PR_FALSE;
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
// Mouse Clicks - static variable defintions
|
||||
@@ -117,6 +115,10 @@ static LONG gLastMsgTime = 0;
|
||||
static LONG gLastClickCount = 0;
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#ifdef DEBUG_FOCUS
|
||||
static int currentWindowIdentifier = 0;
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsWindow constructor
|
||||
@@ -126,6 +128,7 @@ nsWindow::nsWindow() : nsBaseWidget()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
mWnd = 0;
|
||||
mFrameWnd = 0;
|
||||
mPrevWndProc = NULL;
|
||||
mParent = 0;
|
||||
mNextID = 1;
|
||||
@@ -148,8 +151,7 @@ nsWindow::nsWindow() : nsBaseWidget()
|
||||
mBorderStyle = eBorderStyle_default;
|
||||
mFont = nsnull;
|
||||
mOS2Toolkit = nsnull;
|
||||
mMenuBar = nsnull;
|
||||
// mActiveMenu = nsnull;
|
||||
mIsScrollBar = FALSE;
|
||||
|
||||
mIsTopWidgetWindow = PR_FALSE;
|
||||
}
|
||||
@@ -654,6 +656,13 @@ MRESULT EXPENTRY fnwpNSWindow( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
|
||||
}
|
||||
}
|
||||
|
||||
// hold on to the window for the life of this method, in case it gets
|
||||
// deleted during processing. yes, it's a double hack, since someWindow
|
||||
// is not really an interface.
|
||||
nsCOMPtr<nsISupports> kungFuDeathGrip;
|
||||
if (!wnd->mIsDestroying) // not if we're in the destructor!
|
||||
kungFuDeathGrip = do_QueryInterface((nsBaseWidget*)wnd);
|
||||
|
||||
MRESULT mRC = 0;
|
||||
|
||||
if( wnd)
|
||||
@@ -775,6 +784,8 @@ void nsWindow::RealDoCreate( HWND hwndP,
|
||||
style &= ~WS_CLIPSIBLINGS;
|
||||
}
|
||||
|
||||
mIsScrollBar = (!(strcmp( WindowClass(), WC_SCROLLBAR_STRING )));
|
||||
|
||||
if( hwndP != HWND_DESKTOP)
|
||||
{
|
||||
// For pop-up menus, the parent is the desktop, but use the "parent" as owner
|
||||
@@ -789,15 +800,23 @@ void nsWindow::RealDoCreate( HWND hwndP,
|
||||
// For scrollbars, the parent is the owner, for notification purposes
|
||||
else if(!hwndOwner )
|
||||
{
|
||||
BOOL bHwndIsScrollBar =
|
||||
(!(strcmp( WindowClass(), WC_SCROLLBAR_STRING )));
|
||||
if( bHwndIsScrollBar )
|
||||
if( mIsScrollBar )
|
||||
{
|
||||
hwndOwner = hwndP;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef DEBUG_FOCUS
|
||||
mWindowIdentifier = currentWindowIdentifier;
|
||||
currentWindowIdentifier++;
|
||||
if (aInitData && (aInitData->mWindowType == eWindowType_toplevel)) {
|
||||
printf("[%x] Create Frame Window (%d)\n", this, mWindowIdentifier);
|
||||
} else {
|
||||
printf("[%x] Create Window (%d)\n", this, mWindowIdentifier);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Create a window: create hidden & then size to avoid swp_noadjust problems
|
||||
// owner == parent except for 'borderless top-level' -- see nsCanvas.cpp
|
||||
mWnd = WinCreateWindow( hwndP,
|
||||
@@ -812,6 +831,17 @@ void nsWindow::RealDoCreate( HWND hwndP,
|
||||
|
||||
NS_ASSERTION( mWnd, "Couldn't create window");
|
||||
|
||||
// This is ugly. The Thinkpad TrackPoint driver checks to see whether or not a window
|
||||
// actually has a scroll bar as a child before sending it scroll messages. Needless to
|
||||
// say, no Mozilla window has real scroll bars. So if you have the "os2.trackpoint"
|
||||
// preference set, we put an invisible scroll bar on every child window so we can
|
||||
// scroll. Woohoo!
|
||||
if (gWidgetModuleData->bIsTrackPoint && mWindowType == eWindowType_child && !mIsScrollBar) {
|
||||
WinCreateWindow(mWnd, WC_SCROLLBAR, 0, SBS_VERT,
|
||||
0, 0, 0, 0, mWnd, HWND_TOP,
|
||||
FID_VERTSCROLL, NULL, NULL);
|
||||
}
|
||||
|
||||
#if DEBUG_sobotka
|
||||
printf("\n+++++++++++In nsWindow::RealDoCreate created 0x%lx, %d x %d\n",
|
||||
mWnd, aRect.width, aRect.height);
|
||||
@@ -961,9 +991,16 @@ NS_METHOD nsWindow::Destroy()
|
||||
|
||||
if( mWnd)
|
||||
{
|
||||
gHwndBeingDestroyed = (mHackDestroyWnd ? mHackDestroyWnd : mWnd);
|
||||
WinDestroyWindow( gHwndBeingDestroyed);
|
||||
gHwndBeingDestroyed = NULLHANDLE;
|
||||
HWND hwndBeingDestroyed = mFrameWnd ? mFrameWnd : mWnd;
|
||||
gIsDestroyingAny = PR_TRUE;
|
||||
#ifdef DEBUG_FOCUS
|
||||
printf("[%x] Destroy (%d)\n", this, mWindowIdentifier);
|
||||
#endif
|
||||
if (hwndBeingDestroyed == WinQueryFocus(HWND_DESKTOP)) {
|
||||
WinSetFocus(HWND_DESKTOP, WinQueryWindow(hwndBeingDestroyed, QW_PARENT));
|
||||
}
|
||||
WinDestroyWindow(hwndBeingDestroyed);
|
||||
gIsDestroyingAny = PR_FALSE;
|
||||
}
|
||||
}
|
||||
return NS_OK;
|
||||
@@ -1211,6 +1248,8 @@ NS_METHOD nsWindow::ConstrainPosition(PRBool aAllowSlop,
|
||||
}
|
||||
}
|
||||
|
||||
#define kWindowPositionSlop 100
|
||||
|
||||
if (doConstrain) {
|
||||
if (aAllowSlop) {
|
||||
if (*aX < screenRect.xLeft - mBounds.width + kWindowPositionSlop)
|
||||
@@ -1218,8 +1257,8 @@ NS_METHOD nsWindow::ConstrainPosition(PRBool aAllowSlop,
|
||||
else if (*aX >= screenRect.xRight - kWindowPositionSlop)
|
||||
*aX = screenRect.xRight - kWindowPositionSlop;
|
||||
|
||||
if (*aY < screenRect.yTop - mBounds.height + kWindowPositionSlop)
|
||||
*aY = screenRect.yTop - mBounds.height + kWindowPositionSlop;
|
||||
if (*aY < screenRect.yTop)
|
||||
*aY = screenRect.yTop;
|
||||
else if (*aY >= screenRect.yBottom - kWindowPositionSlop)
|
||||
*aY = screenRect.yBottom - kWindowPositionSlop;
|
||||
|
||||
@@ -1350,8 +1389,10 @@ NS_METHOD nsWindow::SetFocus(PRBool aRaise)
|
||||
mOS2Toolkit->CallMethod(&info);
|
||||
}
|
||||
else
|
||||
if (mWnd &&
|
||||
(!gHwndBeingDestroyed || !WinIsChild(mWnd, gHwndBeingDestroyed))) {
|
||||
if (mWnd) {
|
||||
#ifdef DEBUG_FOCUS
|
||||
printf("[%x] SetFocus (%d)\n", this, mWindowIdentifier);
|
||||
#endif
|
||||
WinSetFocus( HWND_DESKTOP, mWnd);
|
||||
}
|
||||
return NS_OK;
|
||||
@@ -2093,6 +2134,7 @@ void nsWindow::ConstrainZLevel(HWND *aAfter) {
|
||||
PRBool nsWindow::ProcessMessage( ULONG msg, MPARAM mp1, MPARAM mp2, MRESULT &rc)
|
||||
{
|
||||
PRBool result = PR_FALSE; // call the default window procedure
|
||||
PRBool isMozWindowTakingFocus = PR_TRUE;
|
||||
|
||||
switch (msg) {
|
||||
#if 0
|
||||
@@ -2294,48 +2336,76 @@ PRBool nsWindow::ProcessMessage( ULONG msg, MPARAM mp1, MPARAM mp2, MRESULT &rc)
|
||||
result = OnScroll( msg, mp1, mp2);
|
||||
break;
|
||||
|
||||
case WM_FOCUSCHANGED:
|
||||
/* Make a test to see if we are in the process of closing, deleting
|
||||
* or destroying this nsWindow. If we are, then we've already
|
||||
* gotten rid of our nsDocShell->mScriptGlobal. To handle focus
|
||||
* events when there is no mScriptGlobal is apparently a bad thing.
|
||||
*/
|
||||
if(!(mWindowState & nsWindowState_eClosing))
|
||||
{
|
||||
PRBool isMozWindowTakingFocus = PR_TRUE;
|
||||
if( SHORT1FROMMP( mp2 ) || mWnd == WinQueryFocus(HWND_DESKTOP) )
|
||||
{
|
||||
result = DispatchFocus( NS_GOTFOCUS, isMozWindowTakingFocus );
|
||||
// Only sending an Activate event when we get a WM_ACTIVATE message
|
||||
// isn't good enough; need to do this every time we gain focus.
|
||||
if( !gJustGotActivate )
|
||||
{
|
||||
gJustGotActivate = PR_TRUE;
|
||||
if ( WinIsChild( mWnd, HWNDFROMMP(mp1)) && mNextID == 1)
|
||||
result = DispatchFocus( NS_PLUGIN_ACTIVATE, isMozWindowTakingFocus );
|
||||
else
|
||||
result = DispatchFocus( NS_ACTIVATE, isMozWindowTakingFocus );
|
||||
gJustGotActivate = PR_FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
char className[19];
|
||||
::WinQueryClassName((HWND)mp1, 19, className);
|
||||
if (strcmp(className, WindowClass()) != 0 &&
|
||||
strcmp(className, WC_SCROLLBAR_STRING) != 0)
|
||||
isMozWindowTakingFocus = PR_FALSE;
|
||||
|
||||
if( gJustGotDeactivate )
|
||||
{
|
||||
gJustGotDeactivate = PR_FALSE;
|
||||
result = DispatchFocus( NS_DEACTIVATE, isMozWindowTakingFocus );
|
||||
}
|
||||
result = DispatchFocus( NS_LOSTFOCUS, isMozWindowTakingFocus );
|
||||
}
|
||||
case WM_ACTIVATE:
|
||||
#ifdef DEBUG_FOCUS
|
||||
printf("[%x] WM_ACTIVATE (%d)\n", this, mWindowIdentifier);
|
||||
#endif
|
||||
if (mp1) {
|
||||
/* The window is being activated */
|
||||
gJustGotActivate = PR_TRUE;
|
||||
#ifdef DEBUG_FOCUS
|
||||
printf("[%x] NS_GOTFOCUS (%d)\n", this, mWindowIdentifier);
|
||||
#endif
|
||||
result = DispatchFocus(NS_GOTFOCUS, isMozWindowTakingFocus);
|
||||
} else {
|
||||
/* The window is being deactivated */
|
||||
gJustGotDeactivate = PR_TRUE;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case WM_FOCUSCHANGED:
|
||||
#ifdef DEBUG_FOCUS
|
||||
printf("[%x] WM_FOCUSCHANGED (%d)\n", this, mWindowIdentifier);
|
||||
#endif
|
||||
if (SHORT1FROMMP(mp2)) {
|
||||
/* We are receiving focus */
|
||||
if (!gIsDestroyingAny) {
|
||||
#ifdef DEBUG_FOCUS
|
||||
printf("[%x] NS_GOTFOCUS (%d)\n", this, mWindowIdentifier);
|
||||
#endif
|
||||
result = DispatchFocus(NS_GOTFOCUS, isMozWindowTakingFocus);
|
||||
if (gJustGotActivate) {
|
||||
gJustGotActivate = PR_FALSE;
|
||||
gJustGotDeactivate = PR_FALSE;
|
||||
#ifdef DEBUG_FOCUS
|
||||
printf("[%x] NS_ACTIVATE (%d)\n", this, mWindowIdentifier);
|
||||
#endif
|
||||
result = DispatchFocus(NS_ACTIVATE, isMozWindowTakingFocus);
|
||||
}
|
||||
if ( WinIsChild( mWnd, HWNDFROMMP(mp1)) && mNextID == 1) {
|
||||
#ifdef DEBUG_FOCUS
|
||||
printf("[%x] NS_PLUGIN_ACTIVATE (%d)\n", this, mWindowIdentifier);
|
||||
#endif
|
||||
result = DispatchFocus(NS_PLUGIN_ACTIVATE, isMozWindowTakingFocus);
|
||||
WinSetFocus(HWND_DESKTOP, mWnd);
|
||||
}
|
||||
} else {
|
||||
nsToolkit *toolkit = NS_STATIC_CAST(nsToolkit *, mToolkit);
|
||||
WinPostMsg(toolkit->GetDispatchWindow(), WM_FOCUSCHANGED, mp1, mp2);
|
||||
}
|
||||
|
||||
} else {
|
||||
/* We are losing focus */
|
||||
char className[19];
|
||||
::WinQueryClassName((HWND)mp1, 19, className);
|
||||
if (strcmp(className, WindowClass()) != 0 &&
|
||||
strcmp(className, WC_SCROLLBAR_STRING) != 0) {
|
||||
isMozWindowTakingFocus = PR_FALSE;
|
||||
}
|
||||
if (gJustGotDeactivate) {
|
||||
gJustGotDeactivate = PR_FALSE;
|
||||
#ifdef DEBUG_FOCUS
|
||||
printf("[%x] NS_DEACTIVATE (%d)\n", this, mWindowIdentifier);
|
||||
#endif
|
||||
result = DispatchFocus(NS_DEACTIVATE, isMozWindowTakingFocus);
|
||||
}
|
||||
#ifdef DEBUG_FOCUS
|
||||
printf("[%x] NS_LOSTFOCUS (%d)\n", this, mWindowIdentifier);
|
||||
#endif
|
||||
result = DispatchFocus(NS_LOSTFOCUS, isMozWindowTakingFocus);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_WINDOWPOSCHANGED:
|
||||
result = OnReposition( (PSWP) mp1);
|
||||
break;
|
||||
@@ -2494,9 +2564,6 @@ void nsWindow::OnDestroy()
|
||||
// kill font
|
||||
delete mFont;
|
||||
|
||||
// release menubar
|
||||
// NS_IF_RELEASE(mMenuBar);
|
||||
|
||||
// dispatching of the event may cause the reference count to drop to 0
|
||||
// and result in this object being deleted. To avoid that, add a
|
||||
// reference and then release it after dispatching the event.
|
||||
@@ -3024,8 +3091,12 @@ NS_METHOD nsWindow::SetTitle(const nsString& aTitle)
|
||||
}
|
||||
else if( mWnd)
|
||||
{
|
||||
/* On OS/2, if you pass a titlebar > 512 characters, it doesn't display at all. */
|
||||
/* We are going to limit our titlebars to 256 just to be on the safe side */
|
||||
nsAutoString left;
|
||||
aTitle.Left(left, 256);
|
||||
WinSetWindowText( GetMainWindow(),
|
||||
gWidgetModuleData->ConvertFromUcs( aTitle));
|
||||
gWidgetModuleData->ConvertFromUcs(left));
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
#include "nsToolkit.h"
|
||||
#include "nsSwitchToUIThread.h"
|
||||
|
||||
class nsIMenuBar;
|
||||
//#define DEBUG_FOCUS
|
||||
|
||||
// Base widget class.
|
||||
// This is abstract. Controls (labels, radio buttons, listboxen) derive
|
||||
@@ -99,8 +99,6 @@ class nsWindow : public nsBaseWidget,
|
||||
virtual nsIWidget *GetParent();
|
||||
|
||||
NS_IMETHOD SetSizeMode(PRInt32 aMode);
|
||||
NS_IMETHOD SetMenuBar(nsIMenuBar * aMenuBar) { return NS_ERROR_FAILURE; }
|
||||
NS_IMETHOD ShowMenuBar(PRBool aShow) { return NS_ERROR_FAILURE; }
|
||||
|
||||
// Physical properties
|
||||
NS_IMETHOD Show( PRBool bState);
|
||||
@@ -143,6 +141,8 @@ class nsWindow : public nsBaseWidget,
|
||||
NS_IMETHOD SetCursor( nsCursor aCursor);
|
||||
NS_IMETHOD HideWindowChrome(PRBool aShouldHide);
|
||||
NS_IMETHOD SetTitle( const nsString& aTitle);
|
||||
NS_IMETHOD SetMenuBar(nsIMenuBar * aMenuBar) { return NS_ERROR_FAILURE; }
|
||||
NS_IMETHOD ShowMenuBar(PRBool aShow) { return NS_ERROR_FAILURE; }
|
||||
NS_IMETHOD Invalidate( PRBool aIsSynchronous);
|
||||
NS_IMETHOD Invalidate( const nsRect & aRect, PRBool aIsSynchronous);
|
||||
NS_IMETHOD InvalidateRegion(const nsIRegion *aRegion, PRBool aIsSynchronous);
|
||||
@@ -229,6 +229,7 @@ protected:
|
||||
|
||||
// PM data members
|
||||
HWND mWnd; // window handle
|
||||
HWND mFrameWnd; // frame window handle
|
||||
PFNWP mPrevWndProc; // previous window procedure
|
||||
nsWindow *mParent; // parent widget
|
||||
ULONG mNextID; // next child window id
|
||||
@@ -243,6 +244,7 @@ protected:
|
||||
HWND mHackDestroyWnd; // access GetMainWindow() window from destructor
|
||||
QMSG mQmsg;
|
||||
PRBool mIsTopWidgetWindow;
|
||||
BOOL mIsScrollBar;
|
||||
|
||||
HWND GetParentHWND() const;
|
||||
HWND GetHWND() const { return mWnd; }
|
||||
@@ -294,6 +296,9 @@ protected:
|
||||
};
|
||||
friend MRESULT EXPENTRY fnwpNSWindow( HWND, ULONG, MPARAM, MPARAM);
|
||||
friend MRESULT EXPENTRY fnwpFrame( HWND, ULONG, MPARAM, MPARAM);
|
||||
#ifdef DEBUG_FOCUS
|
||||
int mWindowIdentifier;
|
||||
#endif
|
||||
};
|
||||
|
||||
#define PM2NS_PARENT NS2PM_PARENT
|
||||
|
||||
@@ -200,7 +200,7 @@ nsresult nsClipboard::SetupNativeDataObject(nsITransferable * aTransferable, IDa
|
||||
#endif
|
||||
}
|
||||
else if ( strcmp(flavorStr, kPNGImageMime) == 0 || strcmp(flavorStr, kJPEGImageMime) == 0 ||
|
||||
strcmp(flavorStr, kGIFImageMime) == 0 ) {
|
||||
strcmp(flavorStr, kGIFImageMime) == 0 || strcmp(flavorStr, kNativeImageMime) == 0 ) {
|
||||
// if we're an image, register the native bitmap flavor
|
||||
FORMATETC imageFE;
|
||||
SET_FORMATETC(imageFE, CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL)
|
||||
|
||||
@@ -383,10 +383,21 @@ nsDataObj :: GetDib ( const nsACString& inFlavor, FORMATETC &, STGMEDIUM & aSTG
|
||||
PRNTDEBUG("nsDataObj::GetDib\n");
|
||||
ULONG result = E_FAIL;
|
||||
|
||||
|
||||
PRUint32 len = 0;
|
||||
nsCOMPtr<nsISupports> genericDataWrapper;
|
||||
mTransferable->GetTransferData(PromiseFlatCString(inFlavor).get(), getter_AddRefs(genericDataWrapper), &len);
|
||||
nsCOMPtr<nsIImage> image ( do_QueryInterface(genericDataWrapper) );
|
||||
if ( !image ) {
|
||||
// In the 0.9.4 timeframe, I had some embedding clients put the nsIImage directly into the
|
||||
// transferable. Newer code, however, wraps the nsIImage in a nsISupportsInterfacePointer.
|
||||
// We should be backwards compatibile with code already out in the field. If we can't find
|
||||
// the image directly out of the transferable, unwrap the image from its wrapper.
|
||||
nsCOMPtr<nsISupportsInterfacePointer> ptr(do_QueryInterface(genericDataWrapper));
|
||||
if ( ptr )
|
||||
ptr->GetData(getter_AddRefs(image));
|
||||
}
|
||||
|
||||
if ( image ) {
|
||||
// use a the helper class to build up a bitmap. We now own the bits,
|
||||
// and pass them back to the OS in |aSTG|.
|
||||
|
||||
@@ -60,7 +60,6 @@ ULONG nsDataObjCollection::g_cRef = 0;
|
||||
EXTERN_C GUID CDECL CLSID_nsDataObjCollection =
|
||||
{ 0x2d851b91, 0xd4c, 0x11d3, { 0x96, 0xd4, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } };
|
||||
|
||||
|
||||
/*
|
||||
* Class nsDataObjCollection
|
||||
*/
|
||||
@@ -113,11 +112,17 @@ STDMETHODIMP nsDataObjCollection::QueryInterface(REFIID riid, void** ppv)
|
||||
*ppv=NULL;
|
||||
|
||||
if ( (IID_IUnknown == riid) || (IID_IDataObject == riid) ) {
|
||||
*ppv = this;
|
||||
*ppv = static_cast<IDataObject*>(this);
|
||||
AddRef();
|
||||
return NOERROR;
|
||||
}
|
||||
|
||||
if ( IID_IDataObjCollection == riid ) {
|
||||
*ppv = static_cast<nsIDataObjCollection*>(this);
|
||||
AddRef();
|
||||
return NOERROR;
|
||||
}
|
||||
|
||||
return ResultFromScode(E_NOINTERFACE);
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,8 @@
|
||||
#ifndef _NSDATAOBJCOLLECTION_H_
|
||||
#define _NSDATAOBJCOLLECTION_H_
|
||||
|
||||
#define INITGUID // needed for initializing the IID_IDataObjCollection GUID
|
||||
|
||||
#include "OLEIDL.H"
|
||||
|
||||
#include "nsString.h"
|
||||
@@ -65,13 +67,24 @@ public:
|
||||
};
|
||||
#endif
|
||||
|
||||
// {25589C3E-1FAC-47b9-BF43-CAEA89B79533}
|
||||
DEFINE_GUID(IID_IDataObjCollection,
|
||||
0x25589c3e, 0x1fac, 0x47b9, 0xbf, 0x43, 0xca, 0xea, 0x89, 0xb7, 0x95, 0x33);
|
||||
|
||||
// An interface to make sure we have the right kind of object for D&D
|
||||
// this way we can filter out collection objects that aren't ours
|
||||
class nsIDataObjCollection : public IUnknown {
|
||||
public:
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
* This ole registered class is used to facilitate drag-drop of objects which
|
||||
* can be adapted by an object derived from CfDragDrop. The CfDragDrop is
|
||||
* associated with instances via SetDragDrop().
|
||||
*/
|
||||
|
||||
class nsDataObjCollection : public IDataObject //, public nsPIDataObjCollection
|
||||
class nsDataObjCollection : public IDataObject, public nsIDataObjCollection //, public nsPIDataObjCollection
|
||||
{
|
||||
public: // construction, destruction
|
||||
nsDataObjCollection();
|
||||
|
||||
@@ -163,6 +163,22 @@ NS_IMETHODIMP nsDragService::StartInvokingDragSession(IDataObject * aDataObj, PR
|
||||
return (DRAGDROP_S_DROP == res?NS_OK:NS_ERROR_FAILURE);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Make Sure we have the right kind of object
|
||||
nsDataObjCollection* nsDragService::GetDataObjCollection(IDataObject* aDataObj)
|
||||
{
|
||||
nsDataObjCollection * dataObjCol = nsnull;
|
||||
if (aDataObj) {
|
||||
nsIDataObjCollection* dataObj;
|
||||
if (aDataObj->QueryInterface(IID_IDataObjCollection, (void**)&dataObj) == S_OK) {
|
||||
dataObjCol = NS_STATIC_CAST(nsDataObjCollection*, aDataObj);
|
||||
dataObj->Release();
|
||||
}
|
||||
}
|
||||
|
||||
return dataObjCol;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
NS_IMETHODIMP nsDragService::GetNumDropItems (PRUint32 * aNumItems)
|
||||
{
|
||||
@@ -172,7 +188,8 @@ NS_IMETHODIMP nsDragService::GetNumDropItems (PRUint32 * aNumItems)
|
||||
}
|
||||
|
||||
if ( IsCollectionObject(mDataObject) ) {
|
||||
nsDataObjCollection * dataObjCol = NS_STATIC_CAST(nsDataObjCollection*, mDataObject);
|
||||
|
||||
nsDataObjCollection * dataObjCol = GetDataObjCollection(mDataObject);
|
||||
if ( dataObjCol )
|
||||
*aNumItems = dataObjCol->GetNumDataObjects();
|
||||
}
|
||||
@@ -211,7 +228,7 @@ NS_IMETHODIMP nsDragService::GetData (nsITransferable * aTransferable, PRUint32
|
||||
|
||||
if ( IsCollectionObject(mDataObject) ) {
|
||||
// multiple items, use |anItem| as an index into our collection
|
||||
nsDataObjCollection * dataObjCol = NS_STATIC_CAST(nsDataObjCollection*, mDataObject);
|
||||
nsDataObjCollection * dataObjCol = GetDataObjCollection(mDataObject);
|
||||
PRUint32 cnt = dataObjCol->GetNumDataObjects();
|
||||
if (anItem >= 0 && anItem < cnt) {
|
||||
IDataObject * dataObj = dataObjCol->GetDataObjectAt(anItem);
|
||||
@@ -271,7 +288,7 @@ NS_IMETHODIMP nsDragService::IsDataFlavorSupported(const char *aDataFlavor, PRBo
|
||||
SET_FORMATETC(fe, format, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL | TYMED_FILE | TYMED_GDI);
|
||||
|
||||
// See if any one of the IDataObjects in the collection supports this data type
|
||||
nsDataObjCollection* dataObjCol = NS_STATIC_CAST(nsDataObjCollection*, mDataObject);
|
||||
nsDataObjCollection* dataObjCol = GetDataObjCollection(mDataObject);
|
||||
if ( dataObjCol ) {
|
||||
PRUint32 cnt = dataObjCol->GetNumDataObjects();
|
||||
for (PRUint32 i=0;i<cnt;++i) {
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
struct IDropSource;
|
||||
struct IDataObject;
|
||||
class nsNativeDragTarget;
|
||||
class nsDataObjCollection;
|
||||
|
||||
/**
|
||||
* Native Win32 DragService wrapper
|
||||
@@ -69,6 +70,7 @@ public:
|
||||
NS_IMETHOD StartInvokingDragSession(IDataObject * aDataObj, PRUint32 aActionType);
|
||||
|
||||
protected:
|
||||
nsDataObjCollection* GetDataObjCollection(IDataObject* aDataObj);
|
||||
|
||||
// determine if we have a single data object or one of our private collections
|
||||
PRBool IsCollectionObject ( IDataObject* inDataObj ) ;
|
||||
|
||||
@@ -56,6 +56,7 @@ static PRUintn gToolkitTLSIndex = 0;
|
||||
HINSTANCE nsToolkit::mDllInstance = 0;
|
||||
PRBool nsToolkit::mUseImeApiW = PR_FALSE;
|
||||
PRBool nsToolkit::mW2KXP_CP936 = PR_FALSE;
|
||||
PRBool nsToolkit::mIsWinXP = PR_FALSE;
|
||||
|
||||
#ifdef MOZ_AIMM
|
||||
IActiveIMMApp* nsToolkit::gAIMMApp = NULL;
|
||||
@@ -248,6 +249,7 @@ nsToolkit::Startup(HMODULE hModule)
|
||||
if (nsToolkit::mUseImeApiW) {
|
||||
// XXX Hack for stopping the crash (125573)
|
||||
if (osversion.dwMajorVersion == 5 && (osversion.dwMinorVersion == 0 || osversion.dwMinorVersion == 1)) {
|
||||
nsToolkit::mIsWinXP = (osversion.dwMinorVersion == 1);
|
||||
// "Microsoft Windows 2000 " or "Microsoft Windows XP "
|
||||
if (936 == ::GetACP()) { // Chinese (PRC, Singapore)
|
||||
nsToolkit::mUseImeApiW = PR_FALSE;
|
||||
@@ -368,6 +370,21 @@ LRESULT CALLBACK nsToolkit::WindowProc(HWND hWnd, UINT msg, WPARAM wParam,
|
||||
MethodInfo *info = (MethodInfo *)lParam;
|
||||
return info->Invoke();
|
||||
}
|
||||
|
||||
case WM_SYSCOLORCHANGE:
|
||||
{
|
||||
// WM_SYSCOLORCHANGE messages are only dispatched to top
|
||||
// level windows but NS_SYSCOLORCHANGE messages must be dispatched
|
||||
// to all windows including child windows. We dispatch these messages
|
||||
// from the nsToolkit because if we are running embedded we may not
|
||||
// have a top-level nsIWidget window.
|
||||
|
||||
// On WIN32 all windows are automatically invalidated after the
|
||||
// WM_SYSCOLORCHANGE is dispatched so the window is drawn using
|
||||
// the current system colors.
|
||||
nsWindow::GlobalMsgWindowProc(hWnd, msg, wParam, lParam);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#ifdef MOZ_AIMM
|
||||
|
||||
@@ -89,6 +89,7 @@ protected:
|
||||
public:
|
||||
static HINSTANCE mDllInstance;
|
||||
// OS flag
|
||||
static PRBool mIsWinXP;
|
||||
static PRBool mUseImeApiW;
|
||||
static PRBool mW2KXP_CP936;
|
||||
|
||||
|
||||
@@ -322,23 +322,73 @@ static PRBool is_vk_down(int vk)
|
||||
#define NS_IMM_SETCANDIDATEWINDOW(hIMC, candForm) \
|
||||
{ \
|
||||
if (nsToolkit::gAIMMApp) \
|
||||
(nsToolkit::gAIMMApp->SetCandidateWindow(hIMC, candForm) == S_OK); \
|
||||
nsToolkit::gAIMMApp->SetCandidateWindow(hIMC, candForm); \
|
||||
else { \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.SetCandidateWindow(hIMC, candForm); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCOMPOSITIONWINDOW(hIMC, compForm) \
|
||||
{ \
|
||||
if (nsToolkit::gAIMMApp) \
|
||||
nsToolkit::gAIMMApp->SetCompositionWindow(hIMC, compForm); \
|
||||
else { \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.SetCompositionWindow(hIMC, compForm); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define NS_IMM_GETCOMPOSITIONWINDOW(hIMC, compForm) \
|
||||
{ \
|
||||
if (nsToolkit::gAIMMApp) \
|
||||
(nsToolkit::gAIMMApp->GetCompositionWindow(hIMC, compForm) == S_OK); \
|
||||
nsToolkit::gAIMMApp->GetCompositionWindow(hIMC, compForm); \
|
||||
else { \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.GetCompositionWindow(hIMC, compForm); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define NS_IMM_GETCOMPOSITIONFONT(hIMC, lf) \
|
||||
{ \
|
||||
if (nsToolkit::gAIMMApp) \
|
||||
nsToolkit::gAIMMApp->GetCompositionFontA(hIMC, lf); \
|
||||
else { \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.GetCompositionFontA(hIMC, lf); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCOMPOSITIONFONT(hIMC, lf) \
|
||||
{ \
|
||||
if (nsToolkit::gAIMMApp) \
|
||||
nsToolkit::gAIMMApp->SetCompositionFontA(hIMC, lf); \
|
||||
else { \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.SetCompositionFontA(hIMC, lf); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define NS_IMM_GETCOMPOSITIONFONTW(hIMC, lf) \
|
||||
{ \
|
||||
if (nsToolkit::gAIMMApp) \
|
||||
nsToolkit::gAIMMApp->GetCompositionFontW(hIMC, lf); \
|
||||
else { \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.GetCompositionFontW(hIMC, lf); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCOMPOSITIONFONTW(hIMC, lf) \
|
||||
{ \
|
||||
if (nsToolkit::gAIMMApp) \
|
||||
nsToolkit::gAIMMApp->SetCompositionFontW(hIMC, lf); \
|
||||
else { \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.SetCompositionFontW(hIMC, lf); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCONVERSIONSTATUS(hIMC, pfdwConversion, pfdwSentence, bRet) \
|
||||
{ \
|
||||
bRet = TRUE; \
|
||||
@@ -404,6 +454,36 @@ static PRBool is_vk_down(int vk)
|
||||
theIMM.SetCandidateWindow(hIMC, candForm); \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCOMPOSITIONWINDOW(hIMC, compForm) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.SetCompositionWindow(hIMC, compForm); \
|
||||
}
|
||||
|
||||
#define NS_IMM_GETCOMPOSITIONFONT(hIMC, lf) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.GetCompositionFont(hIMC, lf); \
|
||||
}
|
||||
|
||||
#define NS_IMM_GETCOMPOSITIONFONTW(hIMC, lf) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.GetCompositionFontW(hIMC, lf); \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCOMPOSITIONFONT(hIMC, lf) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.SetCompositionFont(hIMC, lf); \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCOMPOSITIONFONTW(hIMC, lf) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
theIMM.SetCompositionFontW(hIMC, lf); \
|
||||
}
|
||||
|
||||
#define NS_IMM_SETCONVERSIONSTATUS(hIMC, lpfdwConversion, lpfdwSentence) \
|
||||
{ \
|
||||
nsIMM &theIMM = nsIMM::LoadModule(); \
|
||||
@@ -564,6 +644,67 @@ private:
|
||||
|
||||
static nsAttentionTimerMonitor *gAttentionTimerMonitor = 0;
|
||||
|
||||
PRBool gIsDestroyingAny = PR_FALSE;
|
||||
|
||||
|
||||
// Code to dispatch WM_SYSCOLORCHANGE message to all child windows.
|
||||
// WM_SYSCOLORCHANGE is only sent to top-level windows, but the
|
||||
// cross platform API requires that NS_SYSCOLORCHANGE message be sent to
|
||||
// all child windows as well. When running in an embedded application
|
||||
// we may not receive a WM_SYSCOLORCHANGE message because the top
|
||||
// level window is owned by the embeddor. Note: this code can be used to
|
||||
// dispatch other global messages (i.e messages that must be sent to all
|
||||
// nsIWidget instances.
|
||||
|
||||
// Enumerate all child windows sending aMsg to each of them
|
||||
|
||||
BOOL CALLBACK nsWindow::BroadcastMsgToChildren(HWND aWnd, LPARAM aMsg)
|
||||
{
|
||||
LONG proc = ::GetWindowLong(aWnd, GWL_WNDPROC);
|
||||
if (proc == (LONG)&nsWindow::WindowProc) {
|
||||
// its one of our windows so go ahead and send a message to it
|
||||
WNDPROC winProc = (WNDPROC)GetWindowLong(aWnd, GWL_WNDPROC);
|
||||
::CallWindowProc(winProc, aWnd, aMsg, 0, 0);
|
||||
}
|
||||
// Send message to children of this window
|
||||
::EnumChildWindows(aWnd, nsWindow::BroadcastMsgToChildren, aMsg);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Enumerate all top level windows specifying that the children of each
|
||||
// top level window should be enumerated. Do *not* send the message to
|
||||
// each top level window since it is assumed that the toolkit will send
|
||||
// aMsg to them directly.
|
||||
|
||||
BOOL CALLBACK nsWindow::BroadcastMsg(HWND aTopWindow, LPARAM aMsg)
|
||||
{
|
||||
// Iterate each of aTopWindows child windows sending the aMsg
|
||||
// to each of them.
|
||||
EnumChildWindows(aTopWindow, nsWindow::BroadcastMsgToChildren, aMsg);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// This method is called from nsToolkit::WindowProc to forward global
|
||||
// messages which need to be dispatched to all child windows.
|
||||
|
||||
void nsWindow::GlobalMsgWindowProc(HWND hWnd, UINT msg,
|
||||
WPARAM wParam, LPARAM lParam)
|
||||
|
||||
{
|
||||
switch (msg) {
|
||||
case WM_SYSCOLORCHANGE:
|
||||
// System color changes are posted to top-level windows only.
|
||||
// The NS_SYSCOLORCHANGE must be dispatched to all child
|
||||
// windows as well.
|
||||
::EnumThreadWindows(GetCurrentThreadId(), nsWindow::BroadcastMsg, msg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// End of the methods to dispatch global messages
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsISupport stuff
|
||||
@@ -638,6 +779,7 @@ nsWindow::nsWindow() : nsBaseWidget()
|
||||
mIMECompClauseStringSize = 0;
|
||||
mIMECompClauseStringLength = 0;
|
||||
mIMEReconvertUnicode = NULL;
|
||||
mLeadByte = '\0';
|
||||
|
||||
static BOOL gbInitGlobalValue = FALSE;
|
||||
if(! gbInitGlobalValue) {
|
||||
@@ -1409,7 +1551,11 @@ NS_METHOD nsWindow::Destroy()
|
||||
mEventCallback = nsnull;
|
||||
if (gAttentionTimerMonitor)
|
||||
gAttentionTimerMonitor->KillTimer(mWnd);
|
||||
|
||||
gIsDestroyingAny = PR_TRUE;
|
||||
VERIFY(::DestroyWindow(mWnd));
|
||||
gIsDestroyingAny = PR_FALSE;
|
||||
|
||||
mWnd = NULL;
|
||||
//our windows can be subclassed by
|
||||
//others and these namless, faceless others
|
||||
@@ -2725,7 +2871,10 @@ BOOL nsWindow::OnKeyDown( UINT aVirtualKeyCode, UINT aScanCode, LPARAM aKeyData)
|
||||
DispatchKeyEvent(NS_KEY_PRESS, 0, NS_VK_TAB, aKeyData);
|
||||
}
|
||||
else if (mIsControlDown && !mIsShiftDown && aVirtualKeyCode == NS_VK_SUBTRACT) {
|
||||
DispatchKeyEvent(NS_KEY_PRESS, aVirtualKeyCode-64, 0, aKeyData);
|
||||
DispatchKeyEvent(NS_KEY_PRESS, '-', 0, aKeyData);
|
||||
}
|
||||
else if (mIsControlDown && !mIsShiftDown && aVirtualKeyCode == NS_VK_ADD) {
|
||||
DispatchKeyEvent(NS_KEY_PRESS, '+', 0, aKeyData);
|
||||
}
|
||||
else if ((mIsControlDown && !mIsShiftDown) &&
|
||||
((( NS_VK_0 <= aVirtualKeyCode) && (aVirtualKeyCode <= NS_VK_9)) ||
|
||||
@@ -2782,19 +2931,13 @@ BOOL nsWindow::OnKeyUp( UINT aVirtualKeyCode, UINT aScanCode, LPARAM aKeyData)
|
||||
BOOL nsWindow::OnChar( UINT mbcsCharCode, UINT virtualKeyCode, bool isMultiByte )
|
||||
{
|
||||
wchar_t uniChar;
|
||||
char charToConvert[2];
|
||||
char charToConvert[3];
|
||||
size_t length;
|
||||
|
||||
if (mIMEIsComposing) {
|
||||
HandleEndComposition();
|
||||
}
|
||||
|
||||
{
|
||||
charToConvert[0] = LOBYTE(mbcsCharCode);
|
||||
length=1;
|
||||
}
|
||||
|
||||
|
||||
if(mIsControlDown && (virtualKeyCode <= 0x1A)) // Ctrl+A Ctrl+Z, see Programming Windows 3.1 page 110 for details
|
||||
{
|
||||
// need to account for shift here. bug 16486
|
||||
@@ -2820,8 +2963,31 @@ BOOL nsWindow::OnChar( UINT mbcsCharCode, UINT virtualKeyCode, bool isMultiByte
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!isMultiByte) {
|
||||
if (mLeadByte) { // mLeadByte is used for keeping the lead-byte of CJK char
|
||||
charToConvert[0] = mLeadByte;
|
||||
charToConvert[1] = LOBYTE(mbcsCharCode);
|
||||
mLeadByte = '\0';
|
||||
length=2;
|
||||
}
|
||||
else {
|
||||
charToConvert[0] = LOBYTE(mbcsCharCode);
|
||||
if (::IsDBCSLeadByteEx(gCurrentKeyboardCP, charToConvert[0])) {
|
||||
mLeadByte = charToConvert[0];
|
||||
return TRUE;
|
||||
}
|
||||
length=1;
|
||||
}
|
||||
} else {
|
||||
// SC double-byte punctuation mark in Windows-English is 0x0000aca3
|
||||
uniChar = LOWORD(mbcsCharCode);
|
||||
charToConvert[0] = LOBYTE(uniChar);
|
||||
charToConvert[1] = HIBYTE(uniChar);
|
||||
mLeadByte = '\0';
|
||||
length=2;
|
||||
}
|
||||
::MultiByteToWideChar(gCurrentKeyboardCP,MB_PRECOMPOSED,charToConvert,length,
|
||||
&uniChar,sizeof(uniChar));
|
||||
&uniChar, 1);
|
||||
virtualKeyCode = 0;
|
||||
mIsShiftDown = PR_FALSE;
|
||||
}
|
||||
@@ -3338,6 +3504,15 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
||||
case WM_DISPLAYCHANGE:
|
||||
DispatchStandardEvent(NS_DISPLAYCHANGED);
|
||||
break;
|
||||
|
||||
case WM_SYSCOLORCHANGE:
|
||||
// Note: This is sent for child windows as well as top-level windows.
|
||||
// The Win32 toolkit normally only sends these events to top-level windows.
|
||||
// But we cycle through all of the childwindows and send it to them as well
|
||||
// so all presentations get notified properly.
|
||||
// See nsWindow::GlobalMsgWindowProc.
|
||||
DispatchStandardEvent(NS_SYSCOLORCHANGED);
|
||||
break;
|
||||
|
||||
case WM_NOTIFY:
|
||||
// TAB change
|
||||
@@ -3446,7 +3621,6 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
||||
}
|
||||
|
||||
unsigned char ch = (unsigned char)wParam;
|
||||
UINT char_result;
|
||||
|
||||
// <ctrl><enter> and <ctrl>J and generate exactly the same char code
|
||||
// but we want to "eat" the event for <ctrl><enter> because
|
||||
@@ -3461,15 +3635,10 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
||||
//
|
||||
if ((wParam <= 0xff) && (ch==0x0d || ch==0x08)) {
|
||||
|
||||
result = OnChar(ch,ch==0x0d ? VK_RETURN : VK_BACK,true);
|
||||
result = OnChar(wParam, ch==0x0d ? VK_RETURN : VK_BACK, false);
|
||||
break;
|
||||
}
|
||||
|
||||
{
|
||||
char_result = ch;
|
||||
result = OnChar(char_result,ch,false);
|
||||
}
|
||||
|
||||
result = OnChar(wParam, ch, (wParam > 0xff));
|
||||
break;
|
||||
}
|
||||
case WM_SYSKEYUP:
|
||||
@@ -3752,16 +3921,23 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
||||
}
|
||||
|
||||
case WM_SETFOCUS:
|
||||
result = DispatchFocus(NS_GOTFOCUS, isMozWindowTakingFocus);
|
||||
if(gJustGotActivate) {
|
||||
gJustGotActivate = PR_FALSE;
|
||||
result = DispatchFocus(NS_ACTIVATE, isMozWindowTakingFocus);
|
||||
}
|
||||
#ifdef ACCESSIBILITY
|
||||
if (nsWindow::gIsAccessibilityOn && !mRootAccessible && mIsTopWidgetWindow)
|
||||
CreateRootAccessible();
|
||||
#endif
|
||||
|
||||
if(!gIsDestroyingAny) {
|
||||
result = DispatchFocus(NS_GOTFOCUS, isMozWindowTakingFocus);
|
||||
if(gJustGotActivate) {
|
||||
gJustGotActivate = PR_FALSE;
|
||||
gJustGotDeactivate = PR_FALSE;
|
||||
result = DispatchFocus(NS_ACTIVATE, isMozWindowTakingFocus);
|
||||
}
|
||||
#ifdef ACCESSIBILITY
|
||||
if (nsWindow::gIsAccessibilityOn && !mRootAccessible && mIsTopWidgetWindow)
|
||||
CreateRootAccessible();
|
||||
#endif
|
||||
} else {
|
||||
nsToolkit *toolkit = NS_STATIC_CAST(nsToolkit *, mToolkit);
|
||||
VERIFY(::PostMessage(toolkit->GetDispatchWindow(), WM_SETFOCUS,
|
||||
wParam, lParam));
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_KILLFOCUS:
|
||||
@@ -3850,7 +4026,7 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
||||
because in testing it seems an accurate harbinger of
|
||||
an impending min/max/restore change (WM_NCCALCSIZE would
|
||||
also work, but it's also sent when merely resizing.)) */
|
||||
if (wp->flags & SWP_FRAMECHANGED) {
|
||||
if (wp->flags & SWP_FRAMECHANGED && ::IsWindowVisible(mWnd)) {
|
||||
WINDOWPLACEMENT pl;
|
||||
pl.length = sizeof(pl);
|
||||
::GetWindowPlacement(mWnd, &pl);
|
||||
@@ -3866,6 +4042,22 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
||||
InitEvent(event, NS_SIZEMODE);
|
||||
|
||||
result = DispatchWindowEvent(&event);
|
||||
|
||||
if (pl.showCmd == SW_SHOWMINIMIZED) {
|
||||
// Deactivate
|
||||
char className[19];
|
||||
::GetClassName((HWND)wParam, className, 19);
|
||||
if(strcmp(className, WindowClass()))
|
||||
isMozWindowTakingFocus = PR_FALSE;
|
||||
|
||||
gJustGotDeactivate = PR_FALSE;
|
||||
result = DispatchFocus(NS_DEACTIVATE, isMozWindowTakingFocus);
|
||||
} else if (pl.showCmd == SW_SHOWNORMAL){
|
||||
// Make sure we're active
|
||||
result = DispatchFocus(NS_GOTFOCUS, PR_TRUE);
|
||||
result = DispatchFocus(NS_ACTIVATE, PR_TRUE);
|
||||
}
|
||||
|
||||
NS_RELEASE(event.widget);
|
||||
}
|
||||
break;
|
||||
@@ -3928,6 +4120,8 @@ PRBool nsWindow::ProcessMessage(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT
|
||||
break;
|
||||
|
||||
case WM_IME_CHAR:
|
||||
// We receive double byte char code. No need to worry about the <Shift>
|
||||
mIsShiftDown = PR_FALSE;
|
||||
result = OnIMEChar((BYTE)(wParam>>8),
|
||||
(BYTE) (wParam & 0x00FF),
|
||||
lParam);
|
||||
@@ -5145,6 +5339,10 @@ NS_METHOD nsWindow::SetPreferredSize(PRInt32 aWidth, PRInt32 aHeight)
|
||||
}
|
||||
|
||||
#define ZH_CN_INTELLEGENT_ABC_IME ((HKL)0xe0040804L)
|
||||
#define ZH_CN_MS_PINYIN_IME_3_0 ((HKL)0xe00e0804L)
|
||||
#define ZH_CN_NEIMA_IME ((HKL)0xe0050804L)
|
||||
#define USE_OVERTHESPOT_IME(kl) ((nsToolkit::mIsWinXP) \
|
||||
&& (ZH_CN_MS_PINYIN_IME_3_0 == (kl)))
|
||||
|
||||
void
|
||||
nsWindow::HandleTextEvent(HIMC hIMEContext,PRBool aCheckAttr)
|
||||
@@ -5242,7 +5440,7 @@ nsWindow::HandleTextEvent(HIMC hIMEContext,PRBool aCheckAttr)
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
BOOL
|
||||
nsWindow::HandleStartComposition(HIMC hIMEContext)
|
||||
{
|
||||
NS_ASSERTION( !mIMEIsComposing, "conflict state");
|
||||
@@ -5261,6 +5459,27 @@ nsWindow::HandleStartComposition(HIMC hIMEContext)
|
||||
//
|
||||
// Post process event
|
||||
//
|
||||
if (USE_OVERTHESPOT_IME(gKeyboardLayout)) {
|
||||
LOGFONT lf;
|
||||
NS_IMM_GETCOMPOSITIONFONT(hIMEContext, &lf);
|
||||
lf.lfHeight = event.theReply.mCursorPosition.height;
|
||||
NS_IMM_SETCOMPOSITIONFONT(hIMEContext, &lf);
|
||||
|
||||
COMPOSITIONFORM cf;
|
||||
memset(&cf, NULL, sizeof(COMPOSITIONFORM));
|
||||
cf.dwStyle = CFS_POINT;
|
||||
cf.ptCurrentPos.x = event.theReply.mCursorPosition.x + IME_X_OFFSET;
|
||||
cf.ptCurrentPos.y = event.theReply.mCursorPosition.y + IME_Y_OFFSET;
|
||||
NS_IMM_SETCOMPOSITIONWINDOW(hIMEContext, &cf);
|
||||
|
||||
InitEvent(event,NS_COMPOSITION_END,&point);
|
||||
event.eventStructType = NS_COMPOSITION_END;
|
||||
event.compositionMessage = NS_COMPOSITION_END;
|
||||
(void)DispatchWindowEvent(&event);
|
||||
NS_RELEASE(event.widget);
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
if((0 != event.theReply.mCursorPosition.width) ||
|
||||
(0 != event.theReply.mCursorPosition.height) )
|
||||
{
|
||||
@@ -5290,6 +5509,7 @@ nsWindow::HandleStartComposition(HIMC hIMEContext)
|
||||
mIMECompUnicode = new nsAutoString();
|
||||
mIMEIsComposing = PR_TRUE;
|
||||
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -5459,14 +5679,58 @@ BOOL nsWindow::OnIMEChar(BYTE aByte1, BYTE aByte2, LPARAM aKeyState)
|
||||
#ifdef DEBUG_IME
|
||||
printf("OnIMEChar\n");
|
||||
#endif
|
||||
NS_ASSERTION(PR_TRUE, "should not got an WM_IME_CHAR");
|
||||
wchar_t uniChar;
|
||||
char charToConvert[3];
|
||||
size_t length;
|
||||
int err = 0;
|
||||
|
||||
// not implement yet
|
||||
return PR_FALSE;
|
||||
if (aByte1) {
|
||||
charToConvert[0] = aByte1;
|
||||
charToConvert[1] = aByte2;
|
||||
length=2;
|
||||
}
|
||||
else {
|
||||
charToConvert[0] = aByte2;
|
||||
length=1;
|
||||
}
|
||||
err = ::MultiByteToWideChar(gCurrentKeyboardCP, MB_PRECOMPOSED, charToConvert, length,
|
||||
&uniChar, 1);
|
||||
|
||||
#ifdef DEBUG_IME
|
||||
if (!err) {
|
||||
DWORD lastError = ::GetLastError();
|
||||
switch (lastError)
|
||||
{
|
||||
case ERROR_INSUFFICIENT_BUFFER:
|
||||
printf("ERROR_INSUFFICIENT_BUFFER\n");
|
||||
break;
|
||||
|
||||
case ERROR_INVALID_FLAGS:
|
||||
printf("ERROR_INVALID_FLAGS\n");
|
||||
break;
|
||||
|
||||
case ERROR_INVALID_PARAMETER:
|
||||
printf("ERROR_INVALID_PARAMETER\n");
|
||||
break;
|
||||
|
||||
case ERROR_NO_UNICODE_TRANSLATION:
|
||||
printf("ERROR_NO_UNICODE_TRANSLATION\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// We need to return TRUE here so that Windows doesnt'
|
||||
// send two WM_CHAR msgs
|
||||
DispatchKeyEvent(NS_KEY_PRESS, uniChar, 0, 0);
|
||||
return PR_TRUE;
|
||||
}
|
||||
//==========================================================================
|
||||
BOOL nsWindow::OnIMEComposition(LPARAM aGCS)
|
||||
{
|
||||
if (USE_OVERTHESPOT_IME(gKeyboardLayout))
|
||||
return PR_FALSE;
|
||||
|
||||
#ifdef DEBUG_IME
|
||||
printf("OnIMEComposition\n");
|
||||
#endif
|
||||
@@ -5720,6 +5984,9 @@ BOOL nsWindow::OnIMECompositionFull()
|
||||
//==========================================================================
|
||||
BOOL nsWindow::OnIMEEndComposition()
|
||||
{
|
||||
if (USE_OVERTHESPOT_IME(gKeyboardLayout))
|
||||
return PR_FALSE;
|
||||
|
||||
#ifdef DEBUG_IME
|
||||
printf("OnIMEEndComposition\n");
|
||||
#endif
|
||||
@@ -5954,7 +6221,9 @@ BOOL nsWindow::OnIMESetContext(BOOL aActive, LPARAM& aISC)
|
||||
if(! aActive)
|
||||
ResetInputState();
|
||||
|
||||
aISC &= ~ ISC_SHOWUICOMPOSITIONWINDOW;
|
||||
if (!USE_OVERTHESPOT_IME(gKeyboardLayout))
|
||||
aISC &= ~ ISC_SHOWUICOMPOSITIONWINDOW;
|
||||
|
||||
// We still return false here because we need to pass the
|
||||
// aISC w/ ISC_SHOWUICOMPOSITIONWINDOW clear to the default
|
||||
// window proc so it will draw the candidcate window for us...
|
||||
@@ -5976,9 +6245,9 @@ BOOL nsWindow::OnIMEStartComposition()
|
||||
if (hIMEContext==NULL)
|
||||
return PR_TRUE;
|
||||
|
||||
HandleStartComposition(hIMEContext);
|
||||
PRBool rtn = HandleStartComposition(hIMEContext);
|
||||
NS_IMM_RELEASECONTEXT(mWnd, hIMEContext);
|
||||
return PR_TRUE;
|
||||
return rtn;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
||||
@@ -83,6 +83,9 @@ class nsIMM
|
||||
typedef LONG (CALLBACK *SetCStatusPtr) (HIMC,DWORD,DWORD);
|
||||
typedef LONG (CALLBACK *NotifyIMEPtr) (HIMC,DWORD,DWORD,DWORD);
|
||||
typedef LONG (CALLBACK *SetCandWindowPtr) (HIMC,LPCANDIDATEFORM);
|
||||
typedef LONG (CALLBACK *SetCompWindowPtr) (HIMC,LPCOMPOSITIONFORM);
|
||||
typedef LONG (CALLBACK *GetCompFontPtr) (HIMC, PLOGFONT);
|
||||
typedef LONG (CALLBACK *SetCompFontPtr) (HIMC, PLOGFONT);
|
||||
typedef LONG (CALLBACK *GetCompWindowPtr) (HIMC,LPCOMPOSITIONFORM);
|
||||
typedef LONG (CALLBACK *GetPropertyPtr) (HKL, DWORD);
|
||||
|
||||
@@ -123,6 +126,21 @@ public:
|
||||
|
||||
mGetCompositionWindow=(mInstance) ? (GetCompWindowPtr)GetProcAddress(mInstance,"ImmGetCompositionWindow") : 0;
|
||||
NS_ASSERTION(mGetCompositionWindow!=NULL,"nsIMM.ImmGetCompositionWindow failed.");
|
||||
|
||||
mGetCompositionFontA=(mInstance) ? (GetCompFontPtr)GetProcAddress(mInstance,"ImmGetCompositionFontA") : 0;
|
||||
NS_ASSERTION(mGetCompositionFontA!=NULL,"nsIMM.ImmGetCompositionFontA failed.");
|
||||
|
||||
mGetCompositionFontW=(mInstance) ? (GetCompFontPtr)GetProcAddress(mInstance,"ImmGetCompositionFontW") : 0;
|
||||
NS_ASSERTION(mGetCompositionFontW!=NULL,"nsIMM.ImmGetCompositionFontW failed.");
|
||||
|
||||
mSetCompositionFontA=(mInstance) ? (SetCompFontPtr)GetProcAddress(mInstance,"ImmSetCompositionFontA") : 0;
|
||||
NS_ASSERTION(mSetCompositionFontA!=NULL,"nsIMM.ImmSetCompositionFontA failed.");
|
||||
|
||||
mSetCompositionFontW=(mInstance) ? (SetCompFontPtr)GetProcAddress(mInstance,"ImmSetCompositionFontW") : 0;
|
||||
NS_ASSERTION(mSetCompositionFontW!=NULL,"nsIMM.ImmSetCompositionFontW failed.");
|
||||
|
||||
mSetCompositionWindow=(mInstance) ? (SetCompWindowPtr)GetProcAddress(mInstance,"ImmSetCompositionWindow") : 0;
|
||||
NS_ASSERTION(mSetCompositionWindow!=NULL,"nsIMM.ImmSetCompositionWindow failed.");
|
||||
|
||||
mGetProperty=(mInstance) ? (GetPropertyPtr)GetProcAddress(mInstance,"ImmGetProperty") : 0;
|
||||
NS_ASSERTION(mGetProperty!=NULL,"nsIMM.ImmGetProperty failed.");
|
||||
@@ -141,6 +159,11 @@ public:
|
||||
mNotifyIME=0;
|
||||
mSetCandiateWindow=0;
|
||||
mGetCompositionWindow=0;
|
||||
mSetCompositionWindow=0;
|
||||
mGetCompositionFontA=0;
|
||||
mGetCompositionFontA=0;
|
||||
mSetCompositionFontW=0;
|
||||
mSetCompositionFontW=0;
|
||||
mGetProperty=0;
|
||||
}
|
||||
|
||||
@@ -176,6 +199,26 @@ public:
|
||||
return (mSetCandiateWindow) ? mSetCandiateWindow(h,l) : 0L;
|
||||
}
|
||||
|
||||
LONG SetCompositionWindow(HIMC h,LPCOMPOSITIONFORM l) {
|
||||
return (mSetCompositionWindow) ? mSetCompositionWindow(h,l) : 0L;
|
||||
}
|
||||
|
||||
LONG GetCompositionFontA(HIMC h, PLOGFONT l) {
|
||||
return (mGetCompositionFontA) ? mGetCompositionFontA(h,l) : 0L;
|
||||
}
|
||||
|
||||
LONG GetCompositionFontW(HIMC h, PLOGFONT l) {
|
||||
return (mGetCompositionFontW) ? mGetCompositionFontW(h,l) : 0L;
|
||||
}
|
||||
|
||||
LONG SetCompositionFontA(HIMC h, PLOGFONT l) {
|
||||
return (mSetCompositionFontA) ? mSetCompositionFontA(h,l) : 0L;
|
||||
}
|
||||
|
||||
LONG SetCompositionFontW(HIMC h, PLOGFONT l) {
|
||||
return (mSetCompositionFontW) ? mSetCompositionFontW(h,l) : 0L;
|
||||
}
|
||||
|
||||
LONG GetCompositionWindow(HIMC h,LPCOMPOSITIONFORM l) {
|
||||
return (mGetCompositionWindow) ? mGetCompositionWindow(h,l) : 0L;
|
||||
}
|
||||
@@ -195,6 +238,11 @@ private:
|
||||
SetCStatusPtr mSetConversionStatus;
|
||||
NotifyIMEPtr mNotifyIME;
|
||||
SetCandWindowPtr mSetCandiateWindow;
|
||||
SetCompWindowPtr mSetCompositionWindow;
|
||||
GetCompFontPtr mGetCompositionFontA;
|
||||
GetCompFontPtr mGetCompositionFontW;
|
||||
SetCompFontPtr mSetCompositionFontA;
|
||||
SetCompFontPtr mSetCompositionFontW;
|
||||
GetCompWindowPtr mGetCompositionWindow;
|
||||
GetPropertyPtr mGetProperty;
|
||||
};
|
||||
@@ -412,7 +460,7 @@ protected:
|
||||
|
||||
void GetNonClientBounds(nsRect &aRect);
|
||||
void HandleTextEvent(HIMC hIMEContext, PRBool aCheckAttr=PR_TRUE);
|
||||
void HandleStartComposition(HIMC hIMEContext);
|
||||
BOOL HandleStartComposition(HIMC hIMEContext);
|
||||
void HandleEndComposition(void);
|
||||
void MapDBCSAtrributeArrayToUnicodeOffsets(PRUint32* textRangeListLengthResult, nsTextRangeArray* textRangeListResult);
|
||||
|
||||
@@ -429,22 +477,29 @@ private:
|
||||
protected:
|
||||
nsSize mLastSize;
|
||||
static nsWindow* gCurrentWindow;
|
||||
PRBool mIsTopWidgetWindow;
|
||||
nsPoint mLastPoint;
|
||||
HWND mWnd;
|
||||
#if 0
|
||||
HPALETTE mPalette;
|
||||
#endif
|
||||
WNDPROC mPrevWndProc;
|
||||
|
||||
PRBool mHas3DBorder;
|
||||
HBRUSH mBrush;
|
||||
PRBool mIsShiftDown;
|
||||
PRBool mIsControlDown;
|
||||
PRBool mIsAltDown;
|
||||
PRBool mIsDestroying;
|
||||
PRBool mOnDestroyCalled;
|
||||
PRBool mIsVisible;
|
||||
|
||||
PRPackedBool mIsTopWidgetWindow;
|
||||
PRPackedBool mHas3DBorder;
|
||||
PRPackedBool mIsShiftDown;
|
||||
PRPackedBool mIsControlDown;
|
||||
PRPackedBool mIsAltDown;
|
||||
PRPackedBool mIsDestroying;
|
||||
PRPackedBool mOnDestroyCalled;
|
||||
PRPackedBool mIsVisible;
|
||||
PRPackedBool mIMEIsComposing;
|
||||
PRPackedBool mIMEIsStatusChanged;
|
||||
PRPackedBool mIsInMouseCapture;
|
||||
PRPackedBool mIsInMouseWheelProcessing;
|
||||
|
||||
char mLeadByte;
|
||||
|
||||
// XXX Temporary, should not be caching the font
|
||||
nsFont * mFont;
|
||||
|
||||
@@ -459,8 +514,6 @@ protected:
|
||||
|
||||
// For Input Method Support
|
||||
DWORD mIMEProperty;
|
||||
PRBool mIMEIsComposing;
|
||||
PRBool mIMEIsStatusChanged;
|
||||
nsCString* mIMECompString;
|
||||
nsString* mIMECompUnicode;
|
||||
PRUint8* mIMEAttributeString;
|
||||
@@ -476,9 +529,6 @@ protected:
|
||||
static UINT gCurrentKeyboardCP;
|
||||
static HKL gKeyboardLayout;
|
||||
|
||||
PRBool mIsInMouseCapture;
|
||||
PRBool mIsInMouseWheelProcessing;
|
||||
|
||||
// Drag & Drop
|
||||
nsNativeDragTarget * mNativeDragTarget;
|
||||
|
||||
@@ -513,6 +563,11 @@ protected:
|
||||
IAccessible* mRootAccessible;
|
||||
static BOOL gIsAccessibilityOn;
|
||||
#endif
|
||||
|
||||
static BOOL CALLBACK BroadcastMsgToChildren(HWND aWnd, LPARAM aMsg);
|
||||
static BOOL CALLBACK BroadcastMsg(HWND aTopWindow, LPARAM aMsg);
|
||||
public:
|
||||
static void GlobalMsgWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
};
|
||||
|
||||
//
|
||||
|
||||
@@ -31,7 +31,7 @@ MODULE = widget
|
||||
LIBRARY_NAME = widget_xlib
|
||||
EXPORT_LIBRARY = 1
|
||||
IS_COMPONENT = 1
|
||||
MODULE_NAME = nsWidgetXLibModule
|
||||
MODULE_NAME = nsWidgetXLIBModule
|
||||
REQUIRES = xpcom \
|
||||
string \
|
||||
appshell \
|
||||
|
||||
@@ -39,6 +39,8 @@
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
const nsIWebNavigation = Components.interfaces.nsIWebNavigation;
|
||||
var gPrintSettingsAreGlobal = true;
|
||||
var gSavePrintSettings = true;
|
||||
var gPrintSettings = null;
|
||||
var gChromeState = null; // chrome state before we went into print preview
|
||||
var gOldCloseHandler = null; // close handler before we went into print preview
|
||||
@@ -196,23 +198,28 @@ function BrowserExitPrintPreview()
|
||||
mainWin.setAttribute("onclose", gOldCloseHandler);
|
||||
}
|
||||
|
||||
function GetPrintSettings(webBrowserPrint)
|
||||
function GetPrintSettings()
|
||||
{
|
||||
var prevPS = gPrintSettings;
|
||||
|
||||
try {
|
||||
if (gPrintSettings == null) {
|
||||
var useGlobalPrintSettings = true;
|
||||
var pref = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefBranch);
|
||||
if (pref) {
|
||||
useGlobalPrintSettings = pref.getBoolPref("print.use_global_printsettings", false);
|
||||
gPrintSettingsAreGlobal = pref.getBoolPref("print.use_global_printsettings", false);
|
||||
gSavePrintSettings = pref.getBoolPref("print.save_print_settings", false);
|
||||
}
|
||||
|
||||
if (useGlobalPrintSettings) {
|
||||
gPrintSettings = webBrowserPrint.globalPrintSettings;
|
||||
var psService = Components.classes["@mozilla.org/gfx/printsettings-service;1"]
|
||||
.getService(Components.interfaces.nsIPrintSettingsService);
|
||||
if (gPrintSettingsAreGlobal) {
|
||||
gPrintSettings = psService.globalPrintSettings;
|
||||
if (gSavePrintSettings) {
|
||||
psService.initPrintSettingsFromPrefs(gPrintSettings, false, gPrintSettings.kInitSaveNativeData);
|
||||
}
|
||||
} else {
|
||||
gPrintSettings = webBrowserPrint.newPrintSettings;
|
||||
gPrintSettings = psService.newPrintSettings;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
@@ -244,8 +251,8 @@ function BrowserPrintPreview()
|
||||
var webBrowserPrint = ifreq.getInterface(
|
||||
Components.interfaces.nsIWebBrowserPrint);
|
||||
if (webBrowserPrint) {
|
||||
gPrintSettings = GetPrintSettings(webBrowserPrint);
|
||||
webBrowserPrint.printPreview(gPrintSettings);
|
||||
gPrintSettings = GetPrintSettings();
|
||||
webBrowserPrint.printPreview(gPrintSettings, null, null);
|
||||
}
|
||||
|
||||
// show the toolbar after we go into print preview mode so
|
||||
@@ -269,18 +276,22 @@ function BrowserPrintSetup()
|
||||
var ifreq = _content.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
|
||||
var webBrowserPrint = ifreq.getInterface(Components.interfaces.nsIWebBrowserPrint);
|
||||
if (webBrowserPrint) {
|
||||
gPrintSettings = GetPrintSettings(webBrowserPrint);
|
||||
gPrintSettings = GetPrintSettings();
|
||||
}
|
||||
|
||||
didOK = goPageSetup(window, gPrintSettings); // from utilityOverlay.js
|
||||
if (didOK) {
|
||||
if (webBrowserPrint) {
|
||||
if (gPrintSettingsAreGlobal && gSavePrintSettings) {
|
||||
var psService = Components.classes["@mozilla.org/gfx/printsettings-service;1"]
|
||||
.getService(Components.interfaces.nsIPrintSettingsService);
|
||||
psService.savePrintSettingsToPrefs(gPrintSettings, false, gPrintSettings.kInitSaveNativeData);
|
||||
}
|
||||
if (webBrowserPrint.doingPrintPreview) {
|
||||
webBrowserPrint.printPreview(gPrintSettings);
|
||||
webBrowserPrint.printPreview(gPrintSettings, null, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
dump("BrowserPrintSetup "+e);
|
||||
}
|
||||
@@ -293,7 +304,7 @@ function BrowserPrint()
|
||||
var ifreq = _content.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
|
||||
var webBrowserPrint = ifreq.getInterface(Components.interfaces.nsIWebBrowserPrint);
|
||||
if (webBrowserPrint) {
|
||||
gPrintSettings = GetPrintSettings(webBrowserPrint);
|
||||
gPrintSettings = GetPrintSettings();
|
||||
webBrowserPrint.print(gPrintSettings, null);
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<RDF:Description about="urn:mozilla:package:navigator-region"
|
||||
chrome:author="mozilla.org"
|
||||
chrome:name="navigator-region"
|
||||
chrome:localeVersion="1.0.0final">
|
||||
chrome:localeVersion="1.0.1rc1">
|
||||
</RDF:Description>
|
||||
|
||||
</RDF:RDF>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
chrome:displayName="Navigator"
|
||||
chrome:author="mozilla.org"
|
||||
chrome:name="navigator"
|
||||
chrome:localeVersion="1.0.0final"
|
||||
chrome:localeVersion="1.0.1rc1"
|
||||
chrome:skinVersion="1.0">
|
||||
</RDF:Description>
|
||||
|
||||
|
||||
@@ -12,6 +12,6 @@
|
||||
chrome:displayName="Mac Specific Resources"
|
||||
chrome:author="mozilla.org"
|
||||
chrome:name="navigator-platform"
|
||||
chrome:localeVersion="1.0.0final">
|
||||
chrome:localeVersion="1.0.1rc1">
|
||||
</RDF:Description>
|
||||
</RDF:RDF>
|
||||
|
||||
@@ -104,8 +104,10 @@ const gTabStripPrefListener =
|
||||
return;
|
||||
|
||||
var stripVisibility = !pref.getBoolPref(prefName);
|
||||
if (gBrowser.mTabContainer.childNodes.length == 1)
|
||||
if (gBrowser.mTabContainer.childNodes.length == 1) {
|
||||
gBrowser.setStripVisibilityTo(stripVisibility);
|
||||
pref.setBoolPref("browser.tabs.forceHide", false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -292,6 +294,23 @@ function allLeftButtonsAreHidden()
|
||||
return true;
|
||||
}
|
||||
|
||||
function RegisterTabOpenObserver()
|
||||
{
|
||||
const observer = {
|
||||
observe: function(subject, topic, data)
|
||||
{
|
||||
if (topic != "open-new-tab-request" || subject != window)
|
||||
return;
|
||||
|
||||
delayedOpenTab(data);
|
||||
}
|
||||
};
|
||||
|
||||
const service = Components.classes["@mozilla.org/observer-service;1"]
|
||||
.getService(Components.interfaces.nsIObserverService);
|
||||
service.addObserver(observer, "open-new-tab-request", false);
|
||||
}
|
||||
|
||||
function Startup()
|
||||
{
|
||||
// init globals
|
||||
@@ -449,6 +468,8 @@ function Startup()
|
||||
remoteService = Components.classes[XREMOTESERVICE_CONTRACTID]
|
||||
.getService(Components.interfaces.nsIXRemoteService);
|
||||
remoteService.addBrowserInstance(window);
|
||||
|
||||
RegisterTabOpenObserver();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -645,16 +666,12 @@ function OpenBookmarkGroupFromResource(resource, datasource, rdf) {
|
||||
var tabPanels = gBrowser.mPanelContainer.childNodes;
|
||||
var tabCount = tabPanels.length;
|
||||
var index = 0;
|
||||
while (containerChildren.hasMoreElements()) {
|
||||
for (; containerChildren.hasMoreElements(); ++index) {
|
||||
var resource = containerChildren.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
|
||||
var target = datasource.GetTarget(resource, urlResource, true);
|
||||
if (target) {
|
||||
var uri = target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
|
||||
if (index < tabCount)
|
||||
tabPanels[index].loadURI(uri, null, nsIWebNavigation.LOAD_FLAGS_NONE);
|
||||
else
|
||||
gBrowser.addTab(uri);
|
||||
index++;
|
||||
gBrowser.addTab(uri);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -663,11 +680,7 @@ function OpenBookmarkGroupFromResource(resource, datasource, rdf) {
|
||||
|
||||
// Select the first tab in the group.
|
||||
var tabs = gBrowser.mTabContainer.childNodes;
|
||||
gBrowser.selectedTab = tabs[0];
|
||||
|
||||
// Close any remaining open tabs that are left over.
|
||||
for (var i = tabCount-1; i >= index; i--)
|
||||
gBrowser.removeTab(tabs[i]);
|
||||
gBrowser.selectedTab = tabs[tabCount];
|
||||
}
|
||||
|
||||
function OpenBookmarkURL(node, datasources)
|
||||
@@ -721,6 +734,17 @@ function addBookmarkAs()
|
||||
BookmarksUtils.addBookmarkForBrowser(gBrowser.webNavigation, true);
|
||||
}
|
||||
|
||||
function addGroupmarkAs()
|
||||
{
|
||||
BookmarksUtils.addBookmarkForTabBrowser(gBrowser, true);
|
||||
}
|
||||
|
||||
function updateGroupmarkMenuitem(id)
|
||||
{
|
||||
const disabled = gBrowser.browsers.length == 1;
|
||||
document.getElementById(id).setAttribute("disabled", disabled);
|
||||
}
|
||||
|
||||
function readRDFString(aDS,aRes,aProp)
|
||||
{
|
||||
var n = aDS.GetTarget(aRes, aProp, true);
|
||||
@@ -773,6 +797,15 @@ function getSearchUrl(attr)
|
||||
return searchURL;
|
||||
}
|
||||
|
||||
function QualifySearchTerm()
|
||||
{
|
||||
// If the text in the URL bar is the same as the currently loaded
|
||||
// page's URL then treat this as an empty search term. This way
|
||||
// the user is taken to the search page where s/he can enter a term.
|
||||
if (window.XULBrowserWindow.userTyped.value)
|
||||
return document.getElementById("urlbar").value;
|
||||
return "";
|
||||
}
|
||||
|
||||
function OpenSearch(tabName, forceDialogFlag, searchStr, newWindowFlag)
|
||||
{
|
||||
@@ -1649,29 +1682,45 @@ function updateComponentBarBroadcaster()
|
||||
|
||||
function updateToolbarStates(toolbarMenuElt)
|
||||
{
|
||||
if (gHaveUpdatedToolbarState) {
|
||||
updateComponentBarBroadcaster();
|
||||
return;
|
||||
}
|
||||
var mainWindow = document.getElementById("main-window");
|
||||
if (mainWindow.hasAttribute("chromehidden")) {
|
||||
gHaveUpdatedToolbarState = true;
|
||||
var i;
|
||||
for (i = 0; i < toolbarMenuElt.childNodes.length; ++i)
|
||||
document.getElementById(toolbarMenuElt.childNodes[i].getAttribute("observes")).removeAttribute("checked");
|
||||
var toolbars = document.getElementsByTagName("toolbar");
|
||||
for (i = 0; i < toolbars.length; ++i) {
|
||||
if (toolbars[i].getAttribute("class").indexOf("chromeclass") != -1)
|
||||
toolbars[i].setAttribute("hidden", "true");
|
||||
if (!gHaveUpdatedToolbarState) {
|
||||
var mainWindow = document.getElementById("main-window");
|
||||
if (mainWindow.hasAttribute("chromehidden")) {
|
||||
gHaveUpdatedToolbarState = true;
|
||||
var i;
|
||||
for (i = 0; i < toolbarMenuElt.childNodes.length; ++i)
|
||||
document.getElementById(toolbarMenuElt.childNodes[i].getAttribute("observes")).removeAttribute("checked");
|
||||
var toolbars = document.getElementsByTagName("toolbar");
|
||||
for (i = 0; i < toolbars.length; ++i) {
|
||||
if (toolbars[i].getAttribute("class").indexOf("chromeclass") != -1)
|
||||
toolbars[i].setAttribute("hidden", "true");
|
||||
}
|
||||
var statusbars = document.getElementsByTagName("statusbar");
|
||||
for (i = 0; i < statusbars.length; ++i) {
|
||||
if (statusbars[i].getAttribute("class").indexOf("chromeclass") != -1)
|
||||
statusbars[i].setAttribute("hidden", "true");
|
||||
}
|
||||
mainWindow.removeAttribute("chromehidden");
|
||||
}
|
||||
var statusbars = document.getElementsByTagName("statusbar");
|
||||
for (i = 0; i < statusbars.length; ++i) {
|
||||
if (statusbars[i].getAttribute("class").indexOf("chromeclass") != -1)
|
||||
statusbars[i].setAttribute("hidden", "true");
|
||||
}
|
||||
mainWindow.removeAttribute("chromehidden");
|
||||
}
|
||||
updateComponentBarBroadcaster();
|
||||
|
||||
const tabbarMenuItem = document.getElementById("menuitem_showhide_tabbar");
|
||||
// Make show/hide menu item reflect current state
|
||||
const visibility = gBrowser.getStripVisibility();
|
||||
tabbarMenuItem.setAttribute("checked", visibility);
|
||||
|
||||
// Don't allow the tab bar to be shown/hidden when more than one tab is open
|
||||
// or when we have 1 tab and the autoHide pref is set
|
||||
const disabled = gBrowser.browsers.length > 1 ||
|
||||
pref.getBoolPref("browser.tabs.autoHide");
|
||||
tabbarMenuItem.setAttribute("disabled", disabled);
|
||||
}
|
||||
|
||||
function showHideTabbar()
|
||||
{
|
||||
const visibility = gBrowser.getStripVisibility();
|
||||
pref.setBoolPref("browser.tabs.forceHide", visibility);
|
||||
gBrowser.setStripVisibilityTo(!visibility);
|
||||
}
|
||||
|
||||
// Fill in tooltips for personal toolbar
|
||||
|
||||
@@ -164,6 +164,7 @@ Contributor(s): ______________________________________. -->
|
||||
showCommentColumn="true"
|
||||
inputtooltiptext="&locationBar.tooltip;"
|
||||
oninput="window.XULBrowserWindow.userTyped.value=true;"
|
||||
ondragdrop="window.XULBrowserWindow.userTyped.value=true;alert('foo');"
|
||||
ontextcommand="return handleURLBarCommand(eventParam, domEvent);"
|
||||
ontextrevert="return handleURLBarRevert();"
|
||||
onfocus="URLBarFocusHandler(event);"
|
||||
@@ -200,7 +201,7 @@ Contributor(s): ______________________________________. -->
|
||||
|
||||
<button id="search-button" class="button-toolbar chromeclass-location"
|
||||
label="&searchButton.label;" persist="hidden"
|
||||
oncommand="OpenSearch('internet',false, document.getElementById('urlbar').value);"
|
||||
oncommand="OpenSearch('internet',false, QualifySearchTerm());"
|
||||
ondragover="nsDragAndDrop.dragOver(event, searchButtonObserver);"
|
||||
ondragdrop="nsDragAndDrop.drop(event, searchButtonObserver);"
|
||||
ondragexit="nsDragAndDrop.dragExit(event, searchButtonObserver);"
|
||||
@@ -264,7 +265,7 @@ Contributor(s): ______________________________________. -->
|
||||
ondragover="nsDragAndDrop.dragOver(event, folderObserver);"
|
||||
template="bookmarksMenuTemplate">
|
||||
<menupopup onpopuphiding="gDidOpen = false;"
|
||||
onpopupshowing="checkBookmarksMenuTemplateBuilder();"
|
||||
onpopupshowing="checkBookmarksMenuTemplateBuilder(); updateGroupmarkMenuitem('PT_bookmarks_groupmark');">
|
||||
ondragdrop="nsDragAndDrop.drop(event, menuDNDObserver); event.preventBubble();"
|
||||
ondragexit="nsDragAndDrop.dragExit(event, menuDNDObserver); event.preventBubble();"
|
||||
ondragover="nsDragAndDrop.dragOver(event, menuDNDObserver); event.preventBubble();">
|
||||
@@ -272,6 +273,8 @@ Contributor(s): ______________________________________. -->
|
||||
ondragover="event.preventBubble(); return false;"/>
|
||||
<menuitem accesskey="&addCurPageAsCmd.accesskey;" key="addBookmarkAsKb" observes="Browser:AddBookmarkAs"
|
||||
ondragover="event.preventBubble(); return false;"/>
|
||||
<menuitem id="PT_bookmarks_groupmark" observes="Browser:AddGroupmarkAs"
|
||||
ondragover="event.preventBubble(); return false;"/>
|
||||
<menuseparator ondragover="event.preventBubble(); return false;"/>
|
||||
<menuitem accesskey="&manBookmarksCmd.accesskey;" key="manBookmarkKb" observes="Browser:ManageBookmark"
|
||||
ondragover="event.preventBubble(); return false;"/>
|
||||
@@ -344,6 +347,16 @@ Contributor(s): ______________________________________. -->
|
||||
label="rdf:http://home.netscape.com/NC-rdf#Name"/>
|
||||
</rule>
|
||||
|
||||
<rule nc:FolderGroup="true" iscontainer="true">
|
||||
<menupopup>
|
||||
<menuitem class="menuitem-iconic bookmark-group"
|
||||
label="rdf:http://home.netscape.com/NC-rdf#Name"
|
||||
group="true"
|
||||
uri="rdf:*"
|
||||
xulcontentsgenerated="true"/>
|
||||
</menupopup>
|
||||
</rule>
|
||||
|
||||
<rule iscontainer="true" isempty="true"
|
||||
rdf:type="http://home.netscape.com/NC-rdf#Folder">
|
||||
<menupopup
|
||||
|
||||
@@ -148,6 +148,9 @@
|
||||
<command id="Browser:AddBookmarkAs" label="&addCurPageAsCmd.label;"
|
||||
accesskey="&addCurPageAsCmd.accesskey;"
|
||||
oncommand="addBookmarkAs();"/>
|
||||
<command id="Browser:AddGroupmarkAs" label="&addCurTabsAsCmd.label;"
|
||||
accesskey="&addCurTabsAsCmd.accesskey;"
|
||||
oncommand="addGroupmarkAs(); event.preventBubble();"/>
|
||||
<command id="Browser:ManageBookmark" label="&manBookmarksCmd.label;" accesskey="&manBookmarksCmd.accesskey;"
|
||||
oncommand="BrowserEditBookmarks();" />
|
||||
|
||||
@@ -217,7 +220,7 @@
|
||||
<menuitem id="menu_find" label="&findOnCmd.label;" accesskey="&findOnCmd.accesskey;" key="key_find" command="Browser:Find"/>
|
||||
<menuitem id="menu_findAgain" label="&findAgainCmd.label;" accesskey="&findAgainCmd.accesskey;" key="key_findAgain" command="Browser:FindAgain"/>
|
||||
<menuseparator id="menu_PrefsSeparator"/>
|
||||
<menuitem id="menu_preferences" oncommand="goPreferences('navigator.xul', 'chrome://communicator/content/pref/pref-navigator.xul', 'navigator')"/>
|
||||
<menuitem id="menu_preferences" oncommand="goPreferences('navigator', 'chrome://communicator/content/pref/pref-navigator.xul', 'navigator')"/>
|
||||
</menupopup>
|
||||
</menu>
|
||||
|
||||
@@ -227,6 +230,7 @@
|
||||
<menupopup id="view_toolbars_popup" onpopupshowing="updateToolbarStates(this);">
|
||||
<menuitem label="&navbarCmd.label;" accesskey="&navbarCmd.accesskey;" class="menuitem-iconic" type="checkbox" observes="cmd_viewnavbar" />
|
||||
<menuitem label="&personalbarCmd.label;" accesskey="&personalbarCmd.accesskey;" class="menuitem-iconic" type="checkbox" observes="cmd_viewpersonaltoolbar" />
|
||||
<menuitem id="menuitem_showhide_tabbar" label="&tabbarCmd.label;" accesskey="&tabbarCmd.accesskey;" class="menuitem-iconic" type="checkbox" oncommand="showHideTabbar();" checked="true"/>
|
||||
<menuitem label="&taskbarCmd.label;" accesskey="&taskbarCmd.accesskey;" class="menuitem-iconic" type="checkbox" observes="cmd_viewtaskbar" />
|
||||
<menuitem label="&componentbarCmd.label;" accesskey="&componentbarCmd.accesskey;" class="menuitem-iconic" type="checkbox" observes="cmd_viewcomponentbar"/>
|
||||
</menupopup>
|
||||
@@ -256,7 +260,7 @@
|
||||
<menu label="&applyTheme.label;" accesskey="&applyTheme.accesskey;">
|
||||
<menupopup datasources="rdf:chrome" ref="urn:mozilla:skin:root" oncommand="applyTheme(event.target)">
|
||||
<menuitem label="&themePreferencesCmd.label;" accesskey="&themePreferencesCmd.accesskey;"
|
||||
oncommand="goPreferences('pref-themes.xul','chrome://communicator/content/pref/pref-themes.xul')"/>
|
||||
oncommand="goPreferences('appearance','chrome://communicator/content/pref/pref-themes.xul', 'themes-panel')"/>
|
||||
<menuitem label="&getNewThemesCmd.label;" accesskey="&getNewThemesCmd.accesskey;" oncommand="getNewThemes();"/>
|
||||
<menuseparator/>
|
||||
<template>
|
||||
@@ -329,10 +333,11 @@
|
||||
</menupopup>
|
||||
</rule>
|
||||
</template>
|
||||
<menupopup>
|
||||
<menupopup onpopupshowing="updateGroupmarkMenuitem('bookmarks_groupmark');">
|
||||
<!-- for some reason these don't work as command="" -->
|
||||
<menuitem key="addBookmarkKb" observes="Browser:AddBookmark"/>
|
||||
<menuitem key="addBookmarkAsKb" observes="Browser:AddBookmarkAs"/>
|
||||
<menuitem id="bookmarks_groupmark" observes="Browser:AddGroupmarkAs"/>
|
||||
<menuitem key="manBookmarkKb" observes="Browser:ManageBookmark"/>
|
||||
<menuseparator/>
|
||||
</menupopup>
|
||||
|
||||
@@ -313,7 +313,7 @@ nsBrowserStatusHandler.prototype =
|
||||
}
|
||||
|
||||
// Disable menu entries for images, enable otherwise
|
||||
if (this.mimeTypeIsTextBased(content.document.contentType))
|
||||
if (content.document && this.mimeTypeIsTextBased(content.document.contentType))
|
||||
this.isImage.removeAttribute('disabled');
|
||||
else
|
||||
this.isImage.setAttribute('disabled', 'true');
|
||||
|
||||
@@ -148,6 +148,34 @@ function onLoadPageInfo()
|
||||
}
|
||||
}
|
||||
|
||||
function doHelpButton() {
|
||||
var tabControl = document.getElementById("tabbox");
|
||||
switch (tabControl.selectedTab.id) {
|
||||
case "generalTab":
|
||||
helpdoc = "pageinfo_general";
|
||||
break;
|
||||
case "formsTab":
|
||||
helpdoc = "pageinfo_forms";
|
||||
break;
|
||||
case "linksTab":
|
||||
helpdoc = "pageinfo_links";
|
||||
break;
|
||||
case "mediaTab":
|
||||
helpdoc = "pageinfo_media";
|
||||
break;
|
||||
case "securityTab":
|
||||
helpdoc = "pageinfo_security";
|
||||
break;
|
||||
case "p3pTab":
|
||||
helpdoc = "pageinfo_privacy";
|
||||
break;
|
||||
default:
|
||||
helpdoc = "pageinfo_general";
|
||||
break;
|
||||
}
|
||||
openHelp(helpdoc);
|
||||
}
|
||||
|
||||
function makeGeneralTab()
|
||||
{
|
||||
var theBundle = document.getElementById("pageinfobundle");
|
||||
@@ -352,16 +380,20 @@ function onFormSelect()
|
||||
}
|
||||
|
||||
var labels = form.getElementsByTagName("label");
|
||||
var llength = labels.length
|
||||
var llength = labels.length;
|
||||
|
||||
for (i = 0; i < llength; i++)
|
||||
{
|
||||
var whatfor = labels[i].getAttribute("for") || findFirstControl(labels[i]);
|
||||
var labeltext = getValueText(labels[i]);
|
||||
var whatfor = labels[i].hasAttribute("for") ?
|
||||
theDocument.getElementById(labels[i].getAttribute("for")) :
|
||||
findFirstControl(labels[i]);
|
||||
|
||||
for(var j = 0; j < length; j++)
|
||||
if (formfields[j] == whatfor || formfields[j].name == whatfor)
|
||||
fieldView.setCellText(j, "field-label", labeltext);
|
||||
if (whatfor && (whatfor.form == form)) {
|
||||
var labeltext = getValueText(labels[i]);
|
||||
for (var j = 0; j < length; j++)
|
||||
if (formfields[j] == whatfor)
|
||||
fieldView.setCellText(j, "field-label", labeltext);
|
||||
}
|
||||
}
|
||||
|
||||
fieldView.rowCountChanged(0, length);
|
||||
@@ -595,7 +627,15 @@ function grabAllMedia(aWindow, aDocument)
|
||||
}
|
||||
}
|
||||
|
||||
theList = theList.concat(aDocument.getElementsByTagName("embed"), aDocument.applets, aDocument.getElementsByTagName("object"));
|
||||
theList = theList.concat(aDocument.getElementsByTagName("embed"));
|
||||
theList = theList.concat(aDocument.getElementsByTagName("object"));
|
||||
|
||||
//XXX When Java is enabled, the DOM model for <APPLET> is broken. Bug #59686.
|
||||
// Also, some reports of a crash with Java in Media tab (bug 136535), and mixed
|
||||
// content from two hosts (bug 136539) so just drop applets from Page Info when
|
||||
// Java is on. For the 1.0.1 branch; get a real fix on the trunk.
|
||||
if (!navigator.javaEnabled())
|
||||
theList = theList.concat(aDocument.applets);
|
||||
|
||||
var inputList = aDocument.getElementsByTagName("input");
|
||||
var length = inputList.length
|
||||
@@ -757,25 +797,29 @@ function makePreview(item)
|
||||
var imageContainer = document.getElementById("theimagecontainer");
|
||||
var oldImage = document.getElementById("thepreviewimage");
|
||||
|
||||
var newImage = null;
|
||||
var nn = item.nodeName.toLowerCase();
|
||||
if (nn == "link" || nn == "input")
|
||||
{
|
||||
newImage = new Image();
|
||||
newImage.src = getAbsoluteURL(getSource(item), item);
|
||||
}
|
||||
else
|
||||
{
|
||||
newImage = item.cloneNode(true);
|
||||
newImage.src = ("src" in item && item.src) || ("href" in item && item.href); // weird funky hack, I know :P
|
||||
}
|
||||
|
||||
var regex = new RegExp("^(https?|ftp|file|gopher)://");
|
||||
var absoluteURL = getAbsoluteURL(getSource(item), item);
|
||||
var isProtocolAllowed = regex.test(absoluteURL);
|
||||
var newImage = new Image();
|
||||
newImage.setAttribute("id", "thepreviewimage");
|
||||
if ("width" in item && item.width)
|
||||
newImage.width = item.width;
|
||||
if ("height" in item && item.height)
|
||||
newImage.height = item.height;
|
||||
newImage.removeAttribute("align"); // just in case.
|
||||
if ((nn == "link" || nn == "input" || nn == "img") &&
|
||||
isProtocolAllowed)
|
||||
{
|
||||
newImage.src = absoluteURL;
|
||||
if ("width" in item && item.width)
|
||||
newImage.width = item.width;
|
||||
if ("height" in item && item.height)
|
||||
newImage.height = item.height;
|
||||
}
|
||||
else
|
||||
{
|
||||
// fallback image for protocols not allowed (e.g., data: or javascript:)
|
||||
// or elements not [yet] handled (e.g., object, embed). XXX blank??
|
||||
newImage.src = "resource:///res/loading-image.gif";
|
||||
newImage.width = 40;
|
||||
newImage.height = 40;
|
||||
}
|
||||
|
||||
imageContainer.removeChild(oldImage);
|
||||
imageContainer.appendChild(newImage);
|
||||
@@ -1015,3 +1059,4 @@ pageInfoTreeView.prototype = {
|
||||
performAction: function(action) { },
|
||||
performActionOnCell: function(action, row, column) { }
|
||||
};
|
||||
|
||||
|
||||
@@ -42,12 +42,13 @@
|
||||
windowtype="Browser:page-info"
|
||||
onload="onLoadPageInfo()"
|
||||
align="stretch" class="dialog"
|
||||
width="425" height="450"
|
||||
width="425" height="470"
|
||||
screenX="10" screenY="10"
|
||||
persist="screenX screenY width height sizemode">
|
||||
|
||||
<script type="application/x-javascript" src="chrome://communicator/content/contentAreaUtils.js"/>
|
||||
<script type="application/x-javascript" src="chrome://navigator/content/pageInfo.js"/>
|
||||
<script type="application/x-javascript" src="chrome://help/content/contextHelp.js"/>
|
||||
|
||||
<keyset>
|
||||
<key id="closeWindow" key="&closeWindow;" modifiers="accel" oncommand="window.close();"/>
|
||||
@@ -314,4 +315,8 @@
|
||||
<!-- Others added by overlay -->
|
||||
</tabpanels>
|
||||
</tabbox>
|
||||
<box>
|
||||
<spacer flex="1"/>
|
||||
<button label="&helpButton;" oncommand="doHelpButton();" />
|
||||
</box>
|
||||
</window>
|
||||
|
||||
@@ -12,6 +12,6 @@
|
||||
chrome:displayName="UNIX Bindings"
|
||||
chrome:author="mozilla.org"
|
||||
chrome:name="navigator-platform"
|
||||
chrome:localeVersion="1.0.0final">
|
||||
chrome:localeVersion="1.0.1rc1">
|
||||
</RDF:Description>
|
||||
</RDF:RDF>
|
||||
|
||||
@@ -307,7 +307,15 @@
|
||||
|
||||
<handlers>
|
||||
<handler event="popupshowing"><![CDATA[
|
||||
if (!this.mEnginesReady && this.defaultSearchEngine)
|
||||
// sync up with prefs about showing search in the URL bar if
|
||||
// the URL bar hasn't finished initializing the default engine info
|
||||
// -or-
|
||||
// the search sidebar tab was displayed already triggering a change
|
||||
// notification to the browser.search pref branch listener here which
|
||||
// calls updateEngines but doesn't cause the ``Search for ...''
|
||||
// display string to be updated
|
||||
if ( (!this.mEnginesReady && this.defaultSearchEngine) ||
|
||||
!("mShowSearch" in this) )
|
||||
this.updatePref("browser.urlbar.showSearch");
|
||||
|
||||
if (this.mShowSearch) {
|
||||
|
||||
@@ -12,6 +12,6 @@
|
||||
chrome:displayName="Windows Specific Resources"
|
||||
chrome:author="mozilla.org"
|
||||
chrome:name="navigator-platform"
|
||||
chrome:localeVersion="1.0.0final">
|
||||
chrome:localeVersion="1.0.1rc1">
|
||||
</RDF:Description>
|
||||
</RDF:RDF>
|
||||
|
||||
@@ -22,5 +22,5 @@
|
||||
<!-- Version Information. State that we work only with major version of this
|
||||
package. -->
|
||||
<RDF:Description about="urn:mozilla:locale:US:navigator-region"
|
||||
chrome:localeVersion="1.0.0final"/>
|
||||
chrome:localeVersion="1.0.1rc1"/>
|
||||
</RDF:RDF>
|
||||
|
||||
@@ -19,5 +19,5 @@
|
||||
<!-- Version Information. State that we work only with major version of this
|
||||
package. -->
|
||||
<RDF:Description about="urn:mozilla:locale:en-US:navigator"
|
||||
chrome:localeVersion="1.0.0final"/>
|
||||
chrome:localeVersion="1.0.1rc1"/>
|
||||
</RDF:RDF>
|
||||
|
||||
@@ -22,5 +22,5 @@
|
||||
<!-- Version Information. State that we work only with major version of this
|
||||
package. -->
|
||||
<RDF:Description about="urn:mozilla:locale:en-US:navigator-platform"
|
||||
chrome:localeVersion="1.0.0final"/>
|
||||
chrome:localeVersion="1.0.1rc1"/>
|
||||
</RDF:RDF>
|
||||
|
||||
@@ -41,6 +41,8 @@
|
||||
<!ENTITY navbarCmd.accesskey "N">
|
||||
<!ENTITY personalbarCmd.label "Personal Toolbar">
|
||||
<!ENTITY personalbarCmd.accesskey "p">
|
||||
<!ENTITY tabbarCmd.label "Tab Bar">
|
||||
<!ENTITY tabbarCmd.accesskey "T">
|
||||
<!ENTITY taskbarCmd.label "Status Bar">
|
||||
<!ENTITY taskbarCmd.accesskey "S">
|
||||
<!ENTITY componentbarCmd.label "Component Bar">
|
||||
@@ -140,11 +142,13 @@
|
||||
|
||||
<!ENTITY bookmarksMenu.label "Bookmarks">
|
||||
<!ENTITY bookmarksMenu.accesskey "B">
|
||||
<!ENTITY addCurPageCmd.label "Add to Bookmarks">
|
||||
<!ENTITY addCurPageCmd.label "Bookmark This Page">
|
||||
<!ENTITY addCurPageCmd.accesskey "B">
|
||||
<!ENTITY addCurPageCmd.commandkey "d">
|
||||
<!ENTITY addCurPageAsCmd.label "File Bookmark...">
|
||||
<!ENTITY addCurPageAsCmd.accesskey "f">
|
||||
<!ENTITY addCurPageAsCmd.accesskey "F">
|
||||
<!ENTITY addCurTabsAsCmd.label "Bookmark This Group of Tabs...">
|
||||
<!ENTITY addCurTabsAsCmd.accesskey "G">
|
||||
<!ENTITY manBookmarksCmd.label "Manage Bookmarks...">
|
||||
<!ENTITY manBookmarksCmd.accesskey "M">
|
||||
<!ENTITY manBookmarksCmd.commandkey "b">
|
||||
|
||||
@@ -26,7 +26,7 @@ intl.charsetmenu.browser.more4=armscii-8, geostd8, tis-620, ibm857, iso-8859-9,
|
||||
intl.charsetmenu.browser.more5=iso-8859-6, windows-1256, ibm864, x-mac-arabic, x-mac-farsi, iso-8859-8-i, windows-1255, iso-8859-8, ibm862, x-mac-hebrew
|
||||
intl.charset.default=ISO-8859-1
|
||||
intl.charset.detector=
|
||||
intl.charsetmenu.mailedit=ISO-8859-1, ISO-8859-15, ISO-8859-6, armscii-8, geostd8, ISO-8859-13, ISO-8859-14, ISO-8859-2, GB2312, Big5, KOI8-R, windows-1251, KOI8-U, ISO-8859-7, ISO-8859-8-I, ISO-2022-JP, EUC-KR, ISO-8859-10, ISO-8859-3, TIS-620, ISO-8859-9, UTF-8, VISCII
|
||||
intl.charsetmenu.mailedit=ISO-8859-1, ISO-8859-15, ISO-8859-6, armscii-8, geostd8, ISO-8859-13, ISO-8859-14, ISO-8859-2, GB2312, GB18030, Big5, KOI8-R, windows-1251, KOI8-U, ISO-8859-7, ISO-8859-8-I, ISO-2022-JP, EUC-KR, ISO-8859-10, ISO-8859-3, TIS-620, ISO-8859-9, UTF-8, VISCII
|
||||
# valid collation options are: <empty string> or useCodePointOrder
|
||||
intl.collationOption=
|
||||
wallet.TutorialFromMenu=chrome://communicator/locale/wallet/privacy.html
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
|
||||
<!ENTITY title "Page Info">
|
||||
<!ENTITY description "Information about the current page">
|
||||
<!ENTITY helpButton "Help">
|
||||
|
||||
<!ENTITY unknown "Unknown">
|
||||
<!ENTITY closeWindow "w">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!ENTITY exitWarningMsg.label "Quick Launch is active, so &brandShortName; remains in memory and can be started again quickly. To completely exit, right click on the &brandShortName; icon in the system tray and select Exit.">
|
||||
<!ENTITY exitWarningMsg.label "Quick Launch is active, so &brandShortName; remains in memory and can be started again quickly. To completely exit, right click on the &brandShortName; icon in the system tray and select Exit &brandShortName;.">
|
||||
<!ENTITY exitWarningTitle.label "Quick Launch">
|
||||
<!ENTITY exitWarningCheckbox.label "Don't show me this message again">
|
||||
<!ENTITY exitWarningCheckbox.accesskey "D">
|
||||
|
||||
@@ -22,5 +22,5 @@
|
||||
<!-- Version Information. State that we work only with major version of this
|
||||
package. -->
|
||||
<RDF:Description about="urn:mozilla:locale:en-US:navigator-platform"
|
||||
chrome:localeVersion="1.0.0final"/>
|
||||
chrome:localeVersion="1.0.1rc1"/>
|
||||
</RDF:RDF>
|
||||
|
||||
@@ -22,5 +22,5 @@
|
||||
<!-- Version Information. State that we work only with major version of this
|
||||
package. -->
|
||||
<RDF:Description about="urn:mozilla:locale:en-US:navigator-platform"
|
||||
chrome:localeVersion="1.0.0final"/>
|
||||
chrome:localeVersion="1.0.1rc1"/>
|
||||
</RDF:RDF>
|
||||
|
||||