* Moved auto-hiding the mouse pointer into BWebView::Pulse().

* Unhide the interface when the user invokes CMD-L (Open location).
* Make sure the progress bar is really hidden, sometimes it would be
  visible again after unhiding the rest of the interface.
* Added a setting for the auto-hiding the mouse pointer feature. It defaults
  to true, since I think it's useful for an app where the pointer would
  usually be in the way.
* Hide the mouse pointer in any case as soon as the user begins typing, also
  hide potentially showing tool tips in that case.

git-svn-id: http://svn.haiku-os.org/webpositive/webkit/trunk@496 94f232f2-1747-11df-bad5-a5bfde151594
This commit is contained in:
stippi
2012-07-03 15:44:10 +02:00
committed by Alexandre Deckner
parent 59b99c1229
commit 208ecbcad5
6 changed files with 59 additions and 33 deletions
+17 -11
View File
@@ -203,7 +203,8 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* appSettings,
fAppSettings(appSettings), fAppSettings(appSettings),
fZoomTextOnly(true), fZoomTextOnly(true),
fShowTabsIfSinglePageOpen(true), fShowTabsIfSinglePageOpen(true),
fAutoHideInterfaceInFullscreenMode(false) fAutoHideInterfaceInFullscreenMode(false),
fAutoHidePointer(true)
{ {
// Begin listening to settings changes and read some current values. // Begin listening to settings changes and read some current values.
fAppSettings->AddListener(BMessenger(this)); fAppSettings->AddListener(BMessenger(this));
@@ -211,6 +212,9 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* appSettings,
fShowTabsIfSinglePageOpen = fAppSettings->GetValue( fShowTabsIfSinglePageOpen = fAppSettings->GetValue(
kSettingsKeyShowTabsIfSinglePageOpen, fShowTabsIfSinglePageOpen); kSettingsKeyShowTabsIfSinglePageOpen, fShowTabsIfSinglePageOpen);
fAutoHidePointer = fAppSettings->GetValue(kSettingsKeyAutoHidePointer,
fAutoHidePointer);
fNewWindowPolicy = fAppSettings->GetValue(kSettingsKeyNewWindowPolicy, fNewWindowPolicy = fAppSettings->GetValue(kSettingsKeyNewWindowPolicy,
(uint32)OpenStartPage); (uint32)OpenStartPage);
fNewTabPolicy = fAppSettings->GetValue(kSettingsKeyNewTabPolicy, fNewTabPolicy = fAppSettings->GetValue(kSettingsKeyNewTabPolicy,
@@ -506,6 +510,7 @@ BrowserWindow::MessageReceived(BMessage* message)
{ {
switch (message->what) { switch (message->what) {
case OPEN_LOCATION: case OPEN_LOCATION:
_ShowInterface(true);
if (fURLInputGroup->TextView()->IsFocus()) if (fURLInputGroup->TextView()->IsFocus())
fURLInputGroup->TextView()->SelectAll(); fURLInputGroup->TextView()->SelectAll();
else else
@@ -770,6 +775,11 @@ BrowserWindow::MessageReceived(BMessage* message)
fShowTabsIfSinglePageOpen = flag; fShowTabsIfSinglePageOpen = flag;
_UpdateTabGroupVisibility(); _UpdateTabGroupVisibility();
} }
} else if (name == kSettingsKeyAutoHidePointer
&& message->FindBool("value", &flag) == B_OK) {
fAutoHidePointer = flag;
if (CurrentWebView())
CurrentWebView()->SetAutoHidePointer(fAutoHidePointer);
} else if (name == kSettingsKeyStartPageURL } else if (name == kSettingsKeyStartPageURL
&& message->FindString("value", &string) == B_OK) { && message->FindString("value", &string) == B_OK) {
fStartPageURL = string; fStartPageURL = string;
@@ -882,6 +892,8 @@ BrowserWindow::SetCurrentWebView(BWebView* webView)
BWebWindow::SetCurrentWebView(webView); BWebWindow::SetCurrentWebView(webView);
if (webView != NULL) { if (webView != NULL) {
webView->SetAutoHidePointer(fAutoHidePointer);
_UpdateTitle(webView->MainFrameTitle()); _UpdateTitle(webView->MainFrameTitle());
// Restore the previous focus or focus the web view. // Restore the previous focus or focus the web view.
@@ -1838,22 +1850,16 @@ BrowserWindow::_SetAutoHideInterfaceInFullscreen(bool doIt)
void void
BrowserWindow::_CheckAutoHideInterface() BrowserWindow::_CheckAutoHideInterface()
{ {
if (!fIsFullscreen || !fAutoHideInterfaceInFullscreenMode) if (!fIsFullscreen || !fAutoHideInterfaceInFullscreenMode
|| (CurrentWebView() != NULL && !CurrentWebView()->IsFocus())) {
return; return;
bigtime_t now = system_time();
float navigationGroupBottom = fNavigationGroup->IsVisible() ?
fNavigationGroup->Frame().bottom : 0;
if (fLastMousePos.y > navigationGroupBottom
&& now - fLastMouseMovedTime > 1500000) {
be_app->ObscureCursor();
} }
if (fLastMousePos.y == 0) if (fLastMousePos.y == 0)
_ShowInterface(true); _ShowInterface(true);
else if (fNavigationGroup->IsVisible() else if (fNavigationGroup->IsVisible()
&& fLastMousePos.y > fNavigationGroup->Frame().bottom && fLastMousePos.y > fNavigationGroup->Frame().bottom
&& now - fLastMouseMovedTime > 3000000) { && system_time() - fLastMouseMovedTime > 3000000) {
// NOTE: Do not re-use navigationGroupBottom in the above // NOTE: Do not re-use navigationGroupBottom in the above
// check, since we only want to hide the interface when it is visible. // check, since we only want to hide the interface when it is visible.
_ShowInterface(false); _ShowInterface(false);
@@ -1887,7 +1893,7 @@ BrowserWindow::_ShowInterface(bool show)
} }
// TODO: Setting the group visible seems to unhide the status bar. // TODO: Setting the group visible seems to unhide the status bar.
// Fix in Haiku? // Fix in Haiku?
if (!fLoadingProgressBar->IsHidden()) while (!fLoadingProgressBar->IsHidden())
fLoadingProgressBar->Hide(); fLoadingProgressBar->Hide();
} }
+1
View File
@@ -228,6 +228,7 @@ private:
bool fZoomTextOnly; bool fZoomTextOnly;
bool fShowTabsIfSinglePageOpen; bool fShowTabsIfSinglePageOpen;
bool fAutoHideInterfaceInFullscreenMode; bool fAutoHideInterfaceInFullscreenMode;
bool fAutoHidePointer;
uint32 fNewWindowPolicy; uint32 fNewWindowPolicy;
uint32 fNewTabPolicy; uint32 fNewTabPolicy;
BString fStartPageURL; BString fStartPageURL;
+1
View File
@@ -32,6 +32,7 @@ const char* kSettingsKeyShowTabsIfSinglePageOpen
= "show tabs if single page open"; = "show tabs if single page open";
const char* kSettingsKeyAutoHideInterfaceInFullscreenMode const char* kSettingsKeyAutoHideInterfaceInFullscreenMode
= "auto hide interface in full screen mode"; = "auto hide interface in full screen mode";
const char* kSettingsKeyAutoHidePointer = "auto hide pointer";
const char* kSettingsKeyNewWindowPolicy = "new window policy"; const char* kSettingsKeyNewWindowPolicy = "new window policy";
const char* kSettingsKeyNewTabPolicy = "new tab policy"; const char* kSettingsKeyNewTabPolicy = "new tab policy";
+1
View File
@@ -33,6 +33,7 @@
extern const char* kSettingsKeyDownloadPath; extern const char* kSettingsKeyDownloadPath;
extern const char* kSettingsKeyShowTabsIfSinglePageOpen; extern const char* kSettingsKeyShowTabsIfSinglePageOpen;
extern const char* kSettingsKeyAutoHideInterfaceInFullscreenMode; extern const char* kSettingsKeyAutoHideInterfaceInFullscreenMode;
extern const char* kSettingsKeyAutoHidePointer;
extern const char* kSettingsKeyNewWindowPolicy; extern const char* kSettingsKeyNewWindowPolicy;
extern const char* kSettingsKeyNewTabPolicy; extern const char* kSettingsKeyNewTabPolicy;
+38 -22
View File
@@ -59,30 +59,31 @@
#define B_TRANSLATE_CONTEXT "Settings Window" #define B_TRANSLATE_CONTEXT "Settings Window"
enum { enum {
MSG_APPLY = 'aply', MSG_APPLY = 'aply',
MSG_CANCEL = 'cncl', MSG_CANCEL = 'cncl',
MSG_REVERT = 'rvrt', MSG_REVERT = 'rvrt',
MSG_START_PAGE_CHANGED = 'hpch', MSG_START_PAGE_CHANGED = 'hpch',
MSG_SEARCH_PAGE_CHANGED = 'spch', MSG_SEARCH_PAGE_CHANGED = 'spch',
MSG_DOWNLOAD_FOLDER_CHANGED = 'dnfc', MSG_DOWNLOAD_FOLDER_CHANGED = 'dnfc',
MSG_NEW_WINDOWS_BEHAVIOR_CHANGED = 'nwbc', MSG_NEW_WINDOWS_BEHAVIOR_CHANGED = 'nwbc',
MSG_NEW_TABS_BEHAVIOR_CHANGED = 'ntbc', MSG_NEW_TABS_BEHAVIOR_CHANGED = 'ntbc',
MSG_HISTORY_MENU_DAYS_CHANGED = 'digm', MSG_HISTORY_MENU_DAYS_CHANGED = 'digm',
MSG_TAB_DISPLAY_BEHAVIOR_CHANGED = 'tdbc', MSG_TAB_DISPLAY_BEHAVIOR_CHANGED = 'tdbc',
MSG_AUTO_HIDE_BEHAVIOR_CHANGED = 'ahbc', MSG_AUTO_HIDE_INTERFACE_BEHAVIOR_CHANGED = 'ahic',
MSG_AUTO_HIDE_POINTER_BEHAVIOR_CHANGED = 'ahpc',
MSG_STANDARD_FONT_CHANGED = 'stfc', MSG_STANDARD_FONT_CHANGED = 'stfc',
MSG_SERIF_FONT_CHANGED = 'sefc', MSG_SERIF_FONT_CHANGED = 'sefc',
MSG_SANS_SERIF_FONT_CHANGED = 'ssfc', MSG_SANS_SERIF_FONT_CHANGED = 'ssfc',
MSG_FIXED_FONT_CHANGED = 'ffch', MSG_FIXED_FONT_CHANGED = 'ffch',
MSG_STANDARD_FONT_SIZE_SELECTED = 'sfss', MSG_STANDARD_FONT_SIZE_SELECTED = 'sfss',
MSG_FIXED_FONT_SIZE_SELECTED = 'ffss', MSG_FIXED_FONT_SIZE_SELECTED = 'ffss',
MSG_USE_PROXY_CHANGED = 'upsc', MSG_USE_PROXY_CHANGED = 'upsc',
MSG_PROXY_ADDRESS_CHANGED = 'psac', MSG_PROXY_ADDRESS_CHANGED = 'psac',
MSG_PROXY_PORT_CHANGED = 'pspc', MSG_PROXY_PORT_CHANGED = 'pspc',
}; };
static const int32 kDefaultFontSize = 14; static const int32 kDefaultFontSize = 14;
@@ -199,7 +200,8 @@ SettingsWindow::MessageReceived(BMessage* message)
case MSG_NEW_TABS_BEHAVIOR_CHANGED: case MSG_NEW_TABS_BEHAVIOR_CHANGED:
case MSG_HISTORY_MENU_DAYS_CHANGED: case MSG_HISTORY_MENU_DAYS_CHANGED:
case MSG_TAB_DISPLAY_BEHAVIOR_CHANGED: case MSG_TAB_DISPLAY_BEHAVIOR_CHANGED:
case MSG_AUTO_HIDE_BEHAVIOR_CHANGED: case MSG_AUTO_HIDE_INTERFACE_BEHAVIOR_CHANGED:
case MSG_AUTO_HIDE_POINTER_BEHAVIOR_CHANGED:
case MSG_STANDARD_FONT_CHANGED: case MSG_STANDARD_FONT_CHANGED:
case MSG_SERIF_FONT_CHANGED: case MSG_SERIF_FONT_CHANGED:
case MSG_SANS_SERIF_FONT_CHANGED: case MSG_SANS_SERIF_FONT_CHANGED:
@@ -327,9 +329,14 @@ SettingsWindow::_CreateGeneralPage(float spacing)
fAutoHideInterfaceInFullscreenMode = new BCheckBox("auto-hide interface", fAutoHideInterfaceInFullscreenMode = new BCheckBox("auto-hide interface",
B_TRANSLATE("Auto-hide interface in fullscreen mode."), B_TRANSLATE("Auto-hide interface in fullscreen mode."),
new BMessage(MSG_AUTO_HIDE_BEHAVIOR_CHANGED)); new BMessage(MSG_AUTO_HIDE_INTERFACE_BEHAVIOR_CHANGED));
fAutoHideInterfaceInFullscreenMode->SetValue(B_CONTROL_OFF); fAutoHideInterfaceInFullscreenMode->SetValue(B_CONTROL_OFF);
fAutoHidePointer = new BCheckBox("auto-hide pointer",
B_TRANSLATE("Auto-hide mouse pointer."),
new BMessage(MSG_AUTO_HIDE_POINTER_BEHAVIOR_CHANGED));
fAutoHidePointer->SetValue(B_CONTROL_ON);
BView* view = BGroupLayoutBuilder(B_VERTICAL, spacing / 2) BView* view = BGroupLayoutBuilder(B_VERTICAL, spacing / 2)
.Add(BGridLayoutBuilder(spacing / 2, spacing / 2) .Add(BGridLayoutBuilder(spacing / 2, spacing / 2)
.Add(fStartPageControl->CreateLabelLayoutItem(), 0, 0) .Add(fStartPageControl->CreateLabelLayoutItem(), 0, 0)
@@ -352,6 +359,7 @@ SettingsWindow::_CreateGeneralPage(float spacing)
.Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing)) .Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing))
.Add(fShowTabsIfOnlyOnePage) .Add(fShowTabsIfOnlyOnePage)
.Add(fAutoHideInterfaceInFullscreenMode) .Add(fAutoHideInterfaceInFullscreenMode)
.Add(fAutoHidePointer)
.Add(fDaysInHistoryMenuControl) .Add(fDaysInHistoryMenuControl)
.Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing)) .Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing))
@@ -528,6 +536,10 @@ SettingsWindow::_CanApplySettings() const
!= fSettings->GetValue(kSettingsKeyAutoHideInterfaceInFullscreenMode, != fSettings->GetValue(kSettingsKeyAutoHideInterfaceInFullscreenMode,
false)); false));
canApply = canApply || (
(fAutoHidePointer->Value() == B_CONTROL_ON)
!= fSettings->GetValue(kSettingsKeyAutoHidePointer, true));
canApply = canApply || (_MaxHistoryAge() canApply = canApply || (_MaxHistoryAge()
!= BrowsingHistory::DefaultInstance()->MaxHistoryItemAge()); != BrowsingHistory::DefaultInstance()->MaxHistoryItemAge());
@@ -591,6 +603,8 @@ SettingsWindow::_ApplySettings()
fShowTabsIfOnlyOnePage->Value() == B_CONTROL_ON); fShowTabsIfOnlyOnePage->Value() == B_CONTROL_ON);
fSettings->SetValue(kSettingsKeyAutoHideInterfaceInFullscreenMode, fSettings->SetValue(kSettingsKeyAutoHideInterfaceInFullscreenMode,
fAutoHideInterfaceInFullscreenMode->Value() == B_CONTROL_ON); fAutoHideInterfaceInFullscreenMode->Value() == B_CONTROL_ON);
fSettings->SetValue(kSettingsKeyAutoHidePointer,
fAutoHidePointer->Value() == B_CONTROL_ON);
// New page policies // New page policies
fSettings->SetValue(kSettingsKeyNewWindowPolicy, _NewWindowPolicy()); fSettings->SetValue(kSettingsKeyNewWindowPolicy, _NewWindowPolicy());
@@ -656,6 +670,8 @@ SettingsWindow::_RevertSettings()
fAutoHideInterfaceInFullscreenMode->SetValue( fAutoHideInterfaceInFullscreenMode->SetValue(
fSettings->GetValue(kSettingsKeyAutoHideInterfaceInFullscreenMode, fSettings->GetValue(kSettingsKeyAutoHideInterfaceInFullscreenMode,
false)); false));
fAutoHidePointer->SetValue(
fSettings->GetValue(kSettingsKeyAutoHidePointer, true));
BString text; BString text;
text << BrowsingHistory::DefaultInstance()->MaxHistoryItemAge(); text << BrowsingHistory::DefaultInstance()->MaxHistoryItemAge();
+1
View File
@@ -97,6 +97,7 @@ private:
BTextControl* fDaysInHistoryMenuControl; BTextControl* fDaysInHistoryMenuControl;
BCheckBox* fShowTabsIfOnlyOnePage; BCheckBox* fShowTabsIfOnlyOnePage;
BCheckBox* fAutoHideInterfaceInFullscreenMode; BCheckBox* fAutoHideInterfaceInFullscreenMode;
BCheckBox* fAutoHidePointer;
FontSelectionView* fStandardFontView; FontSelectionView* fStandardFontView;
FontSelectionView* fSerifFontView; FontSelectionView* fSerifFontView;