Don't show devtools window in too small size or out of screen
This commit is contained in:
parent
545c62994f
commit
0ef2857534
1 changed files with 19 additions and 1 deletions
|
@ -28,6 +28,7 @@
|
||||||
#include "net/http/http_response_headers.h"
|
#include "net/http/http_response_headers.h"
|
||||||
#include "net/url_request/url_fetcher.h"
|
#include "net/url_request/url_fetcher.h"
|
||||||
#include "net/url_request/url_fetcher_response_writer.h"
|
#include "net/url_request/url_fetcher_response_writer.h"
|
||||||
|
#include "ui/gfx/screen.h"
|
||||||
|
|
||||||
namespace brightray {
|
namespace brightray {
|
||||||
|
|
||||||
|
@ -72,6 +73,11 @@ void DictionaryToRect(const base::DictionaryValue& dict, gfx::Rect* bounds) {
|
||||||
*bounds = gfx::Rect(x, y, width, height);
|
*bounds = gfx::Rect(x, y, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsPointInRect(const gfx::Point& point, const gfx::Rect& rect) {
|
||||||
|
return point.x() > rect.x() && point.x() < (rect.width() + rect.x()) &&
|
||||||
|
point.y() > rect.y() && point.y() < (rect.height() + rect.y());
|
||||||
|
}
|
||||||
|
|
||||||
void SetZoomLevelForWebContents(content::WebContents* web_contents,
|
void SetZoomLevelForWebContents(content::WebContents* web_contents,
|
||||||
double level) {
|
double level) {
|
||||||
content::HostZoomMap::SetZoomLevel(web_contents, level);
|
content::HostZoomMap::SetZoomLevel(web_contents, level);
|
||||||
|
@ -167,8 +173,20 @@ InspectableWebContentsImpl::InspectableWebContentsImpl(
|
||||||
auto context = static_cast<BrowserContext*>(web_contents_->GetBrowserContext());
|
auto context = static_cast<BrowserContext*>(web_contents_->GetBrowserContext());
|
||||||
pref_service_ = context->prefs();
|
pref_service_ = context->prefs();
|
||||||
auto bounds_dict = pref_service_->GetDictionary(kDevToolsBoundsPref);
|
auto bounds_dict = pref_service_->GetDictionary(kDevToolsBoundsPref);
|
||||||
if (bounds_dict)
|
if (bounds_dict) {
|
||||||
DictionaryToRect(*bounds_dict, &devtools_bounds_);
|
DictionaryToRect(*bounds_dict, &devtools_bounds_);
|
||||||
|
// Sometimes the devtools window is out of screen or has too small size.
|
||||||
|
if (devtools_bounds_.height() < 100 || devtools_bounds_.width() < 100) {
|
||||||
|
devtools_bounds_.set_height(600);
|
||||||
|
devtools_bounds_.set_width(800);
|
||||||
|
}
|
||||||
|
gfx::Rect display = gfx::Screen::GetNativeScreen()
|
||||||
|
->GetDisplayNearestWindow(web_contents->GetNativeView()).bounds();
|
||||||
|
if (!IsPointInRect(devtools_bounds_.origin(), display)) {
|
||||||
|
devtools_bounds_.set_x(0);
|
||||||
|
devtools_bounds_.set_y(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
view_.reset(CreateInspectableContentsView(this));
|
view_.reset(CreateInspectableContentsView(this));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue