From 3e3431c7a7960a5c4698803ff514b49d49809c7f Mon Sep 17 00:00:00 2001 From: "varada%netscape.com" Date: Fri, 22 Sep 2000 02:51:23 +0000 Subject: [PATCH] fix for bug#28520; keyboard navigation for mail;r=putterman;a=alecf --- .../content/mail3PaneWindowCommands.js | 72 ++++++++++++++++--- .../content/mail3PaneWindowVertLayout.xul | 8 +-- .../resources/content/msgMail3PaneWindow.js | 5 +- 3 files changed, 72 insertions(+), 13 deletions(-) diff --git a/mailnews/base/resources/content/mail3PaneWindowCommands.js b/mailnews/base/resources/content/mail3PaneWindowCommands.js index 0883cf1a277..ecfc8b0cde9 100644 --- a/mailnews/base/resources/content/mail3PaneWindowCommands.js +++ b/mailnews/base/resources/content/mail3PaneWindowCommands.js @@ -17,7 +17,6 @@ * Copyright (C) 1998-2000 Netscape Communications Corporation. All * Rights Reserved. */ - // Controller object for folder pane var FolderPaneController = { @@ -940,14 +939,17 @@ function SetTemplateTreeItemOpen(open) } } +// global variable for the gray_vertical_splitter + var gray_vertical_splitter_exists = false; + function SwitchPaneFocus(event) { + gray_vertical_splitter_exists = document.getElementById("gray_vertical_splitter"); var focusedElement; var focusedElementId; - +//The first if statement is a check for the Shift+Tab -the else statement is for Tab if (event && (event.shiftKey)) { - dump("Inside the SwitchPaneFocus \n"); focusedElement = document.commandDispatcher.focusedElement; focusedElementId=""; @@ -959,9 +961,29 @@ function SwitchPaneFocus(event) { focusedElementId = focusedElement.getAttribute('id'); if(focusedElementId == "threadTree") - SetFocusFolderPane(); + { + if (gray_vertical_splitter_exists) + { + if (!(is_folderpane_collapsed())) + SetFocusFolderPane(); + else if(!(IsThreadAndMessagePaneSplitterCollapsed())) + SetFocusMessagePane(); + } + else + { + if (!(sidebar_is_collapsed())) + SetFocusFolderPane(); + else if(!(IsThreadAndMessagePaneSplitterCollapsed())) + SetFocusMessagePane(); + } + } else if(focusedElementId == "folderTree") - SetFocusMessagePane(); + { + if (!(IsThreadAndMessagePaneSplitterCollapsed())) + SetFocusMessagePane(); + else + SetFocusThreadPane(); + } } catch(e) { @@ -971,19 +993,44 @@ function SwitchPaneFocus(event) } else { - dump("Inside the SwitchPaneFocus \n"); focusedElement = document.commandDispatcher.focusedElement; focusedElementId=""; if ( MessagePaneHasFocus() ) - SetFocusFolderPane(); + { + if (gray_vertical_splitter_exists) + { + if (!(is_folderpane_collapsed())) + SetFocusFolderPane(); + else + SetFocusThreadPane(); + } + else + { + if (!(sidebar_is_collapsed())) + SetFocusFolderPane(); + else + SetFocusThreadPane(); + } + } else { try { focusedElementId = focusedElement.getAttribute('id'); if(focusedElementId == "threadTree") - SetFocusMessagePane(); + { + if (!(IsThreadAndMessagePaneSplitterCollapsed())) + SetFocusMessagePane(); + else if (gray_vertical_splitter_exists) + { + if (!(is_folderpane_collapsed())) + SetFocusFolderPane(); + } + else if (!(sidebar_is_collapsed())) + SetFocusFolderPane(); + + } else if(focusedElementId == "folderTree") SetFocusThreadPane(); } @@ -1014,3 +1061,12 @@ function SetFocusMessagePane() return; } +function is_folderpane_collapsed() +{ + if (gray_vertical_splitter_exists) + { + return (gray_vertical_splitter_exists.getAttribute('state') == 'collapsed'); + } + return false; +} + diff --git a/mailnews/base/resources/content/mail3PaneWindowVertLayout.xul b/mailnews/base/resources/content/mail3PaneWindowVertLayout.xul index 3c4e004d461..f58329e7bf4 100644 --- a/mailnews/base/resources/content/mail3PaneWindowVertLayout.xul +++ b/mailnews/base/resources/content/mail3PaneWindowVertLayout.xul @@ -126,10 +126,10 @@ Rights Reserved. - + - - + + - + diff --git a/mailnews/base/resources/content/msgMail3PaneWindow.js b/mailnews/base/resources/content/msgMail3PaneWindow.js index 6ec2b49b34a..ae21a47a742 100644 --- a/mailnews/base/resources/content/msgMail3PaneWindow.js +++ b/mailnews/base/resources/content/msgMail3PaneWindow.js @@ -283,6 +283,9 @@ function OnLoadMessenger() gHaveLoadedMessage = false; + //Set focus to the Thread Pane the first time the window is opened. + SetFocusThreadPane(); + var afterLoadMessenger = new Date(); var timeToLoad = (afterLoadMessenger.getTime() - beforeLoadMessenger.getTime())/1000; @@ -290,7 +293,7 @@ function OnLoadMessenger() { dump("Time in OnLoadMessger is " + timeToLoad + " seconds\n"); } - + } function OnUnloadMessenger()