* 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:
committed by
Alexandre Deckner
parent
59b99c1229
commit
208ecbcad5
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user