Bookshelf 5.3 release notes for Windows

What's new in Bookshelf 5.3 (Windows)

(also applies to the CourseSmart and Evolve eBooks release)

Accessibility
- Section 508 (1194.21 and 1194.31) compliant
- Support for JAWS, NVDA
- Support for <alt> tags
- Support for english natural language description of MathML markup
- Windows High Contrast mode support
- Windows custom text size (DPI) support
- Improved keyboard navigation

Localized in 17 languages
- English, British English, French (France), Canadian French, Italian, German, Spanish (Spain), Central American Spanish, Portuguese (Portugal), Brazilian Portuguese, Polish, Dutch, Swedish, Danish, Norwegian, Finnish, and Russian.

Reference & Dictionary Changes
- Quick Reference window
- Book viewer enhancements

Notes & Highlights
- Faster note syncing
- More responsive UI with large numbers of notes and highlights

Navigation enhancements
- Improved next / previous page buttons in PDF
- Next / previous chapter buttons with keyboard shortcuts
- chapter navigation popup
- Section level data shown as a chapter instead of in the book root

Usability
- Book list update check
- Content update check
- Account menu
- Help menu now redirects to the new support knowledge base
- Improved welcome sign-in screen

Numerous bug fixes and general interface improvements

Full list of changes:

* Show VBID and publication date in the book info and tooltip window.
* Memory management improvements.
* Use an alternate method to convert GDI+ bitmaps to a WPF bitmap source. This is used in all the views that use a GDI+ temporary image and delegate drawing to xplat code.
* Adjusted a few font sizes to be based on points instead of pixels.
* Check for bad values for the update license book list url
* Fix the IsSelected property of the inside book items so that it provides change notification.
* Use anti-aliased text for tool tips on Windows.
* Draw background in xplat code and use anti-aliased text for xplat drawn items.
* Use the default window color for the background for the Welcome, Activate Content, Pick List and Registration pages.
* Sections are now treated as chapters. Each section shows its children in outline form, as does the root. This is done so that the sections don't "land" in the root. The book representation then becomes a list of chapters in-order, with no content out-of-order back in the book root.
* Default the background and foreground colors of the search control to match window background and window text foreground.
* Improved tab behavior for the Bookshelf window. The menu is not part of the default tab cycle. However, the arrow keys can be used once the menu bar has focus to navigate to other main menu items. Intermediate control panels do not get focus via tab but instead go directly to a logical element of that panel. For example, the titles list selected item gets focus instead of the entire list.
* Set up the account menu. Move a few items from Window and Help menus to the Account menu. Tweak the wording of the menu items.
* Exclude the main menu of the book window from the tab order. Ensure the initial focus is in the book view.
* Splitters should not participate in the tab order. Normally they allow mouse focus but not keyboard focus.
* Replace the WindowsFormsControl based movie view with a WPF HwndHost based view. Fixed the scaling of the actual size of the movie.
* Crasher bugfix. Bookshelf will crash on exit if a QuickTime movie is playing when the app is terminated. This is because the dash code that cleans up QuickTime runs before the the MQTWindow class is disposed. Added a AppExit event which can be monitored with a weak reference. Added a weak reference to QTWindowView to ensure that the MQTWindow object is disposed before dash cleans up QuickTime.
* Crasher bugfix. Thread safe fix for a crash on exit for dash views with an embedded QuickTime file. Make the QTWindowView object disposal thread safe.
* Some work on code to improve stability related to multi-threaded code.
* Replace the Windows Forms based PDF Viewer with a native Win32 control wrapped in a WPF HwndHost.
* Singleton code pattern tweak for working better outside of the debugger.
* Draw the background so the anti-aliased text doesn’t look terrible for TOC search results.
* Set the background of TOC search results appropriately based on focus.
* Replace the Windows Forms based Dash Book Viewer with a native Win32 control wrapped in a WPF HwndHost.
* Fix a bug where the page number in the table of contents in the Contents tab is not right. Sometimes the processing instruction is after the start of the element title but before its text, or inside the title just after the label. In these cases Dash (correctly) renders the page break as if its at the very beginning of the chapter, but the TOC page number wasn’t relecting this.
* Fix a bug where page breaks that occur right at the beginning of a chapter occasionally also show up in the book root or section view between the links. Turns out this occurs when the page break processing instruction is inside the title element – it gets pulled in when we load the title element to build a link from it. Strip those processing instructions out.
* Notes and highlights optimizations for large notes databases. (VSTBS-2112)
* Fix a problem with TOC syncing when changing navigation tabs.
* Title list sorting is now case insensitive.
* Improvements to both the DashView and PDFView context menus. Esc key will dismiss the context menu. Shift-F10 and the “menu key” found on Window’s keyboards can be used to show the context menu for the current mouse location. Once the context menu is displayed, the arrow keys can be used to navigate the context menu.
* References open in the Book window.
* The Quick Reference window is available from the Window menu. It supports single and all references searches and has a hyperlink back to the source reference book.
* The Quick Reference window will be shown for the context menu “search in” if “All References” or a different book is selected from the sub menu.
* More of the information provided in the Locations web service call is used now. It will override the default hard coded values in Bookshelf for the help, support and crash URLs.
* Bookshelf will do a background license update check on start up if it is online.
* Bookshelf will do a background book version check when opening a book if it is online. The check will not occur again for 48 hours after making a successful check.
* Bugfix for a crash that occurs when the first character of a style run is a combining character.
* Improved window management. The application will exit when the last window that includes a menu bar is closed.
* Revised note sync opt-in and preference pane brand specific text.
* Improved TOC search performance for large search results. TOC chapter nodes will auto expand only if there are less than 25 hits in that chapter. The UI elements for hidden TOC search hits are lazy loaded when that node is expanded.
* Use virtualization for the TOC and Collections tree views. Should reduce the memory impact a bit. Also prevents a crash when there are a crazy number of TOC search results. For example, searching the word ‘a’ in a large book.
* Fixed a crasher when showing inside book search results for a reference book.
* Bug VSTBS-2103. Added ‘Clear Recently Searched’ item to allow search history to be cleared. The context menu item appears if there is at least one search history item. It works for the book, bookshelf and quick lookup search history lists.
* Updated installer packages to InstallShield 2010.
* Bug VSTBS-2057. Ensure that any illegal download history state is cleared as part of initialization of the Collections Database instance.
* Bug VSTBS-2075. Added a flag to LicenseUpdate to force a complete sync of the meta database to the server. Most license update triggers will be incremental if possible. The one from the menu item will always trigger a full license update.
* Changed the cancel text for the asset version check to “Update Later”.
* Bug 2119. Fix for sharing scope not reported correctly. Also tweaked the highlighter changed to ensure that all the current values are reflected to the UI so if a sharing setting is changed by a server sync while watching the highlighter it will be immediately reflected correctly.
* Refresh the UI with all the guest highlighter data on a change notification.
* Bugfix: Set the brand as early as possible during app initialization. This fixes a problem where the app used the wrong location for the prefs file for Evolve and CourseSmart branded apps on first start.
* Fine tuning of the keyboard handling for the arrow keys. This will hopefully make Bookshelf a bit more keyboard friendly with the kind of shortcut key commands used by applications like JAWS.
* Replaced the Welcome screen with a brand specific welcome sign-in screen. The CourseSmart screen does not show any registration option because the user should be registered before the first use of the CourseSmart Bookshelf application.
* Revised the sign-in dialog to match the brand specific layout of the sign-in welcome screen. The main difference is there is also a cancel button to dismiss the dialog.
* Revised the sign in label text for all three brands. Affects both the sign in dialog and welcome view.
* Allow in-application registration for CourseSmart.
* Changed the welcome page title text to use the app icon and product name.
* Changed the register button to a hyperlink. Moved it to the bottom of the view.
* Demo licenses will show the registration link in the sign-in dialog below the cancel/register buttons.
* New: Chapter selection UI for Dash and PBK.
* Remove the Unimportant highlighter from the default highlighter set.
* Remove the support menu item because it ultimately goes to the same online knowledge base as the help menu item.
* Keyboard text selection for the Dash and PDFBook views using SHIFT + Arrow Keys and CTRL + SHIFT + Arrow Keys.
* Fix for bug #3460. Validation of the user account email should be case insensitive. The encrypted password should be check to be sure it is XML safe and encoded if necessary.
* Allow the locations service to override store based URLs for account, feedback, forgot (password) and privacy policy.
* Fix a few problems with C++/CLR object disposal
* Bug #3499. Meta file for demo CD not copied on startup with the demo license file. The meta.db file should now be copied any time the demo license file is copied. It occurs much earlier in the startup process in order to avoid problems where AssetManager, License or MetaDatabase classes have already been instantiated.
* Memory management: Changed EventObserver from using a gcroot to monitor the managed handle to using vstweakgcroot. This way the EventObserver reference held by a OSubject will not prevent the managed class from being garbage collected if that is the only reference left.
* Memory management: Use a managed smart pointer to native classes.
* Bug #3506. We don’t want to change the book view when the search is canceled. We do want to sync the TOC to the current location. Also fixed a bug where selecting search results in the TOC did not update the chapter drop down.
* Bug #3507. Any time the view is set (changed) the location needs to be validated and fire a location changed notification to sync the chapter and TOC views.
* Bug #3509. Don’t change the book view when collapsing a tree view node that changes the selection.
* If the Email field can be obtained from the license, do not allow it to be changed. This makes it clear what account is associated with the license and data files. It also prevents accidentally changing the user/license which is not supported by the app.
* Automatic sign in for update license and activate new content if Bookshelf has both Email and Password credentials. Only prompt the user if credentials are missing or automatic sign in fails.
* Ensure any license update from a demo license to does a full metadata import.
* Full metadata import if we trigger an update license as a result of a missing or expired book license.
* Small improvement to formatting a message from a WebException.
* License update. If there are good metadata results and the FullMetadataImport flag is set, reset the meta database before importing data. This has the effect of removing metadata that may have existed that is no longer in the license. More importantly, a full metadata import will resync the Taxonomy including any deletions made on the server.
* Bug #3518. Internal server download error. Root cause the app needed to gracefully handle the case where the server does not provide an etag in the headers.
* Support for the buy_book locations URL. Has the same fallback behavior to use the same URL as in 5.2 and earlier if the override isn’t provided by the locations web service.
* Add previous and next chapter menu items to the book menu.
* Customize the text for updating the license for the two kinds of license checks. Phrase it in terms of the book list. That means more to a user than calling it a license update.
* Adjusting strings to avoid the word version when in reference to a book or asset. Instead the terms update or revision will be used. This is in response to feedback that using the term version may be confused with book editions.
* Simplify the download context menu label.
* Bug #3523. Bookshelf crashed if the Windows theme was changed (for example to switch to high contrast) and a book window was open (Dash or PBK).
* Bug #3528. Image links fail to open in image window because of an image format conversion bug. Improve the image conversion routine to optimize two common cases and fall back to a slower general purpose conversion method for other cases.
* Bug #3530. Properly implement the IDisposable method. Revised the base and destination endpoint for the named pipe.
* Bug #3532. New vbk link formats related to the quick reference window.
* New page forward / back buttons in picture books. They are now invisible until you mouse over them, yet the hit area is much larger – the entire space to the left / right of the page. The old previous / next page icon is now a previous / next chapter icon, so the old icon button needed to change.
* The preferences dialog doesn’t need to appear in the task bar since it is now modal.
* Set an owning parent window for the preferences dialog.
* An image will be converted to a 50% transparent gray version of the image when the associated menu or tool bar item is disabled.
* Bugfix. A binary memory stream should not be closed automatically as part of an http download.
* Change the Update License text to Update Book List. Affects the Account menu item.
* Adjusting the license and book list meta-data download progress messages to put it in terms of a book list update. This is how this action is referred to in the account menu and the most common dialog prompts.
* Remove (dismiss) the download panel when the currently selected item is a pending or active download. It felt wrong for the panel to stay visible after pressing the download button.
* Include the registered email / user name in the My Account menu item and in the about dialog.
* Update the copyright to 2010!
* Set a parent owner for dialog windows. In most cases, this is the currently active window.
* Search the optical and removable disk drives for a demo license if the license does not exist. Make sure Bookshelf will copy the Meta.db file from the same folder as the license.vbk if a demo license is installed.
* Bug #3558. Maximized state should be saved and restored as part of the window state info. Turns out this is a bit tricky. For bonus points it now should remember the prior normal state height, width and position the window had before it was maximized.
* Don’t show the page button tooltips in continuous mode.
* Bug #3573. Show “Not Registered” if there is no license or a demo license in both the account menu and about dialog. Ensure both update after a license update.
* Bug #3578. Don’t include URL items that don’t have a title in the recently search list.
* Use the same label in the notes list context menu as the one in the book view context menu to change the highlighter.
* Removed the title border and title background color preferences because they are not used by Dash.
* Fix keyboard navigation for the Image, Movie and Index window main menu. The main menu for the window should not participate in tab navigation.
* Bugfix. The terms list didn’t show a selection for the current term until clicked a second time.
* Add Danish, Dutch, Finnish, Norwegian, Russian and Swedish to the language options in the InstallShield installer.
* Bug #3478. Improved look for the Welcome page sign in screen. Closer to the Bookshelf for Mac and Bookshelf Online look and style. Still works well with High Contrast modes.
* Bugfix. First selection of a new TOC node after loading the book window could cause the wrong node to get selected.
* Bugfix. The notes list context menu item should read “Copy Highlight with Note” when the selected notes list item has a note.
* Update context menu item text to use title case. Fix a few resource references to use the right string resource.
* Make the active book window the owner of the note window so the note window does not get “lost” behind the current book window. This makes the note window behave like a non-modal tool window. It will always be on top of the owning window.
* Improved large font support on Windows XP. Changes to main menus, bookshelf window, quick reference window, preferences window, and book window.
* Improved large font support for XP. Automatic text wrapping in the about dialog. Changed the default font for that dialog to Lucida Sans Unicode because it supports the Service Mark Unicode character on XP.
* Accessibility. High Contrast mode support. Set the inverted color mode for PBK if the window color is dark. It will also be set if the window color is set to a very dark color even if high contrast mode is not set.
* Updated translations for all supported languages. New languages added.
- Danish (Denmark)
- English (United Kingdom)
- Finnish (Finland)
- Norwegian, Bokmål (Norway)
- Dutch (Netherlands)
- Russian (Russia)
- Swedish (Sweden)
* Generate the dynamic menu item styles in code instead of XAML. It reduces duplication of code since it is all in one place. It may also fix a (timing?) problem where the default style shows the type name instead of the menu item label.
* Tweak the dynamic menu items separator style to look better with high contrast mode.
* Fix for a crasher in the TOC sync code when a book with no prior bookmark is opened.
* Add the 7 new languages to the options in the Language Preferences.
* Bug #3606. Don’t show empty context menus.
* Sign in panel improvements to layout to handle the longer text strings used by some languages without truncating them.
* Log the OS language information when using the default OS language. Correctly apply the default OS language CultureInfo to the WPF UI.
* Improved NoteWindow behavior. The note window will close if the highlight it represents is removed as part of deleting the associated highlighter. The note window will refresh with the new highlight background color if the highlight is transferred to a different highlighter when the current highlighter is deleted.
* New EULA files for added languages. These will show in the installer for the languages supported by the installer. The EULA matching the current OS language will be displayed on first start of Bookshelf. Note, these do not apply to CourseSmart.
* Bugfix. The current highlight in an open note window should not be saved when highlighter and all associated highlights is removed from the Bookshelf window.
* Remove gray background bar for terms that are already inside a box.
* New URL form: vbk:all_references?q=search to search all references using the quick lookup palette.
* Remove the code to draw a border around a title in Dash. It was leaving weird spacing around the titles, because it was leaving room for the border. This looks really odd if there is no visible border. We started defaulting the border color to white a while back, so most users are experiencing this spacing issue.
* Made Bookshelf more responsive during notes and highlights syncing operations, particularly with thousands of notes, by moving the operation that recieves and processes highlights from the server to a background thread.
* Add support for alt attributes occurring inside of: graphic, inline.graphic, media, inline.media, and mathml elements. An alt attribute provides accessibility text for the item it occurs inside.