summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-29 21:53:27 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-29 21:53:27 +0000
commita4c368180132f1f5fc2e57af75115b0d36b542a7 (patch)
tree44069f6a2e8fbec60b3347736941fd1da20c7a00 /chrome
parentc3b0173e79820fbb5252d873fc14ea70c1132bcc (diff)
downloadchromium_src-a4c368180132f1f5fc2e57af75115b0d36b542a7.zip
chromium_src-a4c368180132f1f5fc2e57af75115b0d36b542a7.tar.gz
chromium_src-a4c368180132f1f5fc2e57af75115b0d36b542a7.tar.bz2
Fixes a slew of random link/compile errors for views on gtk.
BUG=none TEST=none TBR=ben Review URL: http://codereview.chromium.org/115948 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17246 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/bookmarks/bookmark_context_menu.cc12
-rw-r--r--chrome/browser/extensions/extension_host.h4
-rw-r--r--chrome/browser/extensions/extension_process_manager.cc4
-rw-r--r--chrome/browser/extensions/extension_process_manager.h4
-rw-r--r--chrome/browser/views/browser_bubble_gtk.cc56
-rw-r--r--chrome/browser/views/frame/browser_view.cc10
-rw-r--r--chrome/browser/views/location_bar_view.cc6
-rw-r--r--chrome/browser/views/tab_contents/native_tab_contents_container_gtk.h2
-rw-r--r--chrome/browser/window_sizer_linux.cc24
-rw-r--r--chrome/chrome.gyp10
10 files changed, 119 insertions, 13 deletions
diff --git a/chrome/browser/bookmarks/bookmark_context_menu.cc b/chrome/browser/bookmarks/bookmark_context_menu.cc
index 06ed2d4..35389f4 100644
--- a/chrome/browser/bookmarks/bookmark_context_menu.cc
+++ b/chrome/browser/bookmarks/bookmark_context_menu.cc
@@ -336,6 +336,7 @@ void BookmarkContextMenu::ExecuteCommand(int id) {
}
if (selection_[0]->is_url()) {
+#if defined(OS_WIN)
BookmarkEditor::Configuration editor_config;
if (configuration_ == BOOKMARK_BAR)
editor_config = BookmarkEditor::SHOW_TREE;
@@ -343,6 +344,9 @@ void BookmarkContextMenu::ExecuteCommand(int id) {
editor_config = BookmarkEditor::NO_TREE;
BookmarkEditor::Show(wnd_, profile_, NULL, selection_[0],
editor_config, NULL);
+#else
+ NOTIMPLEMENTED();
+#endif
} else {
EditFolderController::Show(profile_, wnd_, selection_[0], false,
false);
@@ -364,21 +368,21 @@ void BookmarkContextMenu::ExecuteCommand(int id) {
case IDS_BOOMARK_BAR_ADD_NEW_BOOKMARK: {
UserMetrics::RecordAction(L"BookmarkBar_ContextMenu_Add", profile_);
+#if defined(OS_WIN)
BookmarkEditor::Configuration editor_config;
BookmarkEditor::Handler* handler = NULL;
if (configuration_ == BOOKMARK_BAR) {
editor_config = BookmarkEditor::SHOW_TREE;
} else {
editor_config = BookmarkEditor::NO_TREE;
-#if defined(OS_WIN)
// This is owned by the BookmarkEditorView.
handler = new SelectOnCreationHandler(profile_);
-#else
- NOTIMPLEMENTED() << "Custom SelectOnCreationHandler not implemented";
-#endif
}
BookmarkEditor::Show(wnd_, profile_, GetParentForNewNodes(), NULL,
editor_config, handler);
+#else
+ NOTIMPLEMENTED();
+#endif
break;
}
diff --git a/chrome/browser/extensions/extension_host.h b/chrome/browser/extensions/extension_host.h
index 95a885c..ba7c283 100644
--- a/chrome/browser/extensions/extension_host.h
+++ b/chrome/browser/extensions/extension_host.h
@@ -27,7 +27,7 @@ class ExtensionHost : public RenderViewHostDelegate,
ExtensionHost(Extension* extension, SiteInstance* site_instance);
~ExtensionHost();
-#if defined(OS_WIN)
+#if defined(TOOLKIT_VIEWS)
void set_view(ExtensionView* view) { view_ = view; }
ExtensionView* view() const { return view_; }
#endif
@@ -86,7 +86,7 @@ class ExtensionHost : public RenderViewHostDelegate,
// The extension that we're hosting in this view.
Extension* extension_;
-#if defined(OS_WIN)
+#if defined(TOOLKIT_VIEWS)
// Optional view that shows the rendered content in the UI.
ExtensionView* view_;
#endif
diff --git a/chrome/browser/extensions/extension_process_manager.cc b/chrome/browser/extensions/extension_process_manager.cc
index 5f08f78..f2bcad4 100644
--- a/chrome/browser/extensions/extension_process_manager.cc
+++ b/chrome/browser/extensions/extension_process_manager.cc
@@ -6,7 +6,7 @@
#include "chrome/browser/browsing_instance.h"
#include "chrome/browser/extensions/extension_host.h"
-#if defined(OS_WIN)
+#if defined(TOOLKIT_VIEWS)
#include "chrome/browser/extensions/extension_view.h"
#endif
#include "chrome/browser/extensions/extensions_service.h"
@@ -42,7 +42,7 @@ ExtensionProcessManager::~ExtensionProcessManager() {
delete *iter;
}
-#if defined(OS_WIN)
+#if defined(TOOLKIT_VIEWS)
ExtensionView* ExtensionProcessManager::CreateView(Extension* extension,
const GURL& url,
Browser* browser) {
diff --git a/chrome/browser/extensions/extension_process_manager.h b/chrome/browser/extensions/extension_process_manager.h
index b31edb6..1b99933 100644
--- a/chrome/browser/extensions/extension_process_manager.h
+++ b/chrome/browser/extensions/extension_process_manager.h
@@ -14,7 +14,7 @@ class Browser;
class BrowsingInstance;
class Extension;
class ExtensionHost;
-#if defined(OS_WIN)
+#if defined(TOOLKIT_VIEWS)
class ExtensionView;
#endif
class GURL;
@@ -28,7 +28,7 @@ class ExtensionProcessManager : public NotificationObserver {
ExtensionProcessManager(Profile* profile);
~ExtensionProcessManager();
-#if defined(OS_WIN)
+#if defined(TOOLKIT_VIEWS)
// Creates a new ExtensionView, grouping it in the appropriate SiteInstance
// (and therefore process) based on the URL and profile.
ExtensionView* CreateView(Extension* extension,
diff --git a/chrome/browser/views/browser_bubble_gtk.cc b/chrome/browser/views/browser_bubble_gtk.cc
new file mode 100644
index 0000000..91fea0c
--- /dev/null
+++ b/chrome/browser/views/browser_bubble_gtk.cc
@@ -0,0 +1,56 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/views/browser_bubble.h"
+
+#include "chrome/browser/views/frame/browser_view.h"
+#include "views/widget/widget_gtk.h"
+#include "views/window/window.h"
+
+void BrowserBubble::InitPopup() {
+ gfx::NativeView native_view = frame_->GetNativeView();
+ gfx::NativeWindow native_window = frame_->GetWindow()->GetNativeWindow();
+ views::WidgetGtk* pop = new views::WidgetGtk(views::WidgetGtk::TYPE_POPUP);
+ pop->set_delete_on_destroy(false);
+ pop->SetOpacity(0xFF);
+ pop->Init(native_view, bounds_, false);
+ pop->SetContentsView(view_);
+ popup_.reset(pop);
+ Reposition();
+
+ BrowserView* browser_view =
+ BrowserView::GetBrowserViewForNativeWindow(native_window);
+ DCHECK(browser_view);
+ if (browser_view)
+ browser_view->AttachBrowserBubble(this);
+}
+
+void BrowserBubble::DestroyPopup() {
+ gfx::NativeWindow native_window = frame_->GetWindow()->GetNativeWindow();
+ BrowserView* browser_view =
+ BrowserView::GetBrowserViewForNativeWindow(native_window);
+ if (browser_view)
+ browser_view->DetachBrowserBubble(this);
+}
+
+void BrowserBubble::MovePopup(int x, int y, int w, int h) {
+ views::WidgetGtk* pop = static_cast<views::WidgetGtk*>(popup_.get());
+ pop->SetBounds(gfx::Rect(x, y, w, h));
+}
+
+void BrowserBubble::Show() {
+ if (visible_)
+ return;
+ views::WidgetGtk* pop = static_cast<views::WidgetGtk*>(popup_.get());
+ pop->Show();
+ visible_ = true;
+}
+
+void BrowserBubble::Hide() {
+ if (!visible_)
+ return;
+ views::WidgetGtk* pop = static_cast<views::WidgetGtk*>(popup_.get());
+ pop->Hide();
+ visible_ = false;
+}
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc
index d32e8b6..b68b2c1 100644
--- a/chrome/browser/views/frame/browser_view.cc
+++ b/chrome/browser/views/frame/browser_view.cc
@@ -56,7 +56,6 @@
#include "grit/theme_resources.h"
#include "grit/webkit_resources.h"
#include "views/controls/menu/menu.h"
-#include "views/controls/scrollbar/native_scroll_bar.h"
#include "views/fill_layout.h"
#include "views/view.h"
#include "views/widget/root_view.h"
@@ -64,6 +63,10 @@
#include "views/window/non_client_view.h"
#include "views/window/window.h"
+#if defined(OS_WIN)
+#include "views/controls/scrollbar/native_scroll_bar.h"
+#endif
+
using base::TimeDelta;
// static
@@ -406,7 +409,12 @@ gfx::Rect BrowserView::GetFindBarBoundingBox() const {
// Finally decrease the width of the bounding box by the width of the vertical
// scroll bar.
+#if defined(OS_WIN)
int scrollbar_width = views::NativeScrollBar::GetVerticalScrollBarWidth();
+#else
+ // This matches the value in ScrollbarThemeChromium::scrollbarThickness.
+ int scrollbar_width = 15;
+#endif
bounding_box.set_width(std::max(0, bounding_box.width() - scrollbar_width));
if (UILayoutIsRightToLeft())
bounding_box.set_x(bounding_box.x() + scrollbar_width);
diff --git a/chrome/browser/views/location_bar_view.cc b/chrome/browser/views/location_bar_view.cc
index ac2ebc6..df195c4 100644
--- a/chrome/browser/views/location_bar_view.cc
+++ b/chrome/browser/views/location_bar_view.cc
@@ -26,7 +26,6 @@
#include "chrome/browser/tab_contents/navigation_entry.h"
#include "chrome/browser/view_ids.h"
#include "chrome/browser/views/info_bubble.h"
-#include "chrome/browser/views/first_run_bubble.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/page_action.h"
#include "grit/generated_resources.h"
@@ -39,6 +38,7 @@
#if defined(OS_WIN)
#include "app/win_util.h"
+#include "chrome/browser/views/first_run_bubble.h"
#include "chrome/browser/views/page_info_window.h"
#endif
@@ -1003,7 +1003,11 @@ void LocationBarView::ShowFirstRunBubbleInternal(bool use_OEM_bubble) {
if (UILayoutIsRightToLeft())
bounds.set_x(location.x() - 20);
+#if defined(OS_WIN)
FirstRunBubble::Show(profile_, GetWindow(), bounds, use_OEM_bubble);
+#else
+ NOTIMPLEMENTED();
+#endif
}
// LocationBarImageView---------------------------------------------------------
diff --git a/chrome/browser/views/tab_contents/native_tab_contents_container_gtk.h b/chrome/browser/views/tab_contents/native_tab_contents_container_gtk.h
index 16d9c5f..855faa2 100644
--- a/chrome/browser/views/tab_contents/native_tab_contents_container_gtk.h
+++ b/chrome/browser/views/tab_contents/native_tab_contents_container_gtk.h
@@ -6,7 +6,7 @@
#define CHROME_BROWSER_VIEWS_TAB_CONTENTS_NATIVE_TAB_CONTENTS_CONTAINER_GTK_H_
#include "chrome/browser/views/tab_contents/native_tab_contents_container.h"
-#include "views/controls/native_view_host_gtk.h"
+#include "views/controls/native/native_view_host.h"
class NativeTabContentsContainerGtk : public NativeTabContentsContainer,
public views::NativeViewHost {
diff --git a/chrome/browser/window_sizer_linux.cc b/chrome/browser/window_sizer_linux.cc
index fc5fc0d..f8800a7 100644
--- a/chrome/browser/window_sizer_linux.cc
+++ b/chrome/browser/window_sizer_linux.cc
@@ -8,6 +8,7 @@
#include "base/logging.h"
#include "chrome/browser/browser.h"
+#include "chrome/browser/browser_list.h"
// How much horizontal and vertical offset there is between newly
// opened windows. We don't care on Linux since the window manager generally
@@ -102,3 +103,26 @@ WindowSizer::MonitorInfoProvider*
WindowSizer::CreateDefaultMonitorInfoProvider() {
return new DefaultMonitorInfoProvider();
}
+
+// static
+gfx::Point WindowSizer::GetDefaultPopupOrigin(const gfx::Size& size) {
+ scoped_ptr<MonitorInfoProvider> provider(CreateDefaultMonitorInfoProvider());
+ gfx::Rect monitor_bounds = provider->GetPrimaryMonitorWorkArea();
+ gfx::Point corner(monitor_bounds.x(), monitor_bounds.y());
+ if (Browser* browser = BrowserList::GetLastActive()) {
+ GtkWindow* window =
+ reinterpret_cast<GtkWindow*>(browser->window()->GetNativeHandle());
+ int x = 0, y = 0;
+ gtk_window_get_position(window, &x, &y);
+ // Limit to not overflow the work area right and bottom edges.
+ gfx::Point limit(
+ std::min(x + kWindowTilePixels, monitor_bounds.right() - size.width()),
+ std::min(y + kWindowTilePixels, monitor_bounds.bottom() - size.height()));
+ // Adjust corner to now overflow the work area left and top edges, so
+ // that if a popup does not fit the title-bar is remains visible.
+ corner = gfx::Point(
+ std::max(corner.x(), limit.x()),
+ std::max(corner.y(), limit.y()));
+ }
+ return corner;
+}
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp
index f8fea09..a0cf91a 100644
--- a/chrome/chrome.gyp
+++ b/chrome/chrome.gyp
@@ -1396,6 +1396,7 @@
'browser/views/bookmark_table_view.h',
'browser/views/browser_bubble.cc',
'browser/views/browser_bubble.h',
+ 'browser/views/browser_bubble_gtk.cc',
'browser/views/browser_bubble_win.cc',
'browser/views/browser_dialogs.h',
'browser/views/bug_report_view.cc',
@@ -1721,6 +1722,7 @@
['include', '^browser/dock_info.h'],
['include', '^browser/encoding_menu_controller_delegate.cc'],
['include', '^browser/encoding_menu_controller_delegate.h'],
+ ['include', '^browser/extensions/'],
['include', '^browser/views/bookmark_bar_view.cc'],
['include', '^browser/views/bookmark_bar_view.h'],
['include', '^browser/views/bookmark_context_menu.cc'],
@@ -1728,6 +1730,10 @@
['include', '^browser/views/bookmark_menu_button.cc'],
['include', '^browser/views/bookmark_menu_button.h'],
['include', '^browser/views/bookmark_menu_controller_views.cc'],
+ ['include', '^browser/views/browser_bubble_gtk.cc'],
+ ['include', '^browser/views/browser_bubble.cc'],
+ ['include', '^browser/views/browser_bubble.h'],
+ ['include', '^browser/views/chrome_views_delegate.cc'],
['include', '^browser/views/dialog_stubs_gtk.cc'],
['include', '^browser/views/download_item_view.cc'],
['include', '^browser/views/download_item_view.h'],
@@ -1764,6 +1770,8 @@
['include', '^browser/views/tab_contents/tab_contents_container.h'],
['include', '^browser/views/tab_icon_view.cc'],
['include', '^browser/views/tab_icon_view.h'],
+ ['include', '^browser/views/tabs/dragged_tab_controller.cc'],
+ ['include', '^browser/views/tabs/dragged_tab_controller.h'],
['include', '^browser/views/tabs/dragged_tab_view.cc'],
['include', '^browser/views/tabs/dragged_tab_view.h'],
['include', '^browser/views/tabs/tab.cc'],
@@ -1779,6 +1787,8 @@
# Exclude all of browser/gtk, then include the things we want.
['exclude', '^browser/gtk'],
+ ['include', '^browser/gtk/autocomplete_edit_gtk.cc'],
+ ['include', '^browser/gtk/autocomplete_edit_gtk.h'],
['include', '^browser/gtk/dialogs_gtk.cc'],
['include', '^browser/gtk/dialogs_gtk.h'],
['include', '^browser/gtk/download_started_animation_gtk.cc'],