43189 - autocomplete, r=matt, sr=alecf

This commit is contained in:
hewitt%netscape.com 2001-04-30 18:37:04 +00:00
Родитель 2a29bb785f
Коммит 29b4473e34
38 изменённых файлов: 2944 добавлений и 1448 удалений

Просмотреть файл

@ -75,15 +75,12 @@ Rights Reserved.
<treeitem>
<treerow>
<treecell allowevents="true">
<textbox id="address#1"
flex="100%"
onkeypress="handleKeyPress(this, event);"
onclick="awNotAnEmptyArea(event);"
autocomplete="true"
timeout="300"
searchSessionType="addrbook"
/>
</treecell>
<textbox id="address#1" flex="1"
type="autocomplete" searchSessions="addrbook"
timeout="300" autoFill="true"
onkeypress="handleKeyPress(this, event);"
onclick="awNotAnEmptyArea(event);"/>
</treecell>
</treerow>
</treeitem>
</treechildren>

Просмотреть файл

@ -722,12 +722,15 @@ function awSetAutoComplete(rowNumber)
_awSetAutoComplete(selectElem, inputElem)
}
function awRecipientTextCommand(userAction, element)
{
if (userAction == "typing" || userAction == "scrolling")
awReturnHit(element);
}
function awRecipientKeyPress(event, element)
{
switch(event.keyCode) {
case 13:
awReturnHit(element);
break;
case 9:
awTabFromRecipient(element, event);
break;
@ -742,7 +745,7 @@ function awRecipientKeyDown(event, element)
/* do not query directly the value of the text field else the autocomplete widget could potentially
alter it value while doing some internal cleanup, instead, query the value through the first child
*/
if (!document.getAnonymousNodes(element)[0].firstChild.value)
if (!element.value)
awDeleteHit(element);
event.preventBubble(); //We need to stop the event else the tree will receive it and the function
//awKeyDown will be executed!

Просмотреть файл

@ -58,14 +58,14 @@ Rights Reserved.
</menulist>
</treecell>
<treecell class="treecell-addressingWidget" autostretch="never">
<image onclick="awNotAnEmptyArea(event)" class="person-icon"/>
<textbox id="msgRecipient#1" flex="1"
class="plain textbox-addressingWidget"
style="width:0px;" allowevents="true"
onkeypress="awRecipientKeyPress(event, this)"
onkeydown="awRecipientKeyDown(event, this)"
autocomplete="true" timeout="300"
searchSessionType="addrbook" displayMenu="true"/>
<textbox id="msgRecipient#1" class="plain textbox-addressingWidget"
type="autocomplete" allowevents="true" flex="1"
searchSessions="addrbook" timeout="300" maxrows="4" autoFill="true"
ontextcommand="awRecipientTextCommand(userAction, this)"
onkeypress="awRecipientKeyPress(event, this)"
onkeydown="awRecipientKeyDown(event, this)">
<image onclick="awNotAnEmptyArea(event)" class="person-icon"/>
</textbox>
</treecell>
</treerow>
</treeitem>

Просмотреть файл

Просмотреть файл

@ -0,0 +1,77 @@
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to HTML */
/* ::::: autocomplete ::::: */
textbox[type="autocomplete"]
{
cursor : default !important;
}
.textbox-input
{
cursor : text;
}
.autocomplete-internal-box
{
padding : 0px !important;
}
.autocomplete-textbox-container
{
padding : 1px 2px 1px 2px;
}
/* ::::: history button ::::: */
.autocomplete-history-button
{
border : 1px outset #CCCCCC;
padding : 1px 2px;
background-color : #CCCCCC;
list-style-image : url("chrome://global/skin/arrow-dn.gif");
}
.autocomplete-history-button[open="true"]
{
border : 1px solid #888888;
padding : 2px 1px 0px 3px;
}
/* ::::: autocomplete popups ::::: */
.autocomplete-history-popup,
.autocomplete-result-popup
{
border : 1px solid #333333 !important;
background-color : -moz-field !important;
}
.autocomplete-history-popup,
{
max-height : 180px;
}
/* ::::: outliner ::::: */
.autocomplete-outliner
{
background-color : transparent !important;
}
.autocomplete-outlinercol
{
margin : 0px !important;
border : none !important;
padding : 0px !important;
}
.autocomplete-outlinerbody:-moz-outliner-row(menuactive)
{
background-color : Highlight;
}
.autocomplete-outlinerbody:-moz-outliner-cell-text(menuactive)
{
color : HighlightText !important;
}

Просмотреть файл

@ -1,5 +1,6 @@
classic.jar:
skin/classic/global/contents.rdf
skin/classic/global/autocomplete.css
skin/classic/global/box.css
skin/classic/global/button.css
skin/classic/global/checkbox.css
@ -30,6 +31,7 @@ classic.jar:
skin/classic/global/arrow-med-up-hover.gif
skin/classic/global/arrow-med-down.gif
skin/classic/global/arrow-med-down-hover.gif
skin/classic/global/arrow-dn.gif
skin/classic/global/button-def-disabled-left.gif
skin/classic/global/button-def-disabled-middle.gif
skin/classic/global/button-def-disabled-right.gif

Просмотреть файл

@ -278,3 +278,12 @@ autorepeatbutton > .autorepeatbutton-down {
autorepeatbutton:hover > .autorepeatbutton-down {
list-style-image: url("chrome://global/skin/arrow-med-down-hover.gif")
}
/* ::::: autocomplete menuitems ::::: */
.autocomplete-history-popup > menuitem
{
max-width : none !important;
font : message-box;
}

Просмотреть файл

@ -1,88 +0,0 @@
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to HTML */
@namespace html url("http://www.w3.org/1999/xhtml"); /* namespace for XUL elements */
/** generic text fields (in dialogs)
**/
/* outer frame */
textbox
{
border : 1px inset ThreeDLightShadow;
font : inherit;
color : WindowText;
padding : 0px;
margin : 1px 3px 2px 4px;
background-color : -moz-field;
-moz-border-radius : 3px 2px 2px 3px;
cursor : text;
}
textbox[readonly="true"]
{
background-color : -moz-field;
}
textbox[focused="true"]
{
border : 2px solid -moz-mac-focusring;
margin : 0px 2px 1px 3px;
}
textbox[focused="true"][readonly="true"]
{
border : 1px inset #CCCCCC;
margin : 1px 3px 2px 4px;
}
/* internal frame */
.textbox-internal-box
{
margin : 0px;
padding : 1px 2px 1px 2px;
cursor : text;
border : 1px solid ActiveBorder;
background-color : inherit;
color : inherit;
}
textbox[disabled="true"] > .textbox-internal-box
{
border : 1px solid ThreeDShadow;
}
.textarea-internal-box
{
padding : 0px 0px 0px 2px;
}
/* internal text widget */
.textbox-input, .textbox-textarea
{
border : none !important;
margin : 0px;
padding : 0px;
font : inherit;
background-color : inherit;
color : inherit;
}
textbox[disabled="true"]
{
cursor : default ! important;
}
/** plain atomic textboxs, class="plain" **/
textbox.plain,
textbox.plain > .textbox-internal-box,
textbox.plain > .textarea-internal-box
{
padding : 0px !important;
margin : 0px !important;
border : none !important;
}
/* autocomplete text field */
.textbox-popup > menuitem
{
max-width : none !important;
}

Просмотреть файл

@ -0,0 +1,94 @@
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to HTML */
/* ::::: autocomplete ::::: */
textbox[type="autocomplete"]
{
cursor : default !important;
}
.textbox-input
{
cursor : text;
}
.autocomplete-internal-box
{
padding : 0px !important;
}
.autocomplete-textbox-container
{
padding : 1px 2px 1px 2px;
}
/* ::::: history button ::::: */
.autocomplete-history-button
{
-moz-binding : url("chrome://global/skin/classicBindings.xml#autocomplete-history-button");
border-top : 1px solid -moz-Dialog;
border-right : 1px solid ThreeDDarkShadow;
border-bottom : 1px solid ThreeDDarkShadow;
border-left : 1px solid ThreeDFace;
background-color : ThreeDFace;
list-style-image : url("chrome://global/skin/scroll-down.gif");
}
.autocomplete-history-button > .autocomplete-history-button-internal-box
{
border-top : 1px solid ThreeDHighlight;
border-right : 1px solid ThreeDShadow;
border-bottom : 1px solid ThreeDShadow;
border-left : 1px solid ThreeDHighlight;
padding : 1px;
}
.autocomplete-history-button[open="true"]
{
border : 1px solid ThreeDDarkShadow;
}
.autocomplete-history-button[open="true"] > .autocomplete-history-button-internal-box
{
border : 1px solid ThreeDFace;
padding : 2px 0px 0px 2px;
}
/* ::::: autocomplete popups ::::: */
.autocomplete-result-popup,
.autocomplete-history-popup
{
border : 1px solid ThreeDDarkShadow !important;
background-color : -moz-Field !important;
}
.autocomplete-history-popup
{
max-height : 180px;
}
/* ::::: outliner ::::: */
.autocomplete-outliner
{
background-color : transparent !important;
}
.autocomplete-outlinercol
{
margin : 0px !important;
border : none !important;
padding : 0px !important;
}
.autocomplete-outlinerbody:-moz-outliner-row(menuactive)
{
background-color : Highlight;
}
.autocomplete-outlinerbody:-moz-outliner-cell-text(menuactive)
{
color : HighlightText !important;
}

Просмотреть файл

@ -173,6 +173,18 @@
</content>
</binding>
<binding id="autostretch-never" extends="xul:box">
<content autostretch="never"/>
</binding>
<binding id="autocomplete-history-button" extends="xul:box">
<content>
<xul:box class="autocomplete-history-button-internal-box" autostretch="never">
<children/>
</xul:box>
</content>
</binding>
<!--
<binding id="throbber" extends="xul:box">
<content autostretch="never">

Просмотреть файл

@ -1,6 +1,7 @@
classic.jar:
skin/classic/global/contents.rdf
skin/classic/global/preview.png (../../preview/win/preview.png)
skin/classic/global/autocomplete.css
skin/classic/global/box.css
skin/classic/global/button.css
skin/classic/global/checkbox.css

Просмотреть файл

@ -265,3 +265,10 @@ autorepeatbutton:hover
padding : 2px 1px 1px 2px;
}
/* ::::: autocomplete menuitems ::::: */
.autocomplete-history-popup > menuitem
{
max-width : none !important;
font-size : smaller;
}

Просмотреть файл

@ -1,69 +0,0 @@
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to HTML */
@namespace html url("http://www.w3.org/1999/xhtml"); /* namespace for XUL elements */
/** generic text fields (in dialogs)
**/
/* outer frame */
textbox
{
margin : 1px 5px 2px 5px;
border-top : 1px solid ThreeDShadow;
border-right : 1px solid ThreeDHighlight;
border-bottom : 1px solid ThreeDHighlight;
border-left : 1px solid ThreeDShadow;
padding : 0px;
background-color : -moz-Field;
color : -moz-FieldText;
cursor : text;
}
textbox[readonly="true"]
{
background-color : -moz-Dialog;
}
/* internal frame */
.textbox-internal-box, .textarea-internal-box
{
margin : 0px;
padding : 1px 2px 1px 2px;
border-left : 1px solid ThreeDDarkShadow;
border-top : 1px solid ThreeDDarkShadow;
border-right : 1px solid ThreeDFace;
border-bottom : 1px solid ThreeDFace;
}
/* internal text widget */
.textbox-input, .textbox-textarea
{
border : none !important;
margin : 0px;
padding : 0px;
font : inherit;
background-color : inherit;
color : inherit;
}
textbox[disabled="true"]
{
cursor : default !important;
background-color : -moz-Dialog;
color : GrayText;
}
/** plain atomic textboxs, class="plain" **/
textbox.plain,
textbox.plain > .textbox-internal-box,
textbox.plain > .textarea-internal-box
{
padding : 0px !important;
margin : 0px !important;
border : none !important;
}
/* autocomplete text field */
.textbox-popup > menuitem
{
max-width : none !important;
}

Просмотреть файл

@ -1,6 +1,7 @@
/** Contains style definitions for the navigator application
**/
@import url(chrome://navigator/content/navigator.css);
@import url(chrome://communicator/skin/);
@import url(chrome://navigator/skin/personalToolbar.css);
@import url(chrome://communicator/skin/sidebar/sidebar.css);
@ -15,66 +16,11 @@
/** placeholder style ***/
}
#ubhist
{
margin : 0px;
background-color : #DDDDDD;
list-style-image : url("chrome://global/skin/scroll-down.gif");
}
#ubhist-popup > menuitem
{
max-width : 550px !important;
}
#ubhist > .menubutton-icon-internal-box
{
border-left : 1px solid #FFFFFF;
border-top : 1px solid #FFFFFF;
border-right : 1px solid #9D9D9D;
border-bottom : 1px solid #9D9D9D;
}
#ubhist:hover:active > .menubutton-icon-internal-box,
#ubhist[open="true"] > .menubutton-icon-internal-box
{
border : 1px solid #000000;
}
#urlbar-container
{
padding : 3px 2px 2px 3px;
padding : 0px 0px 0px 3px;
}
/*
* Rules for 'hiding' portions of the chrome for special
* kinds of browser windows.
*/
window[chromehidden~="menubar"] .chromeclass-menubar {
display: none;
}
window[chromehidden~="toolbar"] .chromeclass-toolbar {
display: none;
}
window[chromehidden~="location"] .chromeclass-location {
display: none;
}
window[chromehidden~="directories"] .chromeclass-directories {
display: none;
}
window[chromehidden~="status"] .chromeclass-status {
display: none;
}
window[chromehidden~="extrachrome"] .chromeclass-extrachrome {
display: none;
}
/*
* Images for the main buttons
*/
@ -195,6 +141,11 @@ window[chromehidden~="extrachrome"] .chromeclass-extrachrome {
list-style-image : url("chrome://communicator/skin/bookmarks/location-clicked.gif");
}
#page-proxy-button[pageproxystate="invalid"]
{
cursor : default;
}
#ubhist-keyword-popup, #ubhist-keyword-popup:hover, #ubhist-keyword-popup:hover:active
{
-moz-binding : url("chrome://global/skin/classicBindings.xml#menubutton-icon-nostretch") !important;
@ -257,3 +208,43 @@ window[chromehidden~="extrachrome"] .chromeclass-extrachrome {
{
list-style-image : url("chrome://global/skin/print-hover-active.gif");
}
/* ::::: urlbar autocomplete widget ::::: */
.autocomplete-outlinerbody:-moz-outliner-cell-text(value)
{
padding-left : 15px;
}
.autocomplete-outlinerbody:-moz-outliner-cell-text(comment)
{
font-style : italic;
}
.autocomplete-search-box
{
border-top : 2px groove #CCCCCC;
background-color : #CCCCCC;
color : #000000;
}
.autocomplete-result-popup[nomatch="true"] > .autocomplete-search-box
{
border-top : 1px solid #FFFFFF;
}
.autocomplete-search-engine
{
padding : 2px;
}
.autocomplete-search-engine[menuactive="true"]
{
background-color : Highlight;
color : HighlightText;
}
.autocomplete-search-engine-img
{
margin-right : 4px;
}

Просмотреть файл

@ -1,6 +1,7 @@
/** Contains style definitions for the navigator application
**/
@import url(chrome://navigator/content/navigator.css);
@import url(chrome://communicator/skin/);
@import url(chrome://navigator/skin/personalToolbar.css);
@import url(chrome://communicator/skin/sidebar/sidebar.css);
@ -19,38 +20,6 @@
border-right : 1px solid ThreeDHighlight;
}
#ubhist
{
margin : 0px;
background-color : -moz-Dialog;
list-style-image : url("chrome://global/skin/scroll-down.gif");
}
#ubhist-popup > menuitem
{
max-width : 550px !important;
}
#ubhist > .menubutton-icon-internal-box
{
border-left : 1px solid ThreeDHighlight;
border-top : 1px solid ThreeDHighlight;
border-right : 1px solid ThreeDShadow;
border-bottom : 1px solid ThreeDShadow;
}
#ubhist:hover:active > .menubutton-icon-internal-box,
#ubhist[open="true"] > .menubutton-icon-internal-box
{
border : 1px solid ThreeDShadow;
}
#urlbar-container
{
padding : 3px 2px 2px 3px;
}
#nav-bar-inner
{
min-width : 0px;
@ -63,34 +32,6 @@
list-style-image : url("chrome://communicator/skin/bookmarks/bookmark-folder-button.gif");
}
/*
* Rules for 'hiding' portions of the chrome for special
* kinds of browser windows.
*/
window[chromehidden~="menubar"] .chromeclass-menubar {
display: none;
}
window[chromehidden~="toolbar"] .chromeclass-toolbar {
display: none;
}
window[chromehidden~="location"] .chromeclass-location {
display: none;
}
window[chromehidden~="directories"] .chromeclass-directories {
display: none;
}
window[chromehidden~="status"] .chromeclass-status {
display: none;
}
window[chromehidden~="extrachrome"] .chromeclass-extrachrome {
display: none;
}
/*
* Images for the main buttons
*/
@ -194,11 +135,11 @@ window[chromehidden~="extrachrome"] .chromeclass-extrachrome {
}
/*all the urlbar stuff*/
#page-proxy-button
#page-proxy-button
{
list-style-image : url("chrome://communicator/skin/bookmarks/location.gif");
cursor : grab;
margin : 0px 2px 0px 0px;
margin : 2px 4px 2px 2px;
}
#page-proxy-button:hover
@ -211,6 +152,11 @@ window[chromehidden~="extrachrome"] .chromeclass-extrachrome {
list-style-image : url("chrome://communicator/skin/bookmarks/location-clicked.gif");
}
#page-proxy-button[pageproxystate="invalid"]
{
cursor : default;
}
#ubhist-keyword-popup
{
margin : 0px 4px 0px 0px;
@ -226,10 +172,11 @@ window[chromehidden~="extrachrome"] .chromeclass-extrachrome {
#nav-bar-inner
{
min-width : 0px;
margin : 8px 0px 8px 6px;
-moz-binding : url("chrome://global/skin/classicBindings.xml#autostretch-never");
min-width : 0px;
margin : 8px 0px 8px 6px;
}
#search-button
{
list-style-image : url("chrome://communicator/skin/search.gif");
@ -279,3 +226,58 @@ window[chromehidden~="extrachrome"] .chromeclass-extrachrome {
list-style-image : url("chrome://global/skin/print-hover-active.gif");
}
/* ::::: urlbar autocomplete widget ::::: */
.autocomplete-outlinerbody:-moz-outliner-cell-text(value)
{
padding-left : 15px;
}
.autocomplete-outlinerbody:-moz-outliner-cell-text(comment)
{
font-style : italic;
}
.autocomplete-history-button
{
border : 1px outset -moz-Dialog;
}
.autocomplete-history-button[open="true"]
{
border : 1px solid ThreeDShadow;
}
.autocomplete-history-button-internal-box,
.autocomplete-history-button[open="true"] > .autocomplete-history-button-internal-box
{
border : none;
}
.autocomplete-search-box
{
border-top : 2px groove -moz-Dialog;
background-color : -moz-Dialog;
color : ButtonText;
}
.autocomplete-result-popup[nomatch="true"] > .autocomplete-search-box
{
border-top : 1px solid ThreeDHighlight;
}
.autocomplete-search-engine
{
padding : 2px;
}
.autocomplete-search-engine[menuactive="true"]
{
background-color : Highlight;
color : HighlightText;
}
.autocomplete-search-engine-img
{
margin-right : 4px;
}

Просмотреть файл

@ -0,0 +1,89 @@
/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998-2001 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Joe Hewitt (hewitt@netscape.com)
*/
/* ===== autocomplete.css =================================================
== Styles used by the autocomplete widget.
======================================================================= */
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* ::::: autocomplete ::::: */
textbox[type="autocomplete"] {
cursor: default !important;
}
.textbox-input {
cursor: text;
margin: 0px;
border: none;
padding: 0px;
background-color: inherit;
color: inherit;
font: inherit;
}
/* ::::: history button ::::: */
.autocomplete-history-button {
-moz-binding: url("chrome://global/skin/globalBindings.xml#autostretch-never");
margin: 1px 3px 3px 0px;
list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif");
vertical-align: middle;
}
.autocomplete-history-button[open="true"] {
margin: 2px 2px 2px 1px;
}
/* ::::: popups ::::: */
.autocomplete-history-popup,
.autocomplete-result-popup {
border: 1px solid #6B747E;
background-color: #E9F5FF !important;
}
.autocomplete-history-popup {
max-height: 180px;
}
/* ::::: outliner ::::: */
.autocomplete-outliner {
background-color: transparent !important;
}
.autocomplete-outlinercol {
margin: 0px !important;
border: none !important;
padding: 0px !important;
}
.autocomplete-outlinerbody:-moz-outliner-row(menuactive) {
background-color: #486380;
}
.autocomplete-outlinerbody:-moz-outliner-cell-text(menuactive) {
color: #FFFFFF !important;
}

Просмотреть файл

@ -1,292 +0,0 @@
/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998-2001 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Joe Hewitt (hewitt@netscape.com)
*/
/* ===== menu.css =======================================================
== Styles used by XUL menu-related elements.
======================================================================= */
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* ::::: menubar ::::: */
menubar {
min-width: 1px; /* DON'T DELETE!
Removes disappearance of scrollbars in content pane when window
is made smaller. Talk to evaughan@netscape.com for details. */
background-color: #B4C3D4;
border-top: 1px solid #82929C;
border-bottom: 1px solid #000000;
}
menubar > .toolbar-holder {
border-left: 1px solid #D6E7FF;
}
/* ::::: menubar grippy ::::: */
menubar > toolbargrippy {
background-image: url("chrome://global/skin/menu/grip-mbar-mid.gif");
}
menubar > toolbargrippy > .toolbargrippy-top {
background-image: url("chrome://global/skin/menu/grip-mbar-top.gif");
}
menubar > toolbargrippy > .toolbargrippy-btm {
background-image: url("chrome://global/skin/menu/grip-mbar-btm.gif");
}
menubar > toolbargrippy:hover:active {
background-image: url("chrome://global/skin/menu/grip-mbar-mid-act.gif");
}
menubar > toolbargrippy:hover:active > .toolbargrippy-top {
background-image: url("chrome://global/skin/menu/grip-mbar-top-act.gif");
}
menubar > toolbargrippy:hover:active > .toolbargrippy-btm {
background-image: url("chrome://global/skin/menu/grip-mbar-btm-act.gif");
}
/* ::::: popup/menupopup ::::: */
popup,
menupopup {
cursor: default;
background-color: #B4C3D4;
border: 1px solid #5B7693;
border-right: 1px solid #394B6E;
border-bottom: 1px solid #394B6E;
}
.popup-internal-box {
border: 1px outset #B4C3D4;
}
/* ::::: menu/menuitem ::::: */
menu,
menuitem {
color: #17222E;
font: menu;
list-style-image: none;
vertical-align: middle;
}
menuitem {
cursor: default !important;
}
menuitem[default="true"] {
font-weight: bold;
}
menu[disabled="true"],
menuitem[disabled="true"],
menu[disabled="true"][menuactive="true"],
menuitem[disabled="true"][menuactive="true"] {
color: #838E9B;
}
/* ..... internal content .... */
.menu-iconic-left {
margin: 0px 2px 0px 0px;
width: 16px;
color: inherit;
list-style-image: inherit;
text-align: center;
}
.menu-accel,
.menu-iconic-accel {
margin-left: 4px;
padding-right: 14px;
}
.menu-text {
padding-left: 18px;
font-weight: inherit;
}
.menu-iconic-text {
margin: 0px 2px 0px 0px;
}
.menu-iconic-text,
.menu-iconic-accel,
.menu-text,
.menu-accel {
color: inherit;
}
/* ..... menu arrow box ..... */
.menu-right {
margin: 0px 0px 0px 6px;
width: 8px;
list-style-image: url("chrome://global/skin/menu/menu-arrow.gif");
text-align: center;
}
.menu-right[menuactive="true"] {
list-style-image: url("chrome://global/skin/menu/menu-arrow-hov.gif");
}
.menu-right[disabled="true"],
.menu-right[menuactive="true"][disabled="true"] {
list-style-image: url("chrome://global/skin/menu/menu-arrow-dis.gif");
}
/* ::::: menu/menuitems in menubar ::::: */
menubar > menu {
border: 1px solid #B4C3D4;
padding: 1px 3px 2px 3px;
margin: 1px 0px 1px 0px;
}
menubar > menu[menuactive="true"] {
border: 1px outset #B4C3D4;
}
menubar > menu[menuactive="true"][open="true"] {
border: 1px inset #B4C3D4;
border-bottom: none;
}
/* ..... internal content .... */
.menubar-left {
margin: 0px 2px 0px 0px;
color: inherit;
}
.menubar-text {
margin-right: 2px;
color: inherit;
}
/* ::::: menu/menuitems in popup ::::: */
menupopup > menu,
popup > menu,
menupopup > menuitem,
popup > menuitem {
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
margin-left: 0px;
padding: 2px;
min-width: 0em;
max-width: 42em;
}
menupopup > menu[menuactive="true"],
menupopup > menuitem[menuactive="true"],
popup > menu[menuactive="true"],
popup > menuitem[menuactive="true"] {
background-color: #486380;
color: #FFFFFF;
}
/* ::::: menuseparator ::::: */
menuseparator {
cursor: default;
margin: 2px 3px;
border-top: 1px solid #7A8490;
border-bottom: 1px solid #FEFEFE;
}
/* ::::: checkbox menuitem ::::: */
menuitem[checked="true"] {
list-style-image: url("chrome://global/skin/menu/menu-check.gif");
}
menuitem[checked="true"][disabled="true"] {
list-style-image: url("chrome://global/skin/menu/menu-check-dis.gif");
}
menuitem[checked="true"][menuactive="true"] {
list-style-image: url("chrome://global/skin/menu/menu-check-hov.gif");
}
/* ::::: radio menuitem ::::: */
menuitem[checked="true"][type="radio"] {
list-style-image: url("chrome://global/skin/menu/menu-radio.gif");
}
menuitem[checked="true"][type="radio"][disabled="true"] {
list-style-image: url("chrome://global/skin/menu/menu-radio-dis.gif");
}
menuitem[checked="true"][type="radio"][menuactive="true"] {
list-style-image: url("chrome://global/skin/menu/menu-radio-hov.gif");
}
/* ::::: tooltip ::::: */
.tooltip {
border: 1px solid #000000;
padding: 2px 3px 2px 3px;
background-color: #FFFFE7;
color: #000000;
}
.tooltip > .popup-internal-box {
border: none;
}
.tooltip-label {
margin: 0px;
}
/* ::::: auto-repeat button ::::: */
autorepeatbutton {
margin: 1px 2px 2px 1px;
border: 1px solid transparent;
padding: 3px;
height: 1em;
text-align: center;
vertical-align: middle;
}
autorepeatbutton:hover {
margin: 1px;
border: 1px inset #A5B2C2;
padding: 4px 3px 3px 4px;
background-color: #A5B2C2;
}
.autorepeatbutton-up {
list-style-image: url("chrome://global/skin/arrow/arrow-up.gif")
}
.autorepeatbutton-down {
list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif")
}

Просмотреть файл

@ -1,127 +0,0 @@
/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998-2001 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Joe Hewitt (hewitt@netscape.com)
*/
/* ===== textfield.css ==================================================
== Styles used by the XUL textbox element.
======================================================================= */
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* ::::: textbox ::::: */
textbox {
cursor: text;
margin: 2px 4px;
background-color: #FFFFFF;
color: #000000;
font: inherit;
}
textbox,
textbox[readonly="true"][focused="true"] {
border-top: 1px solid #A8B5C6;
border-right: 1px solid #E2E8F0;
border-bottom: 1px solid #E2E8F0;
border-left: 1px solid #A8B5C6;
}
.textbox-internal-box,
.textarea-internal-box {
padding: 1px 0px 1px 2px;
}
.textbox-internal-box,
.textarea-internal-box,
textbox[readonly="true"][focused="true"] > .textbox-internal-box,
textbox[readonly="true"][focused="true"] > .textarea-internal-box {
border: 1px solid #757C8A;
}
.textbox-input,
.textbox-textarea {
margin: 0px !important;
border: none !important;
padding: 0px !important;
background-color: inherit;
color: inherit;
font: inherit;
}
/* ..... readonly state ..... */
textbox[readonly="true"] {
background-color: #B4C3D4;
}
/* ..... focused state ..... */
textbox[focused="true"] {
border: 1px solid #96A7BD;
}
textbox[focused="true"] > .textbox-internal-box,
textbox[focused="true"] > .textarea-internal-box {
border-color: #000000;
}
/* ..... disabled state ..... */
textbox[disabled="true"] > .textbox-internal-box {
background-color: #B4C3D4;
}
textbox[disabled="true"] {
cursor: default !important;
color: #85959E;
}
/* ::::: plain textbox ::::: */
textbox.plain,
textbox.plain > .textbox-internal-box,
textbox.plain > .textarea-internal-box {
margin: 0px !important;
border: none !important;
padding: 0px !important;
}
/* ::::: scrollable textbox ::::: */
.scrollfield {
margin: 1px 0px 0px 0px;
border: none !important;
background: inherit;
}
.scrollfield > .textbox-internal-box,
.scrollfield > .textarea-internal-box {
margin: 0px !important;
border: none !important;
padding: 0px !important;
}
/* ::::: autocomplete text field ::::: */
.textbox-popup > menuitem {
max-width: none !important;
}

Просмотреть файл

@ -1,4 +1,5 @@
modern.jar:
skin/modern/README
skin/modern/communicator/brand.css (communicator/brand.css)
skin/modern/communicator/button.css (communicator/button.css)
skin/modern/communicator/communicator.css (communicator/communicator.css)
@ -21,11 +22,9 @@ modern.jar:
skin/modern/communicator/bookmarks/location.gif (communicator/bookmarks/location.gif)
skin/modern/communicator/brand/brandBindings.xml (communicator/brand/brandBindings.xml)
skin/modern/communicator/brand/throbber-anim.gif (communicator/brand/throbber-anim.gif)
skin/modern/communicator/brand/throbber-groove-btm.gif (communicator/brand/throbber-groove-btm.gif)
skin/modern/communicator/brand/throbber-groove-lft.gif (communicator/brand/throbber-groove-lft.gif)
skin/modern/communicator/brand/throbber-groove-rit.gif (communicator/brand/throbber-groove-rit.gif)
skin/modern/communicator/brand/throbber-groove-top.gif (communicator/brand/throbber-groove-top.gif)
skin/modern/communicator/brand/throbber-single.gif (communicator/brand/throbber-single.gif)
skin/modern/communicator/brand/throbber25-anim.gif (communicator/brand/throbber25-anim.gif)
skin/modern/communicator/brand/throbber25-single.gif (communicator/brand/throbber25-single.gif)
skin/modern/communicator/btn1/print-act.gif (communicator/btn1/print-act.gif)
skin/modern/communicator/btn1/print-dis.gif (communicator/btn1/print-dis.gif)
skin/modern/communicator/btn1/print-hov.gif (communicator/btn1/print-hov.gif)
@ -62,25 +61,30 @@ modern.jar:
skin/modern/communicator/sidebar/customize.css (communicator/sidebar/customize.css)
skin/modern/communicator/sidebar/preview.css (communicator/sidebar/preview.css)
skin/modern/communicator/sidebar/sbpicker-arrow.gif (communicator/sidebar/sbpicker-arrow.gif)
skin/modern/communicator/sidebar/sbtab-dark.gif (communicator/sidebar/sbtab-dark.gif)
skin/modern/communicator/sidebar/sbtab-dod-lft.gif (communicator/sidebar/sbtab-dod-lft.gif)
skin/modern/communicator/sidebar/sbtab-dod-lftcap-act.gif (communicator/sidebar/sbtab-dod-lftcap-act.gif)
skin/modern/communicator/sidebar/sbtab-dod-lftcap.gif (communicator/sidebar/sbtab-dod-lftcap.gif)
skin/modern/communicator/sidebar/sbtab-dod-mid-act.gif (communicator/sidebar/sbtab-dod-mid-act.gif)
skin/modern/communicator/sidebar/sbtab-dod-mid.gif (communicator/sidebar/sbtab-dod-mid.gif)
skin/modern/communicator/sidebar/sbtab-dod-rit.gif (communicator/sidebar/sbtab-dod-rit.gif)
skin/modern/communicator/sidebar/sbtab-dol-lft.gif (communicator/sidebar/sbtab-dol-lft.gif)
skin/modern/communicator/sidebar/sbtab-dod-ritcap-act.gif (communicator/sidebar/sbtab-dod-ritcap-act.gif)
skin/modern/communicator/sidebar/sbtab-dod-ritcap.gif (communicator/sidebar/sbtab-dod-ritcap.gif)
skin/modern/communicator/sidebar/sbtab-dol-lftcap-act.gif (communicator/sidebar/sbtab-dol-lftcap-act.gif)
skin/modern/communicator/sidebar/sbtab-dol-lftcap.gif (communicator/sidebar/sbtab-dol-lftcap.gif)
skin/modern/communicator/sidebar/sbtab-dol-mid-act.gif (communicator/sidebar/sbtab-dol-mid-act.gif)
skin/modern/communicator/sidebar/sbtab-dol-mid.gif (communicator/sidebar/sbtab-dol-mid.gif)
skin/modern/communicator/sidebar/sbtab-dol-rit.gif (communicator/sidebar/sbtab-dol-rit.gif)
skin/modern/communicator/sidebar/sbtab-light.gif (communicator/sidebar/sbtab-light.gif)
skin/modern/communicator/sidebar/sbtab-lod-lft.gif (communicator/sidebar/sbtab-lod-lft.gif)
skin/modern/communicator/sidebar/sbtab-dol-ritcap-act.gif (communicator/sidebar/sbtab-dol-ritcap-act.gif)
skin/modern/communicator/sidebar/sbtab-dol-ritcap.gif (communicator/sidebar/sbtab-dol-ritcap.gif)
skin/modern/communicator/sidebar/sbtab-lod-lftcap.gif (communicator/sidebar/sbtab-lod-lftcap.gif)
skin/modern/communicator/sidebar/sbtab-lod-mid.gif (communicator/sidebar/sbtab-lod-mid.gif)
skin/modern/communicator/sidebar/sbtab-lod-rit.gif (communicator/sidebar/sbtab-lod-rit.gif)
skin/modern/communicator/sidebar/sbtab-lod-ritcap.gif (communicator/sidebar/sbtab-lod-ritcap.gif)
skin/modern/communicator/sidebar/sidebar.css (communicator/sidebar/sidebar.css)
skin/modern/communicator/sidebar/sidebarBindings.xml (communicator/sidebar/sidebarBindings.xml)
skin/modern/communicator/taskbar/addressbook-act.gif (communicator/taskbar/addressbook-act.gif)
skin/modern/communicator/taskbar/addressbook.gif (communicator/taskbar/addressbook.gif)
skin/modern/communicator/taskbar/composer-act.gif (communicator/taskbar/composer-act.gif)
skin/modern/communicator/taskbar/composer.gif (communicator/taskbar/composer.gif)
skin/modern/communicator/taskbar/groove-lft-bg.gif (communicator/taskbar/groove-lft-bg.gif)
skin/modern/communicator/taskbar/groove-lft.gif (communicator/taskbar/groove-lft.gif)
skin/modern/communicator/taskbar/groove-mid.gif (communicator/taskbar/groove-mid.gif)
skin/modern/communicator/taskbar/groove-rit-bg.gif (communicator/taskbar/groove-rit-bg.gif)
skin/modern/communicator/taskbar/groove-rit.gif (communicator/taskbar/groove-rit.gif)
skin/modern/communicator/taskbar/mail-act.gif (communicator/taskbar/mail-act.gif)
skin/modern/communicator/taskbar/mail.gif (communicator/taskbar/mail.gif)
skin/modern/communicator/taskbar/mailnew-act.gif (communicator/taskbar/mailnew-act.gif)
@ -89,15 +93,10 @@ modern.jar:
skin/modern/communicator/taskbar/navigator.gif (communicator/taskbar/navigator.gif)
skin/modern/communicator/taskbar/popup-arrow.gif (communicator/taskbar/popup-arrow.gif)
skin/modern/communicator/taskbar/taskbarBindings.xml (communicator/taskbar/taskbarBindings.xml)
skin/modern/communicator/taskbar/tbar-mid.gif (communicator/taskbar/tbar-mid.gif)
skin/modern/communicator/taskbar/tbar-rit-btm.gif (communicator/taskbar/tbar-rit-btm.gif)
skin/modern/communicator/taskbar/tbar-rit-top.gif (communicator/taskbar/tbar-rit-top.gif)
skin/modern/communicator/toolbar/grip-prtb-btm-act.gif (communicator/toolbar/grip-prtb-btm-act.gif)
skin/modern/communicator/toolbar/grip-prtb-btm.gif (communicator/toolbar/grip-prtb-btm.gif)
skin/modern/communicator/toolbar/grip-prtb-mid-act.gif (communicator/toolbar/grip-prtb-mid-act.gif)
skin/modern/communicator/toolbar/grip-prtb-mid.gif (communicator/toolbar/grip-prtb-mid.gif)
skin/modern/communicator/toolbar/grip-prtb-top-act.gif (communicator/toolbar/grip-prtb-top-act.gif)
skin/modern/communicator/toolbar/grip-prtb-top.gif (communicator/toolbar/grip-prtb-top.gif)
skin/modern/communicator/taskbar/tbar-lft.gif (communicator/taskbar/tbar-lft.gif)
skin/modern/communicator/taskbar/tbar-mb-lft.gif (communicator/taskbar/tbar-mb-lft.gif)
skin/modern/communicator/taskbar/tbar-mb-mid.gif (communicator/taskbar/tbar-mb-mid.gif)
skin/modern/communicator/taskbar/tbar-mb-rit.gif (communicator/taskbar/tbar-mb-rit.gif)
skin/modern/communicator/toolbar/mbtn-tb-arrow-act.gif (communicator/toolbar/mbtn-tb-arrow-act.gif)
skin/modern/communicator/toolbar/mbtn-tb-arrow-dis.gif (communicator/toolbar/mbtn-tb-arrow-dis.gif)
skin/modern/communicator/toolbar/mbtn-tb-arrow-hov.gif (communicator/toolbar/mbtn-tb-arrow-hov.gif)
@ -106,16 +105,17 @@ modern.jar:
skin/modern/communicator/toolbar/mbtn1-arrow-hov.gif (communicator/toolbar/mbtn1-arrow-hov.gif)
skin/modern/communicator/toolbar/mbtn1-arrow.gif (communicator/toolbar/mbtn1-arrow.gif)
skin/modern/communicator/toolbar/mbtn4-arrow-up.gif (communicator/toolbar/mbtn4-arrow-up.gif)
skin/modern/communicator/toolbar/prtb-lft-btm.gif (communicator/toolbar/prtb-lft-btm.gif)
skin/modern/communicator/toolbar/prtb-lft-mid.gif (communicator/toolbar/prtb-lft-mid.gif)
skin/modern/communicator/toolbar/prtb-lft-top.gif (communicator/toolbar/prtb-lft-top.gif)
skin/modern/communicator/toolbar/prtb-grip-top.gif (communicator/toolbar/prtb-grip-top.gif)
skin/modern/communicator/toolbar/prtb-grip-mid.gif (communicator/toolbar/prtb-grip-mid.gif)
skin/modern/communicator/toolbar/prtb-grip-btm.gif (communicator/toolbar/prtb-grip-btm.gif)
skin/modern/communicator/toolbar/prtb-grip-top-act.gif (communicator/toolbar/prtb-grip-top-act.gif)
skin/modern/communicator/toolbar/prtb-grip-mid-act.gif (communicator/toolbar/prtb-grip-mid-act.gif)
skin/modern/communicator/toolbar/prtb-grip-btm-act.gif (communicator/toolbar/prtb-grip-btm-act.gif)
skin/modern/communicator/toolbar/prtb-mid-btm.gif (communicator/toolbar/prtb-mid-btm.gif)
skin/modern/communicator/toolbar/prtb-mid-mid.gif (communicator/toolbar/prtb-mid-mid.gif)
skin/modern/communicator/toolbar/prtb-mid-top.gif (communicator/toolbar/prtb-mid-top.gif)
skin/modern/communicator/toolbar/prtb-rit-btm.gif (communicator/toolbar/prtb-rit-btm.gif)
skin/modern/communicator/toolbar/prtb-rit-mid.gif (communicator/toolbar/prtb-rit-mid.gif)
skin/modern/communicator/toolbar/prtb-rit-top.gif (communicator/toolbar/prtb-rit-top.gif)
skin/modern/communicator/toolbar/separator-prtb.gif (communicator/toolbar/separator-prtb.gif)
skin/modern/communicator/toolbar/toolbarBindings.xml (communicator/toolbar/toolbarBindings.xml)
skin/modern/communicator/xpinstall/xpinstall.css (communicator/xpinstall/xpinstall.css)
skin/modern/editor/contents.rdf (editor/contents.rdf)
@ -257,10 +257,6 @@ modern.jar:
skin/modern/editor/btn2/underline-dis.gif (editor/btn2/underline-dis.gif)
skin/modern/editor/btn2/underline-hov.gif (editor/btn2/underline-hov.gif)
skin/modern/editor/btn2/underline.gif (editor/btn2/underline.gif)
skin/modern/editor/icons/align-act.gif (editor/icons/align-act.gif)
skin/modern/editor/icons/align-dis.gif (editor/icons/align-dis.gif)
skin/modern/editor/icons/align-hov.gif (editor/icons/align-hov.gif)
skin/modern/editor/icons/align.gif (editor/icons/align.gif)
skin/modern/editor/icons/editmode-html.gif (editor/icons/editmode-html.gif)
skin/modern/editor/icons/editmode-normal.gif (editor/icons/editmode-normal.gif)
skin/modern/editor/icons/editmode-preview.gif (editor/icons/editmode-preview.gif)
@ -270,17 +266,18 @@ modern.jar:
skin/modern/editor/icons/img-align-mid.gif (editor/icons/img-align-mid.gif)
skin/modern/editor/icons/img-align-rit.gif (editor/icons/img-align-rit.gif)
skin/modern/editor/icons/img-align-top.gif (editor/icons/img-align-top.gif)
skin/modern/editor/icons/smiley/embarrassed_n.gif (editor/icons/smiley/embarrassed_n.gif)
skin/modern/editor/icons/smiley/frown.gif (editor/icons/smiley/frown.gif)
skin/modern/editor/icons/smiley/frown_n.gif (editor/icons/smiley/frown_n.gif)
skin/modern/editor/icons/smiley/laughing_n.gif (editor/icons/smiley/laughing_n.gif)
skin/modern/editor/icons/smiley/sick.gif (editor/icons/smiley/sick.gif)
skin/modern/editor/icons/smiley/smile.gif (editor/icons/smiley/smile.gif)
skin/modern/editor/icons/smiley/wink.gif (editor/icons/smiley/wink.gif)
skin/modern/editor/icons/smiley/smile_n.gif (editor/icons/smiley/smile_n.gif)
skin/modern/editor/icons/smiley/frown_n.gif (editor/icons/smiley/frown_n.gif)
skin/modern/editor/icons/smiley/wink_n.gif (editor/icons/smiley/wink_n.gif)
skin/modern/editor/icons/smiley/tongue_n.gif (editor/icons/smiley/tongue_n.gif)
skin/modern/editor/icons/smiley/laughing_n.gif (editor/icons/smiley/laughing_n.gif)
skin/modern/editor/icons/smiley/embarrassed_n.gif (editor/icons/smiley/embarrassed_n.gif)
skin/modern/editor/icons/smiley/undecided_n.gif (editor/icons/smiley/undecided_n.gif)
skin/modern/editor/icons/smiley/wink.gif (editor/icons/smiley/wink.gif)
skin/modern/editor/icons/smiley/wink_n.gif (editor/icons/smiley/wink_n.gif)
skin/modern/global/autocomplete.css (global/autocomplete.css)
skin/modern/global/box.css (global/box.css)
skin/modern/global/button.css (global/button.css)
skin/modern/global/checkbox.css (global/checkbox.css)
@ -317,7 +314,6 @@ modern.jar:
skin/modern/global/button/btn-act-lft-mid.gif (global/button/btn-act-lft-mid.gif)
skin/modern/global/button/btn-act-lft-top.gif (global/button/btn-act-lft-top.gif)
skin/modern/global/button/btn-act-mid-btm.gif (global/button/btn-act-mid-btm.gif)
skin/modern/global/button/btn-act-mid-mid.gif (global/button/btn-act-mid-mid.gif)
skin/modern/global/button/btn-act-mid-top.gif (global/button/btn-act-mid-top.gif)
skin/modern/global/button/btn-act-rit-btm.gif (global/button/btn-act-rit-btm.gif)
skin/modern/global/button/btn-act-rit-mid.gif (global/button/btn-act-rit-mid.gif)
@ -326,7 +322,6 @@ modern.jar:
skin/modern/global/button/btn-def-act-lft-mid.gif (global/button/btn-def-act-lft-mid.gif)
skin/modern/global/button/btn-def-act-lft-top.gif (global/button/btn-def-act-lft-top.gif)
skin/modern/global/button/btn-def-act-mid-btm.gif (global/button/btn-def-act-mid-btm.gif)
skin/modern/global/button/btn-def-act-mid-mid.gif (global/button/btn-def-act-mid-mid.gif)
skin/modern/global/button/btn-def-act-mid-top.gif (global/button/btn-def-act-mid-top.gif)
skin/modern/global/button/btn-def-act-rit-btm.gif (global/button/btn-def-act-rit-btm.gif)
skin/modern/global/button/btn-def-act-rit-mid.gif (global/button/btn-def-act-rit-mid.gif)
@ -335,7 +330,6 @@ modern.jar:
skin/modern/global/button/btn-def-lft-mid.gif (global/button/btn-def-lft-mid.gif)
skin/modern/global/button/btn-def-lft-top.gif (global/button/btn-def-lft-top.gif)
skin/modern/global/button/btn-def-mid-btm.gif (global/button/btn-def-mid-btm.gif)
skin/modern/global/button/btn-def-mid-mid.gif (global/button/btn-def-mid-mid.gif)
skin/modern/global/button/btn-def-mid-top.gif (global/button/btn-def-mid-top.gif)
skin/modern/global/button/btn-def-rit-btm.gif (global/button/btn-def-rit-btm.gif)
skin/modern/global/button/btn-def-rit-mid.gif (global/button/btn-def-rit-mid.gif)
@ -344,7 +338,6 @@ modern.jar:
skin/modern/global/button/btn-dis-lft-mid.gif (global/button/btn-dis-lft-mid.gif)
skin/modern/global/button/btn-dis-lft-top.gif (global/button/btn-dis-lft-top.gif)
skin/modern/global/button/btn-dis-mid-btm.gif (global/button/btn-dis-mid-btm.gif)
skin/modern/global/button/btn-dis-mid-mid.gif (global/button/btn-dis-mid-mid.gif)
skin/modern/global/button/btn-dis-mid-top.gif (global/button/btn-dis-mid-top.gif)
skin/modern/global/button/btn-dis-rit-btm.gif (global/button/btn-dis-rit-btm.gif)
skin/modern/global/button/btn-dis-rit-mid.gif (global/button/btn-dis-rit-mid.gif)
@ -353,7 +346,6 @@ modern.jar:
skin/modern/global/button/btn-lft-mid.gif (global/button/btn-lft-mid.gif)
skin/modern/global/button/btn-lft-top.gif (global/button/btn-lft-top.gif)
skin/modern/global/button/btn-mid-btm.gif (global/button/btn-mid-btm.gif)
skin/modern/global/button/btn-mid-mid.gif (global/button/btn-mid-mid.gif)
skin/modern/global/button/btn-mid-top.gif (global/button/btn-mid-top.gif)
skin/modern/global/button/btn-rit-btm.gif (global/button/btn-rit-btm.gif)
skin/modern/global/button/btn-rit-mid.gif (global/button/btn-rit-mid.gif)
@ -373,12 +365,13 @@ modern.jar:
skin/modern/global/icons/alert-exclam.gif (global/icons/alert-exclam.gif)
skin/modern/global/icons/alert-message.gif (global/icons/alert-message.gif)
skin/modern/global/icons/alert-question.gif (global/icons/alert-question.gif)
skin/modern/global/menu/grip-mbar-btm-act.gif (global/menu/grip-mbar-btm-act.gif)
skin/modern/global/menu/grip-mbar-btm.gif (global/menu/grip-mbar-btm.gif)
skin/modern/global/menu/grip-mbar-mid-act.gif (global/menu/grip-mbar-mid-act.gif)
skin/modern/global/menu/grip-mbar-mid.gif (global/menu/grip-mbar-mid.gif)
skin/modern/global/menu/grip-mbar-top-act.gif (global/menu/grip-mbar-top-act.gif)
skin/modern/global/menu/grip-mbar-top.gif (global/menu/grip-mbar-top.gif)
skin/modern/global/menu/mbgrip-btm-act.gif (global/menu/mbgrip-btm-act.gif)
skin/modern/global/menu/mbgrip-btm.gif (global/menu/mbgrip-btm.gif)
skin/modern/global/menu/mbgrip-mid-act.gif (global/menu/mbgrip-mid-act.gif)
skin/modern/global/menu/mbgrip-mid.gif (global/menu/mbgrip-mid.gif)
skin/modern/global/menu/mbgrip-top-act.gif (global/menu/mbgrip-top-act.gif)
skin/modern/global/menu/mbgrip-top.gif (global/menu/mbgrip-top.gif)
skin/modern/global/menu/mbar-btm.gif (global/menu/mbar-btm.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)
skin/modern/global/menu/menu-arrow.gif (global/menu/menu-arrow.gif)
@ -388,11 +381,11 @@ modern.jar:
skin/modern/global/menu/menu-radio-dis.gif (global/menu/menu-radio-dis.gif)
skin/modern/global/menu/menu-radio-hov.gif (global/menu/menu-radio-hov.gif)
skin/modern/global/menu/menu-radio.gif (global/menu/menu-radio.gif)
skin/modern/global/menulist/mlist-act-arrow.gif (global/menulist/mlist-act-arrow.gif)
skin/modern/global/menulist/mlist-act-lft-btm.gif (global/menulist/mlist-act-lft-btm.gif)
skin/modern/global/menulist/mlist-act-lft-mid.gif (global/menulist/mlist-act-lft-mid.gif)
skin/modern/global/menulist/mlist-act-lft-top.gif (global/menulist/mlist-act-lft-top.gif)
skin/modern/global/menulist/mlist-act-mid-btm.gif (global/menulist/mlist-act-mid-btm.gif)
skin/modern/global/menulist/mlist-act-mid-mid.gif (global/menulist/mlist-act-mid-mid.gif)
skin/modern/global/menulist/mlist-act-mid-top.gif (global/menulist/mlist-act-mid-top.gif)
skin/modern/global/menulist/mlist-act-rit-btm.gif (global/menulist/mlist-act-rit-btm.gif)
skin/modern/global/menulist/mlist-act-rit-mid.gif (global/menulist/mlist-act-rit-mid.gif)
@ -404,7 +397,6 @@ modern.jar:
skin/modern/global/menulist/mlist-dis-lft-mid.gif (global/menulist/mlist-dis-lft-mid.gif)
skin/modern/global/menulist/mlist-dis-lft-top.gif (global/menulist/mlist-dis-lft-top.gif)
skin/modern/global/menulist/mlist-dis-mid-btm.gif (global/menulist/mlist-dis-mid-btm.gif)
skin/modern/global/menulist/mlist-dis-mid-mid.gif (global/menulist/mlist-dis-mid-mid.gif)
skin/modern/global/menulist/mlist-dis-mid-top.gif (global/menulist/mlist-dis-mid-top.gif)
skin/modern/global/menulist/mlist-dis-rit-btm.gif (global/menulist/mlist-dis-rit-btm.gif)
skin/modern/global/menulist/mlist-dis-rit-mid.gif (global/menulist/mlist-dis-rit-mid.gif)
@ -413,7 +405,6 @@ modern.jar:
skin/modern/global/menulist/mlist-lft-mid.gif (global/menulist/mlist-lft-mid.gif)
skin/modern/global/menulist/mlist-lft-top.gif (global/menulist/mlist-lft-top.gif)
skin/modern/global/menulist/mlist-mid-btm.gif (global/menulist/mlist-mid-btm.gif)
skin/modern/global/menulist/mlist-mid-mid.gif (global/menulist/mlist-mid-mid.gif)
skin/modern/global/menulist/mlist-mid-top.gif (global/menulist/mlist-mid-top.gif)
skin/modern/global/menulist/mlist-rit-btm.gif (global/menulist/mlist-rit-btm.gif)
skin/modern/global/menulist/mlist-rit-mid.gif (global/menulist/mlist-rit-mid.gif)
@ -459,44 +450,60 @@ modern.jar:
skin/modern/global/splitter/grip-vrt-act.gif (global/splitter/grip-vrt-act.gif)
skin/modern/global/splitter/grip-vrt-after.gif (global/splitter/grip-vrt-after.gif)
skin/modern/global/splitter/grip-vrt-before.gif (global/splitter/grip-vrt-before.gif)
skin/modern/global/splitter/splitter-hrz-mid.gif (global/splitter/splitter-hrz-mid.gif)
skin/modern/global/splitter/splitter-vrt-mid.gif (global/splitter/splitter-vrt-mid.gif)
skin/modern/global/tabcontrol/tab-act-lft-mid.gif (global/tabcontrol/tab-act-lft-mid.gif)
skin/modern/global/tabcontrol/tab-act-lft.gif (global/tabcontrol/tab-act-lft.gif)
skin/modern/global/tabcontrol/tab-act-mid.gif (global/tabcontrol/tab-act-mid.gif)
skin/modern/global/tabcontrol/tab-act-lft-top.gif (global/tabcontrol/tab-act-lft-top.gif)
skin/modern/global/tabcontrol/tab-act-mid-top.gif (global/tabcontrol/tab-act-mid-top.gif)
skin/modern/global/tabcontrol/tab-act-rit-mid.gif (global/tabcontrol/tab-act-rit-mid.gif)
skin/modern/global/tabcontrol/tab-act-rit.gif (global/tabcontrol/tab-act-rit.gif)
skin/modern/global/tabcontrol/tab-bot-act-lft.gif (global/tabcontrol/tab-bot-act-lft.gif)
skin/modern/global/tabcontrol/tab-bot-act-mid.gif (global/tabcontrol/tab-bot-act-mid.gif)
skin/modern/global/tabcontrol/tab-bot-act-rit.gif (global/tabcontrol/tab-bot-act-rit.gif)
skin/modern/global/tabcontrol/tab-bot-sel-lft.gif (global/tabcontrol/tab-bot-sel-lft.gif)
skin/modern/global/tabcontrol/tab-bot-sel-mid.gif (global/tabcontrol/tab-bot-sel-mid.gif)
skin/modern/global/tabcontrol/tab-bot-sel-rit.gif (global/tabcontrol/tab-bot-sel-rit.gif)
skin/modern/global/tabcontrol/tab-bot-usel-lft.gif (global/tabcontrol/tab-bot-usel-lft.gif)
skin/modern/global/tabcontrol/tab-bot-usel-mid.gif (global/tabcontrol/tab-bot-usel-mid.gif)
skin/modern/global/tabcontrol/tab-bot-usel-rit.gif (global/tabcontrol/tab-bot-usel-rit.gif)
skin/modern/global/tabcontrol/tab-act-rit-top.gif (global/tabcontrol/tab-act-rit-top.gif)
skin/modern/global/tabcontrol/tab-bot-act-lft-mid.gif (global/tabcontrol/tab-bot-act-lft-mid.gif)
skin/modern/global/tabcontrol/tab-bot-act-lft-top.gif (global/tabcontrol/tab-bot-act-lft-top.gif)
skin/modern/global/tabcontrol/tab-bot-act-mid-top.gif (global/tabcontrol/tab-bot-act-mid-top.gif)
skin/modern/global/tabcontrol/tab-bot-act-rit-mid.gif (global/tabcontrol/tab-bot-act-rit-mid.gif)
skin/modern/global/tabcontrol/tab-bot-act-rit-top.gif (global/tabcontrol/tab-bot-act-rit-top.gif)
skin/modern/global/tabcontrol/tab-bot-sel-lft-btm.gif (global/tabcontrol/tab-bot-sel-lft-btm.gif)
skin/modern/global/tabcontrol/tab-bot-sel-lft-mid.gif (global/tabcontrol/tab-bot-sel-lft-mid.gif)
skin/modern/global/tabcontrol/tab-bot-sel-lft-top.gif (global/tabcontrol/tab-bot-sel-lft-top.gif)
skin/modern/global/tabcontrol/tab-bot-sel-mid-top.gif (global/tabcontrol/tab-bot-sel-mid-top.gif)
skin/modern/global/tabcontrol/tab-bot-sel-rit-btm.gif (global/tabcontrol/tab-bot-sel-rit-btm.gif)
skin/modern/global/tabcontrol/tab-bot-sel-rit-mid.gif (global/tabcontrol/tab-bot-sel-rit-mid.gif)
skin/modern/global/tabcontrol/tab-bot-sel-rit-top.gif (global/tabcontrol/tab-bot-sel-rit-top.gif)
skin/modern/global/tabcontrol/tab-bot-usel-lft-btm.gif (global/tabcontrol/tab-bot-usel-lft-btm.gif)
skin/modern/global/tabcontrol/tab-bot-usel-lft-top.gif (global/tabcontrol/tab-bot-usel-lft-top.gif)
skin/modern/global/tabcontrol/tab-bot-usel-mid-btm.gif (global/tabcontrol/tab-bot-usel-mid-btm.gif)
skin/modern/global/tabcontrol/tab-bot-usel-mid-top.gif (global/tabcontrol/tab-bot-usel-mid-top.gif)
skin/modern/global/tabcontrol/tab-bot-usel-rit-btm.gif (global/tabcontrol/tab-bot-usel-rit-btm.gif)
skin/modern/global/tabcontrol/tab-bot-usel-rit-top.gif (global/tabcontrol/tab-bot-usel-rit-top.gif)
skin/modern/global/tabcontrol/tab-sel-lft-btm.gif (global/tabcontrol/tab-sel-lft-btm.gif)
skin/modern/global/tabcontrol/tab-sel-lft.gif (global/tabcontrol/tab-sel-lft.gif)
skin/modern/global/tabcontrol/tab-sel-mid.gif (global/tabcontrol/tab-sel-mid.gif)
skin/modern/global/tabcontrol/tab-sel-lft-mid.gif (global/tabcontrol/tab-sel-lft-mid.gif)
skin/modern/global/tabcontrol/tab-sel-lft-top.gif (global/tabcontrol/tab-sel-lft-top.gif)
skin/modern/global/tabcontrol/tab-sel-mid-top.gif (global/tabcontrol/tab-sel-mid-top.gif)
skin/modern/global/tabcontrol/tab-sel-rit-btm.gif (global/tabcontrol/tab-sel-rit-btm.gif)
skin/modern/global/tabcontrol/tab-sel-rit-mid.gif (global/tabcontrol/tab-sel-rit-mid.gif)
skin/modern/global/tabcontrol/tab-sel-rit.gif (global/tabcontrol/tab-sel-rit.gif)
skin/modern/global/tabcontrol/tab-usel-lft.gif (global/tabcontrol/tab-usel-lft.gif)
skin/modern/global/tabcontrol/tab-usel-mid.gif (global/tabcontrol/tab-usel-mid.gif)
skin/modern/global/tabcontrol/tab-sel-rit-top.gif (global/tabcontrol/tab-sel-rit-top.gif)
skin/modern/global/tabcontrol/tab-usel-lft-btm.gif (global/tabcontrol/tab-usel-lft-btm.gif)
skin/modern/global/tabcontrol/tab-usel-lft-mid.gif (global/tabcontrol/tab-usel-lft-mid.gif)
skin/modern/global/tabcontrol/tab-usel-lft-top.gif (global/tabcontrol/tab-usel-lft-top.gif)
skin/modern/global/tabcontrol/tab-usel-mid-btm.gif (global/tabcontrol/tab-usel-mid-btm.gif)
skin/modern/global/tabcontrol/tab-usel-mid-top.gif (global/tabcontrol/tab-usel-mid-top.gif)
skin/modern/global/tabcontrol/tab-usel-rit-btm.gif (global/tabcontrol/tab-usel-rit-btm.gif)
skin/modern/global/tabcontrol/tab-usel-rit-mid.gif (global/tabcontrol/tab-usel-rit-mid.gif)
skin/modern/global/tabcontrol/tab-usel-rit.gif (global/tabcontrol/tab-usel-rit.gif)
skin/modern/global/tabcontrol/tabbox-bot-lft.gif (global/tabcontrol/tabbox-bot-lft.gif)
skin/modern/global/tabcontrol/tab-usel-rit-top.gif (global/tabcontrol/tab-usel-rit-top.gif)
skin/modern/global/tabcontrol/tabbox-bot-mid.gif (global/tabcontrol/tabbox-bot-mid.gif)
skin/modern/global/tabcontrol/tabbox-bot-rit.gif (global/tabcontrol/tabbox-bot-rit.gif)
skin/modern/global/tabcontrol/tabbox-lft.gif (global/tabcontrol/tabbox-lft.gif)
skin/modern/global/tabcontrol/tabbox-mid.gif (global/tabcontrol/tabbox-mid.gif)
skin/modern/global/tabcontrol/tabbox-rit.gif (global/tabcontrol/tabbox-rit.gif)
skin/modern/global/toolbar/tbgrip-act-btm.gif (global/toolbar/tbgrip-act-btm.gif)
skin/modern/global/toolbar/tbgrip-act-mid.gif (global/toolbar/tbgrip-act-mid.gif)
skin/modern/global/toolbar/tbgrip-act-top.gif (global/toolbar/tbgrip-act-top.gif)
skin/modern/global/toolbar/tb-separator.gif (global/toolbar/tb-separator.gif)
skin/modern/global/toolbar/tbgrip-btm-act.gif (global/toolbar/tbgrip-btm-act.gif)
skin/modern/global/toolbar/tbgrip-mid-act.gif (global/toolbar/tbgrip-mid-act.gif)
skin/modern/global/toolbar/tbgrip-top-act.gif (global/toolbar/tbgrip-top-act.gif)
skin/modern/global/toolbar/tbgrip-btm.gif (global/toolbar/tbgrip-btm.gif)
skin/modern/global/toolbar/tbgrip-clps-act.gif (global/toolbar/tbgrip-clps-act.gif)
skin/modern/global/toolbar/tbgrip-clps.gif (global/toolbar/tbgrip-clps.gif)
skin/modern/global/toolbar/tbgrip-mid.gif (global/toolbar/tbgrip-mid.gif)
skin/modern/global/toolbar/tbgrip-top.gif (global/toolbar/tbgrip-top.gif)
skin/modern/global/toolbar/tb-mid.gif (global/toolbar/tb-mid.gif)
skin/modern/global/tree/columnpicker.gif (global/tree/columnpicker.gif)
skin/modern/global/tree/sort-asc.gif (global/tree/sort-asc.gif)
skin/modern/global/tree/sort-dsc.gif (global/tree/sort-dsc.gif)
@ -526,10 +533,6 @@ modern.jar:
skin/modern/messenger/addressbook/btn1/newlist-dis.gif (messenger/addressbook/btn1/newlist-dis.gif)
skin/modern/messenger/addressbook/btn1/newlist-hov.gif (messenger/addressbook/btn1/newlist-hov.gif)
skin/modern/messenger/addressbook/btn1/newlist.gif (messenger/addressbook/btn1/newlist.gif)
skin/modern/messenger/addressbook/btn1/newmsgab-act.gif (messenger/addressbook/btn1/newmsgab-act.gif)
skin/modern/messenger/addressbook/btn1/newmsgab-dis.gif (messenger/addressbook/btn1/newmsgab-dis.gif)
skin/modern/messenger/addressbook/btn1/newmsgab-hov.gif (messenger/addressbook/btn1/newmsgab-hov.gif)
skin/modern/messenger/addressbook/btn1/newmsgab.gif (messenger/addressbook/btn1/newmsgab.gif)
skin/modern/messenger/addressbook/icons/directory-open.gif (messenger/addressbook/icons/directory-open.gif)
skin/modern/messenger/addressbook/icons/directory.gif (messenger/addressbook/icons/directory.gif)
skin/modern/messenger/addressbook/icons/list.gif (messenger/addressbook/icons/list.gif)
@ -567,11 +570,10 @@ modern.jar:
skin/modern/messenger/btn1/replyall-dis.gif (messenger/btn1/replyall-dis.gif)
skin/modern/messenger/btn1/replyall-hov.gif (messenger/btn1/replyall-hov.gif)
skin/modern/messenger/btn1/replyall.gif (messenger/btn1/replyall.gif)
skin/modern/messenger/btn1/trash-act.gif (messenger/btn1/trash-act.gif)
skin/modern/messenger/btn1/trash-dis.gif (messenger/btn1/trash-dis.gif)
skin/modern/messenger/btn1/trash-hov.gif (messenger/btn1/trash-hov.gif)
skin/modern/messenger/btn1/trash.gif (messenger/btn1/trash.gif)
skin/modern/messenger/icons/addtoab.gif (messenger/icons/addtoab.gif)
skin/modern/messenger/btn1/delete-act.gif (messenger/btn1/delete-act.gif)
skin/modern/messenger/btn1/delete-dis.gif (messenger/btn1/delete-dis.gif)
skin/modern/messenger/btn1/delete-hov.gif (messenger/btn1/delete-hov.gif)
skin/modern/messenger/btn1/delete.gif (messenger/btn1/delete.gif)
skin/modern/messenger/icons/attach.gif (messenger/icons/attach.gif)
skin/modern/messenger/icons/check.gif (messenger/icons/check.gif)
skin/modern/messenger/icons/dot.gif (messenger/icons/dot.gif)
@ -614,9 +616,10 @@ modern.jar:
skin/modern/messenger/icons/message-mail-imapdelete.gif (messenger/icons/message-mail-imapdelete.gif)
skin/modern/messenger/icons/message-mail-new.gif (messenger/icons/message-mail-new.gif)
skin/modern/messenger/icons/message-mail.gif (messenger/icons/message-mail.gif)
skin/modern/messenger/icons/message-news-attach.gif (messenger/icons/message-news-attach.gif)
skin/modern/messenger/icons/message-news-new.gif (messenger/icons/message-news-new.gif)
skin/modern/messenger/icons/message-news.gif (messenger/icons/message-news.gif)
skin/modern/messenger/icons/message-news-attach.gif (messenger/icons/message-news-attach.gif)
skin/modern/messenger/icons/prtb-mail-icon.gif (messenger/icons/prtb-mail-icon.gif)
skin/modern/messenger/icons/readcol-read.gif (messenger/icons/readcol-read.gif)
skin/modern/messenger/icons/readcol-unread.gif (messenger/icons/readcol-unread.gif)
skin/modern/messenger/icons/server-local-new.gif (messenger/icons/server-local-new.gif)
@ -633,8 +636,6 @@ modern.jar:
skin/modern/messenger/icons/thread-open.gif (messenger/icons/thread-open.gif)
skin/modern/messenger/icons/threadcol-threaded.gif (messenger/icons/threadcol-threaded.gif)
skin/modern/messenger/icons/threadcol-unthreaded.gif (messenger/icons/threadcol-unthreaded.gif)
skin/modern/messenger/icons/twisty-less.gif (messenger/icons/twisty-less.gif)
skin/modern/messenger/icons/twisty-more.gif (messenger/icons/twisty-more.gif)
skin/modern/messenger/messengercompose/messengercompose.css (messenger/messengercompose/messengercompose.css)
skin/modern/messenger/messengercompose/btn1/address-act.gif (messenger/messengercompose/btn1/address-act.gif)
skin/modern/messenger/messengercompose/btn1/address-dis.gif (messenger/messengercompose/btn1/address-dis.gif)
@ -644,14 +645,6 @@ modern.jar:
skin/modern/messenger/messengercompose/btn1/attach-dis.gif (messenger/messengercompose/btn1/attach-dis.gif)
skin/modern/messenger/messengercompose/btn1/attach-hov.gif (messenger/messengercompose/btn1/attach-hov.gif)
skin/modern/messenger/messengercompose/btn1/attach.gif (messenger/messengercompose/btn1/attach.gif)
skin/modern/messenger/messengercompose/btn1/quote-act.gif (messenger/messengercompose/btn1/quote-act.gif)
skin/modern/messenger/messengercompose/btn1/quote-dis.gif (messenger/messengercompose/btn1/quote-dis.gif)
skin/modern/messenger/messengercompose/btn1/quote-hov.gif (messenger/messengercompose/btn1/quote-hov.gif)
skin/modern/messenger/messengercompose/btn1/quote.gif (messenger/messengercompose/btn1/quote.gif)
skin/modern/messenger/messengercompose/btn1/savedraft-act.gif (messenger/messengercompose/btn1/savedraft-act.gif)
skin/modern/messenger/messengercompose/btn1/savedraft-dis.gif (messenger/messengercompose/btn1/savedraft-dis.gif)
skin/modern/messenger/messengercompose/btn1/savedraft-hov.gif (messenger/messengercompose/btn1/savedraft-hov.gif)
skin/modern/messenger/messengercompose/btn1/savedraft.gif (messenger/messengercompose/btn1/savedraft.gif)
skin/modern/messenger/messengercompose/btn1/send-act.gif (messenger/messengercompose/btn1/send-act.gif)
skin/modern/messenger/messengercompose/btn1/send-dis.gif (messenger/messengercompose/btn1/send-dis.gif)
skin/modern/messenger/messengercompose/btn1/send-hov.gif (messenger/messengercompose/btn1/send-hov.gif)
@ -660,8 +653,6 @@ modern.jar:
skin/modern/navigator/navigator.css (navigator/navigator.css)
skin/modern/navigator/navigatorBindings.xml (navigator/navigatorBindings.xml)
skin/modern/navigator/personalToolbar.css (navigator/personalToolbar.css)
skin/modern/navigator/ubhist-keyword-popup-active.gif (navigator/ubhist-keyword-popup-active.gif)
skin/modern/navigator/ubhist-keyword-popup.gif (navigator/ubhist-keyword-popup.gif)
skin/modern/navigator/btn1/back-act.gif (navigator/btn1/back-act.gif)
skin/modern/navigator/btn1/back-dis.gif (navigator/btn1/back-dis.gif)
skin/modern/navigator/btn1/back-hov.gif (navigator/btn1/back-hov.gif)
@ -670,6 +661,10 @@ modern.jar:
skin/modern/navigator/btn1/forward-dis.gif (navigator/btn1/forward-dis.gif)
skin/modern/navigator/btn1/forward-hov.gif (navigator/btn1/forward-hov.gif)
skin/modern/navigator/btn1/forward.gif (navigator/btn1/forward.gif)
skin/modern/navigator/btn1/print-act.gif (navigator/btn1/print-act.gif)
skin/modern/navigator/btn1/print-dis.gif (navigator/btn1/print-dis.gif)
skin/modern/navigator/btn1/print-hov.gif (navigator/btn1/print-hov.gif)
skin/modern/navigator/btn1/print.gif (navigator/btn1/print.gif)
skin/modern/navigator/btn1/reload-act.gif (navigator/btn1/reload-act.gif)
skin/modern/navigator/btn1/reload-dis.gif (navigator/btn1/reload-dis.gif)
skin/modern/navigator/btn1/reload-hov.gif (navigator/btn1/reload-hov.gif)
@ -678,6 +673,7 @@ modern.jar:
skin/modern/navigator/btn1/stop-dis.gif (navigator/btn1/stop-dis.gif)
skin/modern/navigator/btn1/stop-hov.gif (navigator/btn1/stop-hov.gif)
skin/modern/navigator/btn1/stop.gif (navigator/btn1/stop.gif)
skin/modern/navigator/toolbar/navbar-mid-top.gif (navigator/toolbar/navbar-mid-top.gif)
skin/modern/navigator/toolbar/nav-groove-lft-btm.gif (navigator/toolbar/nav-groove-lft-btm.gif)
skin/modern/navigator/toolbar/nav-groove-lft-mid.gif (navigator/toolbar/nav-groove-lft-mid.gif)
skin/modern/navigator/toolbar/nav-groove-lft-top.gif (navigator/toolbar/nav-groove-lft-top.gif)
@ -687,6 +683,9 @@ modern.jar:
skin/modern/navigator/toolbar/urlbar-lft-btm.gif (navigator/toolbar/urlbar-lft-btm.gif)
skin/modern/navigator/toolbar/urlbar-lft-mid.gif (navigator/toolbar/urlbar-lft-mid.gif)
skin/modern/navigator/toolbar/urlbar-lft-top.gif (navigator/toolbar/urlbar-lft-top.gif)
skin/modern/navigator/toolbar/urlbar-mid-btm.gif (navigator/toolbar/urlbar-mid-btm.gif)
skin/modern/navigator/toolbar/urlbar-mid-mid.gif (navigator/toolbar/urlbar-mid-mid.gif)
skin/modern/navigator/toolbar/urlbar-mid-top.gif (navigator/toolbar/urlbar-mid-top.gif)
skin/modern/navigator/toolbar/urlbar-rit-btm.gif (navigator/toolbar/urlbar-rit-btm.gif)
skin/modern/navigator/toolbar/urlbar-rit-mid.gif (navigator/toolbar/urlbar-rit-mid.gif)
skin/modern/navigator/toolbar/urlbar-rit-top.gif (navigator/toolbar/urlbar-rit-top.gif)

Просмотреть файл

@ -39,15 +39,15 @@
#button-send[disabled="true"]:hover,
#button-send[disabled="true"]:hover:active {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/send-dis.gif");
}
}
#button-send:hover {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/send-hov.gif");
}
}
#button-send:hover:active {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/send-act.gif");
}
}
#button-address {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/address.gif");
@ -57,15 +57,15 @@
#button-address[disabled="true"]:hover,
#button-address[disabled="true"]:hover:active {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/address-dis.gif");
}
}
#button-address:hover {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/address-hov.gif");
}
}
#button-address:hover:active {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/address-act.gif");
}
}
#button-attach {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/attach.gif");
@ -75,69 +75,51 @@
#button-attach[disabled="true"]:hover,
#button-attach[disabled="true"]:hover:active {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/attach-dis.gif");
}
}
#button-attach:hover {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/attach-hov.gif");
}
}
#button-attach:hover:active {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/attach-act.gif");
}
#spellingButton {
list-style-image: url("chrome://editor/skin/messengercompose/btn1/spell.gif");
}
#button-quote {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/quote.gif");
}
#spellingButton[disabled="true"],
#spellingButton[disabled="true"]:hover,
#spellingButton[disabled="true"]:hover:active {
list-style-image: url("chrome://editor/skin/messengercompose/btn1/spell-dis.gif");
}
#button-quote[disabled="true"],
#button-quote[disabled="true"]:hover,
#button-quote[disabled="true"]:hover:active {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/quote-dis.gif");
}
#spellingButton:hover {
list-style-image: url("chrome://editor/skin/messengercompose/btn1/spell-hov.gif");
}
#button-quote:hover {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/quote-hov.gif");
}
#button-quote:hover:active {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/quote-act.gif");
}
#button-spelling {
list-style-image: url("chrome://messenger/skin/editor/btn1/spell.gif");
}
#button-spelling[disabled="true"],
#button-spelling[disabled="true"]:hover,
#button-spelling[disabled="true"]:hover:active {
list-style-image: url("chrome://messenger/skin/editor/btn1/spell-dis.gif");
}
#button-spelling:hover {
list-style-image: url("chrome://messenger/skin/editor/btn1/spell-hov.gif");
}
#button-spelling:hover:active {
list-style-image: url("chrome://messenger/skin/editor/btn1/spell-act.gif");
#spellingButton:hover:active {
list-style-image: url("chrome://editor/skin/messengercompose/btn1/spell-act.gif");
}
#button-save {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/savedraft.gif");
list-style-image: url("chrome://editor/skin/btn1/savefile.gif");
}
#button-save[disabled="true"],
#button-save[disabled="true"]:hover,
#button-save[disabled="true"]:hover:active {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/savedraft-dis.gif");
}
list-style-image: url("chrome://editor/skin/btn1/savefile-dis.gif");
}
#button-save:hover {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/savedraft-hov.gif");
}
list-style-image: url("chrome://editor/skin/btn1/savefile-hov.gif");
}
#button-save:hover:active {
list-style-image: url("chrome://messenger/skin/messengercompose/btn1/savedraft-act.gif");
}
list-style-image: url("chrome://editor/skin/btn1/savefile-act.gif");
}
#button-stop {
list-style-image: url("chrome://communicator/skin/btn1/stop.gif");
@ -147,11 +129,11 @@
#button-stop[disabled="true"]:hover,
#button-stop[disabled="true"]:hover:active {
list-style-image: url("chrome://communicator/skin/btn1/stop-dis.gif");
}
}
#button-stop:hover {
list-style-image: url("chrome://communicator/skin/btn1/stop-hov.gif");
}
}
#button-stop:hover:active {
list-style-image: url("chrome://communicator/skin/btn1/stop-act.gif");
@ -159,18 +141,10 @@
/* ::::: header toolbar ::::: */
#attachmentBucket,
#msgSubject,
#msgIdentity {
#attachmentBucket {
-moz-user-focus: normal;
}
/* ..... border adjustments to match toolbar colors ..... */
#compose-toolbar-sizer {
border-top: none;
}
/* ..... "From:" menulist menuitems ..... */
/* MOVE TO CONTENT */
@ -189,11 +163,11 @@
-moz-user-focus: none;
width: 0px;
height: 80px;
}
}
#listcol-addressingWidget {
border-right: 1px solid #D3D3E5;
width: 9em;
border-right: 1px solid #C4CADC;
}
#addressingWidgetTree > treechildren > treeitem > treerow,
@ -204,7 +178,7 @@
}
.treecell-addressingWidget {
border-bottom: 1px solid #D3D3E5;
border-bottom: 1px solid #C4CADC;
padding: 0px;
vertical-align: middle;
}
@ -215,23 +189,44 @@
.dummy-row-cell:first-child {
border-top: none;
border-bottom: 1px solid #D3D3E5;
border-bottom: 1px solid #C4CADC;
}
.aw-menulist {
margin: 0px;
border-top: none !important;
border-left: none !important;
border-color: #314152;
border-color: #A5AECE;
}
.person-icon {
-moz-user-focus: ignore;
cursor: default !important;
margin: 2px 4px 2px 4px;
border: none;
list-style-image: url("chrome://messenger/skin/addressbook/icons/person.gif");
}
/* ::::: status bar border tweaks ::::: */
statusbar, #status-bar {
border-left: none;
}
.statusbar-internal-box-1 {
border-left: none;
padding: 0px;
}
.statusbar-internal-box-2 {
border-top: 1px solid #A8B1CC !important;
}
.statusbar-internal-box-3 {
border-top: 1px solid #D4DDF8 !important;
padding: 1px 2px 1px 2px;
}
/* ::::: askSendFormat dialog ::::: */
#askSendFormat {
@ -243,34 +238,38 @@
}
#convertYes {
list-style-image: url("chrome://global/skin/icon/alert-question.gif");
list-style-image: url("chrome://global/skin/icons/alert-question.gif");
}
#convertAltering {
list-style-image: url("chrome://global/skin/icon/alert-question.gif");
list-style-image: url("chrome://global/skin/icons/alert-question.gif");
}
#convertNo {
list-style-image: url("chrome://global/skin/icon/alert-exclam.gif");
list-style-image: url("chrome://global/skin/icons/alert-exclam.gif");
}
/* Workaround for bug 50217. Please remove this rule, when this bug is fixed. */
#convertDefault {
list-style-image: url("chrome://global/skin/icon/alert-question.gif");
list-style-image: url("chrome://global/skin/icons/alert-question.gif");
}
/* ::::: miscellany :::::: */
#compose-toolbar-sizer {
border-top: none;
}
spring.spacer {
width: 5px;
height: 5px;
}
.label {
color: #FFFFFF;
color: #000000;
}
#navprintplus {
display: none !important;
display: none !important;
}

Просмотреть файл

@ -1,44 +1,47 @@
/*
/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998-2001 Netscape Communications Corporation. All
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
* Rights Reserved.
*
*
* Contributor(s):
* Joe Hewitt (hewitt@netscape.com)
*/
/* ===== navigator.css ==================================================
== Styles shared throughout the Navigator application.
======================================================================= */
@import url("chrome://navigator/content/navigator.css");
@import url("chrome://communicator/skin/");
@import url("chrome://communicator/skin/sidebar/sidebar.css");
@import url("chrome://navigator/skin/personalToolbar.css");
@import url("chrome://communicator/skin/sidebar/sidebar.css");
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* ::::: primary toolbar buttons ::::: */
.menubutton-dual {
-moz-binding: url("chrome://communicator/skin/widgetBindings.xml#menubutton-dual-1");
}
#back-button {
margin-left: 0px;
margin: 3px 6px 0px 0px;
list-style-image: url("chrome://navigator/skin/btn1/back.gif");
}
#back-button[disabled="true"],
#back-button[disabled="true"]:hover,
#back-button[disabled="true"]:hover:active,
#back-button[disabled="true"] > .menubutton-dual-stack > .menubutton-dual-button,
#back-button[disabled="true"] > .menubutton-dual-stack > .menubutton-dual-button:hover,
#back-button[disabled="true"] > .menubutton-dual-stack > .menubutton-dual-button:hover:active {
list-style-image: url("chrome://navigator/skin/btn1/back-dis.gif");
@ -53,10 +56,14 @@
}
#forward-button {
margin: 3px 6px 0px 0px;
list-style-image: url("chrome://navigator/skin/btn1/forward.gif");
}
#forward-button[disabled="true"],
#forward-button[disabled="true"]:hover,
#forward-button[disabled="true"]:hover:active,
#forward-button[disabled="true"] > .menubutton-dual-stack > .menubutton-dual-button,
#forward-button[disabled="true"] > .menubutton-dual-stack > .menubutton-dual-button:hover,
#forward-button[disabled="true"] > .menubutton-dual-stack > .menubutton-dual-button:hover:active {
list-style-image: url("chrome://navigator/skin/btn1/forward-dis.gif");
@ -70,28 +77,11 @@
list-style-image: url("chrome://navigator/skin/btn1/forward-act.gif");
}
#stop-button {
list-style-image: url("chrome://navigator/skin/btn1/stop.gif");
}
#stop-button[disabled="true"],
#stop-button[disabled="true"]:hover,
#stop-button[disabled="true"]:hover:active {
list-style-image: url("chrome://navigator/skin/btn1/stop-dis.gif");
}
#stop-button:hover {
list-style-image: url("chrome://navigator/skin/btn1/stop-hov.gif");
}
#stop-button:hover:active {
list-style-image: url("chrome://navigator/skin/btn1/stop-act.gif");
}
#reload-button {
margin: 3px 6px 0px 0px;
list-style-image: url("chrome://navigator/skin/btn1/reload.gif");
}
#reload-button[disabled="true"],
#reload-button[disabled="true"]:hover,
#reload-button[disabled="true"]:hover:active {
@ -106,13 +96,33 @@
list-style-image: url("chrome://navigator/skin/btn1/reload-act.gif");
}
#stop-button {
margin: 3px 6px 0px 0px;
list-style-image: url("chrome://navigator/skin/btn1/stop.gif");
}
#stop-button[disabled="true"],
#stop-button[disabled="true"]:hover,
#stop-button[disabled="true"]:hover:active {
list-style-image: url("chrome://navigator/skin/btn1/stop-dis.gif");
}
#stop-button:hover {
list-style-image: url("chrome://navigator/skin/btn1/stop-hov.gif");
}
#stop-button:hover:active {
list-style-image: url("chrome://navigator/skin/btn1/stop-act.gif");
}
#print-button {
-moz-binding: url("chrome://communicator/skin/widgetBindings.xml#menubutton-dual-1");
margin: 6px 6px 0px 6px;
list-style-image: url("chrome://communicator/skin/btn1/print.gif");
}
#print-button[disabled="true"],
#print-button[disabled="true"]:hover,
#print-button[disabled="true"]:hover:active,
#print-button[disabled="true"] > .menubutton-dual-stack > .menubutton-dual-button,
#print-button[disabled="true"] > .menubutton-dual-stack > .menubutton-dual-button:hover,
#print-button[disabled="true"] > .menubutton-dual-stack > .menubutton-dual-button:hover:active {
list-style-image: url("chrome://communicator/skin/btn1/print-dis.gif");
@ -126,72 +136,81 @@
list-style-image: url("chrome://communicator/skin/btn1/print-act.gif");
}
#print-button > .menubutton-dual-stack > .menubutton-dual-dropmarker-box {
margin-left: 19px;
margin-top: 22px;
}
/* Hides text below the above buttons */
.button-toolbar-1 > .button-internal-box > .button-text-container {
display: none;
}
/* ::::: nav-bar - the navigator primary toolbar ::::: */
.toolbar-primary-mid-fg {
-moz-binding: url("chrome://global/skin/globalBindings.xml#autostretch-never");
vertical-align: top;
}
.toolbar-primary-mid-top {
background-image: url("chrome://navigator/skin/toolbar/navbar-mid-top.gif");
}
#nav-bar-buttons {
margin-left: 15px;
}
/* ::::: navbar-inner - the grooved area around the urlbar ::::: */
#nav-bar-inner {
-moz-binding: url("chrome://navigator/skin/navigatorBindings.xml#nav-bar-inner");
margin: 6px 0px 0px 6px;
margin: 10px 5px 0px 13px;
min-width: 0px;
}
.navbar-inner-groove-left {
width: 6px;
.navbar-inner-groove-lft {
width: 6px;
}
.navbar-inner-groove-left-top {
height: 22px;
.navbar-inner-groove-lft-top {
height: 24px;
background: url("chrome://navigator/skin/toolbar/nav-groove-lft-top.gif") no-repeat;
}
.navbar-inner-groove-left-mid {
background: url("chrome://navigator/skin/toolbar/nav-groove-lft-mid.gif") repeat-y;
.navbar-inner-groove-lft-mid {
background: url("chrome://navigator/skin/toolbar/nav-groove-lft-mid.gif") repeat-y left;
}
.navbar-inner-groove-left-btm {
height: 6px;
.navbar-inner-groove-lft-btm {
height: 5px;
background: url("chrome://navigator/skin/toolbar/nav-groove-lft-btm.gif") no-repeat;
}
.navbar-inner-border-outer {
border-top: 1px solid #A0B3C7;
border-bottom: 1px solid #7C92AF;
border-top: 1px solid #A2AFBD;
border-bottom: 1px solid #CFD7DE;
}
.navbar-inner-border-middle {
border-top: 1px solid #7D91AA;
border-bottom: 1px solid #4E6179;
border-top: 1px solid #EBF4FF;
border-bottom: 1px solid #87929E;
}
.navbar-inner-border-inner {
border-top: 1px solid #BBCDE3;
border-bottom: 1px solid #556D8B;
vertical-align: middle;
}
.navbar-inner-groove-right {
width: 6px;
.navbar-inner-groove-rit {
width: 6px;
}
.navbar-inner-groove-right-top {
height: 22px;
.navbar-inner-groove-rit-top {
height: 24px;
background: url("chrome://navigator/skin/toolbar/nav-groove-rit-top.gif") no-repeat;
}
.navbar-inner-groove-right-mid {
background: url("chrome://navigator/skin/toolbar/nav-groove-rit-mid.gif") repeat-y;
.navbar-inner-groove-rit-mid {
background: url("chrome://navigator/skin/toolbar/nav-groove-rit-mid.gif") repeat-y right;
}
.navbar-inner-groove-right-btm {
height: 6px;
.navbar-inner-groove-rit-btm {
height: 5px;
background: url("chrome://navigator/skin/toolbar/nav-groove-rit-btm.gif") no-repeat;
}
@ -199,125 +218,129 @@
#urlbar-group {
-moz-binding: url("chrome://navigator/skin/navigatorBindings.xml#urlbar-group");
margin: 3px 8px 4px 2px;
-moz-border-radius: 5px;
background-color: #ffffff;
margin: 2px 6px 2px 3px;
}
.urlbar-left {
.urlbar-lft {
width: 3px;
}
.urlbar-left-top {
height: 4px;
.urlbar-lft-top {
background: url("chrome://navigator/skin/toolbar/urlbar-lft-top.gif") no-repeat;
height: 4px;
}
.urlbar-left-mid {
.urlbar-lft-mid {
background: url("chrome://navigator/skin/toolbar/urlbar-lft-mid.gif") repeat-y;
}
.urlbar-left-btm {
min-height: 3px;
.urlbar-lft-btm {
background: url("chrome://navigator/skin/toolbar/urlbar-lft-btm.gif") no-repeat;
}
.urlbar-border-outer {
border-top: 1px solid #65696D;
}
.urlbar-border-inner {
border-top: 1px solid #A3A3A3;
}
.urlbar-right {
width: 4px;
}
.urlbar-right-top {
height: 3px;
background: url("chrome://navigator/skin/toolbar/urlbar-rit-top.gif") no-repeat;
}
.urlbar-right-mid {
.urlbar-mid-top {
background: url("chrome://navigator/skin/toolbar/urlbar-mid-top.gif") repeat-x;
height: 4px;
}
.urlbar-mid-mid {
background: url("chrome://navigator/skin/toolbar/urlbar-mid-mid.gif") bottom repeat-x;
background-color: #E9F5FF;
}
.urlbar-mid-btm {
background: url("chrome://navigator/skin/toolbar/urlbar-mid-btm.gif") repeat-x;
height: 3px;
}
.urlbar-rit {
width: 3px;
}
.urlbar-rit-top {
background: url("chrome://navigator/skin/toolbar/urlbar-rit-top.gif") no-repeat;
height: 4px;
}
.urlbar-rit-mid {
background: url("chrome://navigator/skin/toolbar/urlbar-rit-mid.gif") repeat-y;
}
.urlbar-right-btm {
min-height: 3px;
.urlbar-rit-btm {
background: url("chrome://navigator/skin/toolbar/urlbar-rit-btm.gif") no-repeat;
height: 3px;
}
/* let the textbox background show through to the shiny image */
#urlbar,
#urlbar > .textbox-internal-box {
background-color: transparent;
}
/* ::::: more toolbar buttons ::::: */
#page-proxy-button {
cursor: grab;
margin: 0px 2px 0px 0px;
list-style-image: url("chrome://communicator/skin/bookmarks/bookmark-item.gif");
}
margin-left: 0px 2px 0px 0px;
list-style-image: url("chrome://communicator/skin/bookmarks/bookmark-item.gif");
}
#ubhist {
margin: 1px 1px 3px 0px;
border: none;
padding: 0px;
width: 10px;
list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif");
}
#ubhist-popup > menuitem {
max-width: 550px !important;
#home-button {
list-style-image: url("chrome://communicator/skin/bookmarks/home.gif");
}
#go-button {
margin-right: 6px;
margin-left: 0px;
min-width: 0px;
}
#search-button {
margin-right: 4px;
margin-left: 0px;
min-width: 0px;
font-size: larger;
}
/* ::::: move this to content ::::: */
/* ::::: navigator throbber ::::: */
window[chromehidden~="menubar"] .chromeclass-menubar {
display: none;
#navigator-throbber {
margin: 10px 15px 0px 8px;
list-style-image: url("chrome://communicator/skin/brand/throbber-single.gif");
}
window[chromehidden~="toolbar"] .chromeclass-toolbar {
display: none;
#navigator-throbber[busy="true"] {
list-style-image: url("chrome://communicator/skin/brand/throbber-anim.gif");
}
window[chromehidden~="location"] .chromeclass-location {
display: none;
/* ::::: autocomplete ::::: */
.autocomplete-outlinerbody:-moz-outliner-cell-text(value) {
padding-left: 15px;
}
window[chromehidden~="directories"] .chromeclass-directories {
display: none;
.autocomplete-outlinerbody:-moz-outliner-cell-text(comment) {
color: #555566;
}
window[chromehidden~="status"] .chromeclass-status {
display: none;
.autocomplete-search-box {
border-top: 2px groove #DDE3EB;
background-color: #DDE3EB;
}
window[chromehidden~="extrachrome"] .chromeclass-extrachrome {
display: none;
.autocomplete-result-popup[nomatch="true"] > .autocomplete-search-box {
border-top: 1px solid #E4EAEF;
}
/* ::::: move this to commercial tree ::::: */
#ubhist-keyword-popup {
margin: 3px 4px 8px 3px;
border: none;
width: 10px;
background-color: transparent;
list-style-image: url("chrome://navigator/skin/ubhist-keyword-popup.gif");
.autocomplete-search-engine {
padding: 2px;
}
#ubhist-keyword-popup > .menubutton-icon-internal-box {
border: none;
.autocomplete-search-engine[menuactive="true"] {
background-color: #486380;
color: #FFFFFF;
}
#ubhist-keyword-popup:hover:active {
list-style-image: url("chrome://navigator/skin/ubhist-keyword-popup-active.gif");
.autocomplete-search-engine-img {
margin-right: 4px;
}

Просмотреть файл

@ -13,6 +13,8 @@ comm.jar:
content/navigator/navigatorDD.js (resources/content/navigatorDD.js)
content/navigator/nsBrowserStatusHandler.js (resources/content/nsBrowserStatusHandler.js)
content/navigator/tooltip.js (resources/content/tooltip.js)
content/navigator/urlbarBindings.xml (resources/content/urlbarBindings.xml)
content/navigator/navigator.css (resources/content/navigator.css)
content/navigator/metadata.xul (resources/content/metadata.xul)
content/navigator/metadata.js (resources/content/metadata.js)
content/navigator/personalToolbar.js (resources/content/personalToolbar.js)

Просмотреть файл

@ -0,0 +1,51 @@
/* ::::::::::
:: Rules for 'hiding' portions of the chrome for special
:: kinds of browser windows.
::::: */
window[chromehidden~="menubar"] .chromeclass-menubar {
display: none;
}
window[chromehidden~="toolbar"] .chromeclass-toolbar {
display: none;
}
window[chromehidden~="location"] .chromeclass-location {
display: none;
}
window[chromehidden~="directories"] .chromeclass-directories {
display: none;
}
window[chromehidden~="status"] .chromeclass-status {
display: none;
}
window[chromehidden~="extrachrome"] .chromeclass-extrachrome {
display: none;
}
/* ::::: urlbar autocomplete ::::: */
.autocomplete-result-popup[for="urlbar"] {
-moz-binding: url("chrome://navigator/content/urlbarBindings.xml#autocomplete-result-popup") !important;
}
.autocomplete-result {
-moz-binding: url("chrome://navigator/content/urlbarBindings.xml#autocomplete-result") !important;
}
.autocomplete-search-box {
-moz-binding: url("chrome://navigator/content/urlbarBindings.xml#autocomplete-search-box");
}
.autocomplete-search-engine {
-moz-binding: url("chrome://navigator/content/urlbarBindings.xml#autocomplete-search-engine");
}
#page-proxy-button[pageproxystate="invalid"] {
visibility: hidden;
}

Просмотреть файл

@ -25,10 +25,12 @@
const nsIWebNavigation = Components.interfaces.nsIWebNavigation;
var gURLBar = null;
var gProxyButton = null;
var gNavigatorBundle;
var gBrandBundle;
var gNavigatorRegionBundle;
var gBrandRegionBundle;
var gLastValidURL = "";
var pref = Components.classes["@mozilla.org/preferences;1"]
.getService(Components.interfaces.nsIPref);
@ -223,6 +225,8 @@ function Startup()
gBrowser = document.getElementById("content");
gURLBar = document.getElementById("urlbar");
SetPageProxyState("invalid");
var webNavigation;
try {
@ -1214,20 +1218,19 @@ function getNewThemes()
loadURI(gBrandRegionBundle.getString("getNewThemesURL"));
}
function URLBarLeftClickHandler(aEvent)
function URLBarMouseupHandler(aEvent)
{
if (pref.GetBoolPref("browser.urlbar.clickSelectsAll")) {
var URLBar = aEvent.target;
URLBar.setSelectionRange(0, URLBar.value.length);
if (aEvent.button == 0 && pref.GetBoolPref("browser.urlbar.clickSelectsAll")) {
var selectionLen = gURLBar.selectionEnd - gURLBar.selectionStart;
if (selectionLen == 0)
gURLBar.setSelectionRange(0, gURLBar.textLength);
}
}
function URLBarBlurHandler(aEvent)
{
if (pref.GetBoolPref("browser.urlbar.clickSelectsAll")) {
var URLBar = aEvent.target;
URLBar.setSelectionRange(0, 0);
}
if (pref.GetBoolPref("browser.urlbar.clickSelectsAll"))
gURLBar.setSelectionRange(0, 0);
}
// This function gets the "windows hooks" service and has it check its setting
@ -1258,23 +1261,64 @@ function ShowAndSelectContentsOfURLBar()
// If "ESC" is pressed in the url bar, we replace the urlbar's value with the url of the page
// and highlight it, unless it is about:blank, where we reset it to "".
function resetURLBar()
function handleURLBarRevert()
{
var url = _content.location.href;
var throbberElement = document.getElementById("navigator-throbber");
if (!throbberElement.getAttribute("busy")){
if (url != "about:blank"){
var isScrolling = gURLBar.userAction == "scrolling";
// don't revert to last valid url unless page is NOT loading
// and user is NOT key-scrolling through autocomplete list
if (!throbberElement.getAttribute("busy") && !isScrolling) {
if (url != "about:blank") {
gURLBar.value = url;
gURLBar.select();
} else { //if about:blank, urlbar becomes ""
gURLBar.value = "";
}
SetPageProxyState("valid");
}
// tell widget to revert to last typed text only if the user
// was scrolling when they hit escape
return isScrolling;
}
function handleURLBarKeyPress(event)
function handleURLBarCommand(aUserAction)
{
if (event.keyCode == KeyEvent.DOM_VK_RETURN) { addToUrlbarHistory(); BrowserLoadURL(); }
else if (event.keyCode == KeyEvent.DOM_VK_ESCAPE) { resetURLBar(); }
if (aUserAction == "typing")
addToUrlbarHistory();
BrowserLoadURL();
}
function UpdatePageProxyState()
{
if (gURLBar.value != gLastValidURL)
SetPageProxyState("invalid");
}
function SetPageProxyState(aState)
{
if (!gProxyButton)
gProxyButton = document.getElementById("page-proxy-button");
gProxyButton.setAttribute("pageproxystate", aState);
if (aState == "valid") {
gLastValidURL = gURLBar.value;
gURLBar.addEventListener("input", UpdatePageProxyState, false);
} else if (aState == "invalid")
gURLBar.removeEventListener("input", UpdatePageProxyState, false);
}
function PageProxyDragGesture(aEvent)
{
if (gProxyButton.getAttribute("pageproxystate") == "valid")
nsDragAndDrop.startDrag(aEvent, proxyIconDNDObserver);
else
return false;
}

Просмотреть файл

@ -150,21 +150,24 @@ Contributor(s): ______________________________________. -->
<hbox id="nav-bar-inner" flex="1">
<hbox id="urlbar-group" class="box-toolbar-group chromeclass-location" flex="1">
<hbox autostretch="never" valign="middle" flex="1" id="urlbar-container">
<image id="page-proxy-button" ondraggesture="nsDragAndDrop.startDrag(event, proxyIconDNDObserver);"/>
<textbox autocomplete="true" timeout="300" class="plain"
searchSessionType="urlbar" id="urlbar" tooltip="aTooltip" tooltiptext="&locationBar.tooltip;"
onclick="if (event.button == 0) URLBarLeftClickHandler(event);"
onblur="URLBarBlurHandler(event);"
onkeypress="handleURLBarKeyPress(event);" flex="1"/>
onkeypress="if (event.keyCode == 13) { addToUrlbarHistory(); BrowserLoadURL(); }" flex="1"/>
<hbox flex="1" id="urlbar-container">
<textbox id="urlbar" class="plain" flex="1"
type="autocomplete" searchSessions="history"
timeout="50" maxrows="6" alwaysOpenPopup="true"
defaultSearchEngine="true"
tooltip="aTooltip" tooltiptext="&locationBar.tooltip;"
ontextcommand="return handleURLBarCommand(userAction);"
ontextrevert="return handleURLBarRevert();"
onmouseup="URLBarMouseupHandler(event);"
onblur="URLBarBlurHandler(event);">
<image id="page-proxy-button" allowevents="true"
ondraggesture="PageProxyDragGesture(event);"/>
<menupopup id="ubhist-popup" class="autocomplete-history-popup"
popupalign="topleft" popupanchor="bottomleft"
oncreate="createUBHistoryMenu(event.target);"
oncommand="executeUrlBarHistoryCommand(event.target);"/>
</textbox>
</hbox>
<menubutton class="menubutton-icon" id="ubhist">
<menupopup id="ubhist-popup" popupalign="topright" popupanchor="bottomright"
oncreate="createUBHistoryMenu(event.target);" oncommand="executeUrlBarHistoryCommand(event.target);">
</menupopup>
</menubutton>
</hbox>
<button class="button-toolbar-3 chromeclass-location" id="go-button" persist="hidden" hidden="true" label="&goButton.label;" oncommand="addToUrlbarHistory(); BrowserLoadURL();"
@ -183,7 +186,7 @@ Contributor(s): ______________________________________. -->
</menupopup>
</menubutton>
<hbox autostretch="never">
<hbox id="throbber-box" autostretch="never">
<button id="navigator-throbber" oncommand="goClickThrobber('browser.throbber.url')" tooltip="aTooltip" tooltiptext="&throbber.tooltip;"/>
</hbox>
</toolbar>

Просмотреть файл

@ -242,7 +242,8 @@ nsBrowserStatusHandler.prototype =
// We should probably not do this if the value has changed since the user
// searched
this.urlBar.value = location;
SetPageProxyState("valid");
UpdateBackForwardButtons();
},

Просмотреть файл

@ -0,0 +1,351 @@
<?xml version="1.0"?>
<bindings id="urlbarBindings"
xmlns="http://www.mozilla.org/xbl"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="autocomplete-result-popup" extends="chrome://global/content/autocomplete.xml#autocomplete-result-popup">
<content menugenerated="true">
<xul:box class="autocomplete-result-box" flex="1">
<xul:outliner anonid="outliner" class="autocomplete-outliner" flex="1">
<xul:outlinerbody anonid="outlinerbody" class="autocomplete-outlinerbody" flex="1"/>
</xul:outliner>
</xul:box>
<xul:box role="search-box" class="autocomplete-search-box"/>
</content>
<implementation>
<constructor><![CDATA[
// listen for changes to default search engine
this.mPrefs.addObserver("browser.search", this.mSearchPrefObserver);
]]></constructor>
<destructor><![CDATA[
this.mPrefs.removeObserver("browser.search", this.mSearchPrefObserver);
]]></destructor>
<property name="selectedIndex"
onget="return this.textbox.view.selectedIndex;">
<setter>
this.mSelectedIndex = val;
if (val == null)
this.mSearchBox.selectedIndex = null;
return val;
</setter>
</property>
<property name="mSelectedIndex">
<setter>
this.textbox.view.selectedIndex = val;
return val;
</setter>
</property>
<property name="defaultSearchEngine"
onget="return this.textbox.getAttribute('defaultSearchEngine') == 'true';"
onset="this.textbox.setAttribute('defaultSearchEngine', val); return val;"/>
<property name="mSearchBox">
document.getAnonymousElementByAttribute(this, "role", "search-box");
</property>
<property name="mPrefs">
Components.classes["@mozilla.org/preferences;1"].getService(Components.interfaces.nsIPref);
</property>
<property name="mSearchPrefObserver"><![CDATA[
({
resultsPopup: this,
Observe: function() {
this.resultsPopup.updateEngines();
}
});
]]></property>
<property name="mInputListener"><![CDATA[
(function(aEvent) {
// don't update when the user is using the up/down keys
if (!this.ignoreInputEvent)
this.resultsPopup.mSearchBox.searchValue = this.value;
});
]]></property>
<property name="mEnginesReady">false</property>
<!-- initialize the columns in the outliner -->
<method name="initColumns">
<body><![CDATA[
this.addColumn({id: "value", flex: 2});
this.addColumn({id: "comment", flex: 1});
]]></body>
</method>
<method name="getOverrideValue">
<body><![CDATA[
if (this.mSearchBox.selectedIndex != null)
return this.mSearchBox.getOverrideValue();
return null;
]]></body>
</method>
<method name="addEngine">
<parameter name="aEngineId"/>
<parameter name="aName"/>
<parameter name="aIcon"/>
<body><![CDATA[
var box = document.createElement("box");
box.setAttribute("class", "autocomplete-search-engine");
box.setAttribute("searchEngine", aEngineId);
box.setAttribute("name", aName);
box.setAttribute("icon", aIcon);
box.engineIndex = this.childNodes.length;
this.mSearchBox.appendChild(box);
]]></body>
</method>
<method name="clearEngines">
<body><![CDATA[
var kids = this.mSearchBox.childNodes;
for (var i = kids.length-1; i >= 0; --i)
this.mSearchBox.removeChild(kids[i]);
]]></body>
</method>
<method name="updateEngines">
<body><![CDATA[
var rdf = Components.classes["@mozilla.org/rdf/rdf-service;1"]
.getService(Components.interfaces.nsIRDFService);
var ds = rdf.GetDataSource("rdf:internetsearch");
const kNC_Name = rdf.GetResource("http://home.netscape.com/NC-rdf#Name");
const kNC_Icon = rdf.GetResource("http://home.netscape.com/NC-rdf#Icon");
var defaultEngine = null;
try {
defaultEngine = this.mPrefs.CopyUnicharPref("browser.search.defaultengine");
} catch(ex) {
this.ensureDefaultEnginePrefs(rdf, ds);
defaultEngine = this.mPrefs.CopyUnicharPref("browser.search.defaultengine");
}
if (defaultEngine) {
this.clearEngines();
if (ds) {
var res = rdf.GetResource(defaultEngine);
this.addEngine(res.Value,
this.readRDFString(ds, res, kNC_Name),
this.readRDFString(ds, res, kNC_Icon));
}
}
this.mEnginesReady = true;
]]></body>
</method>
<method name="ensureDefaultEnginePrefs">
<parameter name="aRDF"/>
<parameter name="aDS"/>
<body><![CDATA[
var defaultName = this.mPrefs.getLocalizedUnicharPref("browser.search.defaultenginename");
const kNC_Root = aRDF.GetResource("NC:SearchEngineRoot");
const kNC_child = aRDF.GetResource("http://home.netscape.com/NC-rdf#child");
const kNC_Name = aRDF.GetResource("http://home.netscape.com/NC-rdf#Name");
var arcs = aDS.GetTargets(kNC_Root, kNC_child, true);
while (arcs.hasMoreElements()) {
var engineRes = arcs.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
var name = this.readRDFString(aDS, engineRes, kNC_Name);
if (name == defaultName)
this.mPrefs.SetUnicharPref("browser.search.defaultengine", engineRes.Value);
}
]]></body>
</method>
<method name="readRDFString">
<parameter name="aDS"/>
<parameter name="aRes"/>
<parameter name="aProp"/>
<body><![CDATA[
var n = aDS.GetTarget(aRes, aProp, true);
if (n)
return n.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
]]></body>
</method>
<method name="selectBy">
<parameter name="aDir"/>
<parameter name="aAmount"/>
<body><![CDATA[
var bx = this.outliner.outlinerBoxObject;
var view = bx.view;
if (this.selectedIndex == null && aDir < 0) {
var sel = this.mSearchBox.selectBy(aDir, aAmount);
if (sel != null)
return null;
}
var sel = this.getNextIndex(aDir, aAmount, this.selectedIndex, view.rowCount-1);
this.mSelectedIndex = sel;
if (sel == null && aDir > 0)
this.mSearchBox.selectBy(aDir, aAmount);
else if (this.mSearchBox.selectedIndex != null)
this.mSearchBox.selectedIndex = null;
return sel;
]]></body>
</method>
</implementation>
<handlers>
<handler event="create"><![CDATA[
if (!this.mEnginesReady && this.defaultSearchEngine)
this.updateEngines();
this.textbox.addEventListener("input", this.mInputListener, false);
if ("searchValue" in this.mSearchBox)
this.mSearchBox.searchValue = this.textbox.value;
else
this.mSearchBox.setAttribute("searchvalue", this.textbox.value);
]]></handler>
<handler event="destroy"><![CDATA[
this.textbox.removeEventListener("input", this.mInputListener, false);
]]></handler>
</handlers>
</binding>
<binding id="autocomplete-search-box">
<content orient="vertical"/>
<implementation>
<constructor><![CDATA[
var text = this.getAttribute("searchvalue");
if (text)
this.searchValue = text;
this.mSelectedIndex = null;
]]></constructor>
<property name="parentMouseoverListener">
// ensure that if a result menuitem is moused-over, any
// search selection is cleared
(function(aEvent) {
if (aEvent.target.nodeName == "menuitem")
this.mSearchBox.selectedIndex = null;
})
</property>
<property name="parentDestroyListener">
// ensure that if the popup closes, any search selection is cleared
(function(aEvent) {
this.mSearchBox.selectedIndex = null;
})
</property>
<property name="activeChild"
onget="return this.childNodes[this.mSelectedIndex]"/>
<property name="selectedIndex">
<getter>return this.mSelectedIndex;</getter>
<setter><![CDATA[
if (this.mSelectedIndex != null)
this.activeChild.removeAttribute("menuactive");
this.mSelectedIndex = val;
if (val != null) {
this.parentNode.mSelectedIndex = null;
this.parentNode.addEventListener("mouseover", this.parentMouseoverListener, false);
this.parentNode.addEventListener("destroy", this.parentDestroyListener, false);
if (this.activeChild)
this.activeChild.setAttribute("menuactive", "true");
} else {
this.parentNode.removeEventListener("mouseover", this.parentMouseoverListener, false);
this.parentNode.removeEventListener("destroy", this.parentDestroyListener, false);
}
]]></setter>
</property>
<property name="searchValue">
<getter><![CDATA[
return this.mSearchValue;
]]></getter>
<setter><![CDATA[
this.mSearchValue = val;
var kids = this.childNodes;
for (var i = 0; i < kids.length; ++i) {
var name = kids[i].getAttribute("name");
kids[i].setAttribute("label", "Search " + name + " for \"" + val + "\"");
}
]]></setter>
</property>
<method name="selectBy">
<parameter name="aDir"/>
<parameter name="aAmount"/>
<body><![CDATA[
var sel = this.parentNode.getNextIndex(aDir, aAmount, this.selectedIndex, this.childNodes.length-1);
this.selectedIndex = sel;
return sel;
]]></body>
</method>
<method name="getOverrideValue">
<body><![CDATA[
var item = this.activeChild;
if (item) {
const ISEARCH_CONTRACTID = "@mozilla.org/rdf/datasource;1?name=internetsearch";
const nsIInternetSearchService = Components.interfaces.nsIInternetSearchService;
var searchService = Components.classes[ISEARCH_CONTRACTID].getService(nsIInternetSearchService);
return searchService.GetInternetSearchURL(item.getAttribute("searchEngine"),
escape(this.mSearchValue));
}
return null;
]]></body>
</method>
</implementation>
<handlers>
<handler event="mouseup">
this.parentNode.textbox.onResultClick();
</handler>
</handlers>
</binding>
<binding id="autocomplete-search-engine">
<content>
<xul:image class="autocomplete-search-engine-img" inherits="src=icon"/>
<xul:text class="autocomplete-search-engine-text" inherits="value=label"/>
</content>
<handlers>
<handler event="mouseover">
this.parentNode.selectedIndex = this.engineIndex;
</handler>
<handler event="mouseout">
this.parentNode.selectedIndex = null;
</handler>
</handlers>
</binding>
<binding id="autocomplete-result" extends="chrome://global/content/xulBindings.xml#menuitem">
<content>
<xul:text class="menu-text autocomplete-page-url" inherits="value=label" flex="2" crop="right"/>
<xul:text class="autocomplete-page-title" inherits="value=comment" flex="1" crop="right"/>
</content>
</binding>
</bindings>

Просмотреть файл

@ -146,3 +146,9 @@ function onChooseFile()
}
doEnabling();
}
function useUBHistoryItem(aMenuItem)
{
var urlbar = document.getElementById("dialog.input");
urlbar.value = aMenuItem.getAttribute("label");
}

Просмотреть файл

@ -25,7 +25,7 @@
-->
<?xml-stylesheet href="chrome://navigator/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
<?xul-overlay href="chrome://global/content/dialogOverlay.xul"?>
<!DOCTYPE window [
@ -49,9 +49,11 @@
<script type="application/x-javascript" src="chrome://global/content/globalOverlay.js"/>
<script type="application/x-javascript" src="chrome://communicator/content/openLocation.js"/>
<script type="application/x-javascript" src="chrome://communicator/content/utilityOverlay.js"/>
<script type="application/x-javascript" src="chrome://navigator/content/sessionHistoryUI.js"/>
<stringbundle id="openLocationBundle" src="chrome://communicator/locale/openLocation.properties"/>
<keyset id="dialogKeys"/>
<box>
<box orient="vertical">
<image class="question-icon"/>
@ -63,8 +65,15 @@
<separator class="thin"/>
<box autostretch="never">
<textbox id="dialog.input" flex="1" oninput="doEnabling();"/>
<button label="&chooseFile.label;" oncommand="onChooseFile();"/>
<textbox id="dialog.input" flex="1" type="autocomplete"
searchSessions="history" timeout="50" maxrows="6"
oninput="doEnabling();">
<menupopup id="ubhist-popup" class="autocomplete-history-popup"
popupalign="topleft" popupanchor="bottomleft"
oncreate="createUBHistoryMenu(event.target);"
oncommand="useUBHistoryItem(event.target)"/>
</textbox>
<button label="&chooseFile.label;" onclick="onChooseFile();"/>
</box>
<box autostretch="never" valign="center">
<text class="label" value="&openWhere.label;"/>

Просмотреть файл

@ -0,0 +1,8 @@
.outliner-scrollbar[hidescrollbar="true"] {
visibility: collapse;
}
.autocomplete-history-box {
overflow: auto;
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -113,6 +113,8 @@ static nsModuleComponentInfo components[] = {
nsGlobalHistoryConstructor },
{ "Global History", NS_GLOBALHISTORY_CID, NS_GLOBALHISTORY_DATASOURCE_CONTRACTID,
nsGlobalHistoryConstructor },
{ "Global History", NS_GLOBALHISTORY_CID, NS_GLOBALHISTORY_AUTOCOMPLETE_CONTRACTID,
nsGlobalHistoryConstructor },
{ "Local Search", NS_RDFFINDDATASOURCE_CID,
NS_LOCALSEARCH_SERVICE_CONTRACTID, LocalSearchDataSourceConstructor },
{ "Local Search", NS_RDFFINDDATASOURCE_CID,

Просмотреть файл

@ -63,3 +63,10 @@ interface nsIBrowserHistory : nsISupports
readonly attribute string lastPageVisited;
};
%{ C++
#define NS_GLOBALHISTORY_AUTOCOMPLETE_CONTRACTID \
"@mozilla.org/autocompleteSession;1?type=history"
%}

Просмотреть файл

@ -22,6 +22,7 @@
*
* Contributor(s):
* Pierre Phaneuf <pp@ludusdesign.com>
* Joe Hewitt <hewitt@netscape.com>
*/
/*
@ -52,6 +53,7 @@
#include "prprf.h"
#include "prtime.h"
#include "rdf.h"
#include "nsQuickSort.h"
#include "nsIURL.h"
#include "nsNetCID.h"
@ -79,9 +81,9 @@ nsIRDFResource* nsGlobalHistory::kNC_URL;
nsIRDFResource* nsGlobalHistory::kNC_HistoryRoot;
nsIRDFResource* nsGlobalHistory::kNC_HistoryByDate;
#define PREF_BROWSER_HISTORY_LAST_PAGE_VISITED "browser.history.last_page_visited"
#define PREF_BROWSER_HISTORY_EXPIRE_DAYS "browser.history_expire_days"
#define PREF_AUTOCOMPLETE_ENABLED "browser.urlbar.autocomplete.enabled"
#define FIND_BY_AGEINDAYS_PREFIX "find:datasource=history&match=AgeInDays&method="
@ -457,6 +459,15 @@ nsGlobalHistory::nsGlobalHistory()
{
NS_INIT_REFCNT();
LL_I2L(mFileSizeOnDisk, 0);
// commonly used prefixes that should be chopped off all
// history and input urls before comparison
mIgnorePrefixes = new nsVoidArray(5);
mIgnorePrefixes->ReplaceElementAt((void*)new NS_LITERAL_STRING("http://www."), 0);
mIgnorePrefixes->ReplaceElementAt((void*)new NS_LITERAL_STRING("http://"), 1);
mIgnorePrefixes->ReplaceElementAt((void*)new NS_LITERAL_STRING("www."), 2);
mIgnorePrefixes->ReplaceElementAt((void*)new NS_LITERAL_STRING("https://www."), 3);
mIgnorePrefixes->ReplaceElementAt((void*)new NS_LITERAL_STRING("https://"), 4);
}
nsGlobalHistory::~nsGlobalHistory()
@ -492,6 +503,11 @@ nsGlobalHistory::~nsGlobalHistory()
if (mExpireNowTimer)
mExpireNowTimer->Cancel();
for(PRInt32 i = 0; i < mIgnorePrefixes->Count(); ++i) {
nsLocalString* entry = (nsLocalString*) mIgnorePrefixes->ElementAt(i);
delete entry;
}
}
@ -502,13 +518,14 @@ nsGlobalHistory::~nsGlobalHistory()
//
// nsISupports methods
NS_IMPL_ISUPPORTS6(nsGlobalHistory,
NS_IMPL_ISUPPORTS7(nsGlobalHistory,
nsIGlobalHistory,
nsIBrowserHistory,
nsIObserver,
nsISupportsWeakReference,
nsIRDFDataSource,
nsIRDFRemoteDataSource)
nsIRDFRemoteDataSource,
nsIAutoCompleteSession)
//----------------------------------------------------------------------
//
@ -3388,3 +3405,302 @@ nsGlobalHistory::SearchEnumerator::ConvertToISupports(nsIMdbRow* aRow,
NS_ADDREF(*aResult);
return NS_OK;
}
//----------------------------------------------------------------------
//
// nsGlobalHistory::AutoCompleteEnumerator
//
// Implementation
nsGlobalHistory::AutoCompleteEnumerator::~AutoCompleteEnumerator()
{
}
PRBool
nsGlobalHistory::AutoCompleteEnumerator::IsResult(nsIMdbRow* aRow)
{
nsCString url;
mHistory->GetRowValue(aRow, mURLColumn, url);
nsString url2;
url2.AssignWithConversion(url);
PRBool result = mHistory->AutoCompleteCompare(url2, mSelectValue);
return result;
}
nsresult
nsGlobalHistory::AutoCompleteEnumerator::ConvertToISupports(nsIMdbRow* aRow, nsISupports** aResult)
{
nsCString url;
mHistory->GetRowValue(aRow, mURLColumn, url);
nsAutoString comments;
mHistory->GetRowValue(aRow, mCommentColumn, comments);
nsCOMPtr<nsIAutoCompleteItem> newItem(do_CreateInstance(NS_AUTOCOMPLETEITEM_CONTRACTID));
NS_ENSURE_TRUE(newItem, NS_ERROR_FAILURE);
PRUnichar* urlstr = url.ToNewUnicode();
newItem->SetValue(urlstr);
nsMemory::Free(urlstr);
newItem->SetComment(comments.get());
*aResult = newItem;
NS_ADDREF(*aResult);
return NS_OK;
}
//----------------------------------------------------------------------
//
// nsIAutoCompleteSession implementation
//
NS_IMETHODIMP
nsGlobalHistory::OnStartLookup(const PRUnichar *searchString,
nsIAutoCompleteResults *previousSearchResult,
nsIAutoCompleteListener *listener)
{
NS_ASSERTION(searchString, "searchString can't be null, fix your caller");
if (!listener)
return NS_ERROR_NULL_POINTER;
nsresult rv = NS_OK;
NS_WITH_SERVICE(nsIPref, prefs, kPrefCID, &rv);
if (NS_FAILED(rv)) return rv;
PRBool enabled = PR_FALSE;
prefs->GetBoolPref(PREF_AUTOCOMPLETE_ENABLED, &enabled);
if (!enabled || searchString[0] == 0) {
listener->OnAutoComplete(nsnull, nsIAutoCompleteStatus::ignored);
return NS_OK;
}
nsCOMPtr<nsIAutoCompleteResults> results;
results = do_CreateInstance(NS_AUTOCOMPLETERESULTS_CONTRACTID, &rv);
if (NS_FAILED(rv)) return rv;
AutoCompleteStatus status = nsIAutoCompleteStatus::failed;
// pass user input through filter before search
nsCommonString filtered = AutoCompletePrefilter(nsLocalString (searchString));
if (filtered.Length() == 0) {
listener->OnAutoComplete(results, status);
return NS_OK;
}
// perform the actual search here
rv = AutoCompleteSearch(filtered, previousSearchResult, results);
// describe the search results
if (NS_SUCCEEDED(rv)) {
PRBool addedDefaultItem = PR_FALSE;
results->SetSearchString(searchString);
results->SetDefaultItemIndex(-1);
// determine if we have found any matches or not
nsCOMPtr<nsISupportsArray> array;
rv = results->GetItems(getter_AddRefs(array));
if (NS_SUCCEEDED(rv)) {
PRUint32 nbrOfItems;
rv = array->Count(&nbrOfItems);
if (NS_SUCCEEDED(rv)) {
if (nbrOfItems >= 1) {
status = nsIAutoCompleteStatus::matchFound;
} else {
status = nsIAutoCompleteStatus::noMatch;
}
}
}
// notify the listener
listener->OnAutoComplete(results, status);
}
return NS_OK;
}
NS_IMETHODIMP
nsGlobalHistory::OnStopLookup()
{
return NS_OK;
}
NS_IMETHODIMP
nsGlobalHistory::OnAutoComplete(const PRUnichar *searchString,
nsIAutoCompleteResults *previousSearchResult,
nsIAutoCompleteListener *listener)
{
return NS_OK;
}
//----------------------------------------------------------------------
//
// AutoComplete stuff
//
nsresult
nsGlobalHistory::AutoCompleteSearch(const nsAReadableString& aSearchString,
nsIAutoCompleteResults* aPrevResults,
nsIAutoCompleteResults* aResults)
{
// determine if we can skip searching the whole history and only search
// through the previous search results
PRBool searchPrevious = PR_FALSE;
if (aPrevResults) {
nsXPIDLString prevURL;
aPrevResults->GetSearchString(getter_Copies(prevURL));
nsLocalString prevURLStr(prevURL);
// if search string begins with the previous search string, it's a go
searchPrevious = Substring(aSearchString, 0, prevURLStr.Length()).Equals(prevURLStr);
}
nsCOMPtr<nsISupportsArray> resultItems;
nsresult rv = aResults->GetItems(getter_AddRefs(resultItems));
if (searchPrevious) {
// searching through the previous results...
nsCOMPtr<nsISupportsArray> prevResultItems;
aPrevResults->GetItems(getter_AddRefs(prevResultItems));
PRUint32 count;
prevResultItems->Count(&count);
for (PRUint32 i = 0; i < count; ++i) {
nsCOMPtr<nsIAutoCompleteItem> item;
prevResultItems->GetElementAt(i, getter_AddRefs(item));
nsXPIDLString url;
item->GetValue(getter_Copies(url));
nsLocalString urlstr(url);
if (AutoCompleteCompare(urlstr, aSearchString))
resultItems->AppendElement(item);
}
} else {
// searching through the entire history...
// prepare the search enumerator
AutoCompleteEnumerator* enumerator;
enumerator = new AutoCompleteEnumerator(this, kToken_URLColumn,
kToken_NameColumn, aSearchString);
rv = enumerator->Init(mEnv, mTable);
if (NS_FAILED(rv)) return rv;
// store hits in an auto array initially
nsAutoVoidArray array;
nsISupports* entry; // not using nsCOMPtr here to avoid time spent refcounting
// while passing these around between the 3 arrays
// step through the enumerator
PRBool hasMore;
while (true) {
enumerator->HasMoreElements(&hasMore);
if (!hasMore) break;
enumerator->GetNext(&entry);
array.AppendElement(entry);
}
// turn auto array into flat array for quick sort
PRUint32 count = array.Count();
nsIAutoCompleteItem** items = new nsIAutoCompleteItem*[count];
PRUint32 i;
for (i = 0; i < count; ++i)
items[i] = (nsIAutoCompleteItem*)array.ElementAt(i);
// sort it
NS_QuickSort(items, count, sizeof(nsIAutoCompleteItem*), AutoCompleteSortComparison, nsnull);
// place the sorted array into the autocomplete results
for (i = 0; i < count; ++i) {
nsISupports* item = (nsISupports*)items[i];
resultItems->AppendElement(item);
NS_IF_RELEASE(item); // release manually since we didn't use nsCOMPtr above
}
delete[] items;
}
return NS_OK;
}
void
nsGlobalHistory::AutoCompleteCutPrefix(nsAWritableString& aURL)
{
// This comparison is case-sensitive. Therefore, it assumes that aUserURL is a
// potential URL whose host name is in all lower case.
PRInt32 idx = 0;
for (PRInt32 i = 0; i < mIgnorePrefixes->Count(); ++i) {
nsString* string = (nsString*) mIgnorePrefixes->ElementAt(i);
if (Substring(aURL, 0, string->Length()).Equals(*string)) {
idx = string->Length();
break;
}
}
if (idx)
aURL.Cut(0, idx);
}
nsCommonString
nsGlobalHistory::AutoCompletePrefilter(const nsAReadableString& aSearchString)
{
// XXX using nsAutoString here only because nsAString's Cut method doesn't work
// and it hasn't implemented ToLowerCase yet
nsAutoString url(aSearchString);
AutoCompleteCutPrefix(url);
PRInt32 slash = url.FindChar('/', 0);
if (slash >= 0) {
// if user is typing a url but has already typed past the host,
// then convert the host to lowercase
nsAutoString host;
url.Left(host, slash);
host.ToLowerCase();
url.Assign(host + Substring(url, slash, url.Length()-slash));
} else {
// otherwise, assume the user could still be typing the host, and
// convert everything to lowercase
url.ToLowerCase();
}
return url;
}
PRBool
nsGlobalHistory::AutoCompleteCompare(nsAString& aHistoryURL, const nsAReadableString& aUserURL)
{
AutoCompleteCutPrefix(aHistoryURL);
return Substring(aHistoryURL, 0, aUserURL.Length()).Equals(aUserURL);
}
int PR_CALLBACK
AutoCompleteSortComparison(const void *v1, const void *v2, void *unused)
{
nsIAutoCompleteItem *item1 = *(nsIAutoCompleteItem**) v1;
nsIAutoCompleteItem *item2 = *(nsIAutoCompleteItem**) v2;
nsXPIDLString s1;
item1->GetValue(getter_Copies(s1));
nsXPIDLString s2;
item2->GetValue(getter_Copies(s2));
if (!s1) {
if (!s2)
return 0;
else
return -1;
} else if (!s2) {
return 1;
} else {
return nsCRT::strcmp(s1, s2);
}
}

Просмотреть файл

@ -42,6 +42,7 @@
#include "nsCOMPtr.h"
#include "nsAWritableString.h"
#include "nsITimer.h"
#include "nsIAutoCompleteSession.h"
//----------------------------------------------------------------------
//
@ -98,7 +99,8 @@ class nsGlobalHistory : nsSupportsWeakReference,
public nsIBrowserHistory,
public nsIObserver,
public nsIRDFDataSource,
public nsIRDFRemoteDataSource
public nsIRDFRemoteDataSource,
public nsIAutoCompleteSession
{
public:
// nsISupports methods
@ -109,6 +111,7 @@ public:
NS_DECL_NSIOBSERVER
NS_DECL_NSIRDFDATASOURCE
NS_DECL_NSIRDFREMOTEDATASOURCE
NS_DECL_NSIAUTOCOMPLETESESSION
NS_METHOD Init();
@ -169,6 +172,17 @@ protected:
PRBool RowMatches(nsIMdbRow* aRow, searchQuery *aQuery);
nsresult NotifyFindAssertions(nsIRDFResource *aSource, nsIMdbRow *aRow);
//
// autocomplete stuff
//
nsVoidArray* mIgnorePrefixes;
nsresult AutoCompleteSearch(const nsAReadableString& aSearchString,
nsIAutoCompleteResults* aPrevResults,
nsIAutoCompleteResults* aResults);
void AutoCompleteCutPrefix(nsAWritableString& aURL);
nsCommonString AutoCompletePrefilter(const nsAReadableString& aSearchString);
PRBool AutoCompleteCompare(nsAString& aHistoryURL, const nsAReadableString& aUserURL);
// caching of PR_Now() so we don't call it every time we do
// a history query
@ -332,10 +346,43 @@ protected:
virtual nsresult ConvertToISupports(nsIMdbRow* aRow,
nsISupports** aResult);
PRBool RowMatches(nsIMdbRow* aRow, searchQuery *aQuery);
};
// AutoCompleteEnumerator - for searching for a partial url match
class AutoCompleteEnumerator : public nsMdbTableEnumerator
{
protected:
mdb_column mURLColumn;
mdb_column mCommentColumn;
const nsAReadableString& mSelectValue;
nsGlobalHistory* mHistory;
virtual ~AutoCompleteEnumerator();
public:
AutoCompleteEnumerator(nsGlobalHistory* aHistory,
mdb_column aURLColumn,
mdb_column aCommentColumn,
const nsAReadableString& aSelectValue) :
mHistory(aHistory),
mURLColumn(aURLColumn),
mCommentColumn(aCommentColumn),
mSelectValue(aSelectValue)
{}
protected:
virtual PRBool IsResult(nsIMdbRow* aRow);
virtual nsresult ConvertToISupports(nsIMdbRow* aRow, nsISupports** aResult);
};
friend class URLEnumerator;
friend class SearchEnumerator;
friend class AutoCompleteEnumerator;
};
int PR_CALLBACK
AutoCompleteSortComparison(const void *v1, const void *v2, void *unused);
#endif // nsglobalhistory__h____

Просмотреть файл

@ -167,6 +167,7 @@ toolkit.jar:
content/global/downloadProgress.xul (xfer/resources/downloadProgress.xul)
content/global/downloadProgress.js (xfer/resources/downloadProgress.js)
content/global/autocomplete.xml (autocomplete/resources/content/autocomplete.xml)
content/global/autocomplete.css (autocomplete/resources/content/autocomplete.css)
content/global/filepicker.js (filepicker/res/content/filepicker.js)
content/global/filepicker.xul (filepicker/res/content/filepicker.xul)
content/global/filepicker.css (filepicker/res/content/filepicker.css)

Просмотреть файл

@ -35,6 +35,7 @@
<stringbundle id="bundle_prefutilities" src="chrome://communicator/locale/pref/prefutilities.properties"/>
<script type="application/x-javascript" src="chrome://communicator/content/pref/pref-navigator.js"/>
<script type="application/x-javascript">
<![CDATA[
var _elementIDs = ["startupPage", "browserStartupHomepage",
@ -66,7 +67,8 @@
<html>&homePageIntro.label;</html>
<box autostretch="never">
<text class="label" value="&location.label;" accesskey="&location.accesskey;" for="browserStartupHomepage"/>
<textbox id="browserStartupHomepage" flex="1" wsm_persist="true"
<textbox id="browserStartupHomepage" type="autocomplete" flex="1" wsm_persist="true"
searchSessions="history" timeout="50" maxrows="6"
pref="true" preftype="string" prefstring="browser.startup.homepage"
prefattribute="value"/> <!-- we may wish to change this to data
when we support fancy formatted local filenames -->

Просмотреть файл

@ -536,8 +536,36 @@ text[editable="true"][mode="edit"] {
-moz-binding: url(chrome://global/content/xulBindings.xml#text-editable-edit);
}
textbox[autocomplete="true"] {
-moz-binding: url(chrome://global/content/autocomplete.xml#autocomplete);
textbox[type="autocomplete"] {
-moz-binding: url("chrome://global/content/autocomplete.xml#autocomplete");
}
.autocomplete-internal-box {
-moz-binding: url("chrome://global/content/autocomplete.xml#autocomplete-internal-box");
}
.autocomplete-result-popup {
-moz-binding: url("chrome://global/content/autocomplete.xml#autocomplete-result-popup") !important;
}
.autocomplete-history-popup {
-moz-binding: url("chrome://global/content/autocomplete.xml#autocomplete-history-popup") !important;
}
.autocomplete-outliner {
-moz-binding: url("chrome://global/content/autocomplete.xml#autocomplete-outliner") !important;
}
.autocomplete-outlinerbody {
-moz-binding: url("chrome://global/content/autocomplete.xml#autocomplete-outlinerbody") !important;
}
.autocomplete-outlinerrows {
-moz-binding: url("chrome://global/content/autocomplete.xml#autocomplete-outlinerrows") !important;
}
.autocomplete-outlinercol {
-moz-binding: url("chrome://global/content/autocomplete.xml#autocomplete-outlinercol") !important;
}
colorpicker {