Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Unified Diff: views/widget/tooltip_manager_win.cc

Issue 114054: Splits TooltipManager so that it can be ported and stubs out the GTK... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « views/widget/tooltip_manager_win.h ('k') | views/widget/widget_gtk.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: views/widget/tooltip_manager_win.cc
===================================================================
--- views/widget/tooltip_manager_win.cc (revision 17029)
+++ views/widget/tooltip_manager_win.cc (working copy)
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "views/widget/tooltip_manager.h"
+#include "views/widget/tooltip_manager_win.h"
#include <windowsx.h>
#include <limits>
@@ -19,8 +19,7 @@
namespace views {
-//static
-int TooltipManager::tooltip_height_ = 0;
+static int tooltip_height_ = 0;
// Default timeout for the tooltip displayed using keyboard.
// Timeout is mentioned in milliseconds.
@@ -37,10 +36,10 @@
std::vector<std::wstring>* lines) {
size_t index = 0;
size_t next_index;
- while ((next_index = text.find(TooltipManager::GetLineSeparator(), index))
+ while ((next_index = text.find(TooltipManagerWin::GetLineSeparator(), index))
!= std::wstring::npos && lines->size() < kMaxLines) {
lines->push_back(text.substr(index, next_index - index));
- index = next_index + TooltipManager::GetLineSeparator().size();
+ index = next_index + TooltipManagerWin::GetLineSeparator().size();
}
if (next_index != text.size() && lines->size() < kMaxLines)
lines->push_back(text.substr(index, text.size() - index));
@@ -78,9 +77,8 @@
return *separator;
}
-TooltipManager::TooltipManager(Widget* widget, HWND parent)
+TooltipManagerWin::TooltipManagerWin(Widget* widget)
: widget_(widget),
- parent_(parent),
last_mouse_x_(-1),
last_mouse_y_(-1),
tooltip_showing_(false),
@@ -90,23 +88,24 @@
keyboard_tooltip_hwnd_(NULL),
#pragma warning(suppress: 4355)
keyboard_tooltip_factory_(this) {
- DCHECK(widget && parent);
+ DCHECK(widget);
+ DCHECK(widget->GetNativeView());
Init();
}
-TooltipManager::~TooltipManager() {
+TooltipManagerWin::~TooltipManagerWin() {
if (tooltip_hwnd_)
DestroyWindow(tooltip_hwnd_);
if (keyboard_tooltip_hwnd_)
DestroyWindow(keyboard_tooltip_hwnd_);
}
-void TooltipManager::Init() {
+void TooltipManagerWin::Init() {
// Create the tooltip control.
tooltip_hwnd_ = CreateWindowEx(
WS_EX_TRANSPARENT | l10n_util::GetExtendedTooltipStyles(),
TOOLTIPS_CLASS, NULL, TTS_NOPREFIX, 0, 0, 0, 0,
- parent_, NULL, NULL, NULL);
+ GetParent(), NULL, NULL, NULL);
l10n_util::AdjustUIFontForWindow(tooltip_hwnd_);
@@ -120,16 +119,20 @@
// Add one tool that is used for all tooltips.
toolinfo_.cbSize = sizeof(toolinfo_);
toolinfo_.uFlags = TTF_TRANSPARENT | TTF_IDISHWND;
- toolinfo_.hwnd = parent_;
- toolinfo_.uId = reinterpret_cast<UINT_PTR>(parent_);
- // Setting this tells windows to call parent_ back (using a WM_NOTIFY
+ toolinfo_.hwnd = GetParent();
+ toolinfo_.uId = reinterpret_cast<UINT_PTR>(GetParent());
+ // Setting this tells windows to call GetParent() back (using a WM_NOTIFY
// message) for the actual tooltip contents.
toolinfo_.lpszText = LPSTR_TEXTCALLBACK;
SetRectEmpty(&toolinfo_.rect);
SendMessage(tooltip_hwnd_, TTM_ADDTOOL, 0, (LPARAM)&toolinfo_);
}
-void TooltipManager::UpdateTooltip() {
+gfx::NativeView TooltipManagerWin::GetParent() {
+ return widget_->GetNativeView();
+}
+
+void TooltipManagerWin::UpdateTooltip() {
// Set last_view_out_of_sync_ to indicate the view is currently out of sync.
// This doesn't update the view under the mouse immediately as it may cause
// timing problems.
@@ -139,12 +142,14 @@
SendMessage(tooltip_hwnd_, TTM_POP, 0, 0);
}
-void TooltipManager::TooltipTextChanged(View* view) {
+void TooltipManagerWin::TooltipTextChanged(View* view) {
if (view == last_tooltip_view_)
UpdateTooltip(last_mouse_x_, last_mouse_y_);
}
-LRESULT TooltipManager::OnNotify(int w_param, NMHDR* l_param, bool* handled) {
+LRESULT TooltipManagerWin::OnNotify(int w_param,
+ NMHDR* l_param,
+ bool* handled) {
*handled = false;
if (l_param->hwndFrom == tooltip_hwnd_ && keyboard_tooltip_hwnd_ == NULL) {
switch (l_param->code) {
@@ -219,7 +224,7 @@
return 0;
}
-bool TooltipManager::SetTooltipPosition(int text_x, int text_y) {
+bool TooltipManagerWin::SetTooltipPosition(int text_x, int text_y) {
// NOTE: this really only tests that the y location fits on screen, but that
// is good enough for our usage.
@@ -247,7 +252,7 @@
return true;
}
-int TooltipManager::CalcTooltipHeight() {
+int TooltipManagerWin::CalcTooltipHeight() {
// Ask the tooltip for it's font.
int height;
HFONT hfont = reinterpret_cast<HFONT>(
@@ -274,12 +279,12 @@
return height + tooltip_margin.top + tooltip_margin.bottom;
}
-void TooltipManager::TrimTooltipToFit(std::wstring* text,
- int* max_width,
- int* line_count,
- int position_x,
- int position_y,
- HWND window) {
+void TooltipManagerWin::TrimTooltipToFit(std::wstring* text,
+ int* max_width,
+ int* line_count,
+ int position_x,
+ int position_y,
+ HWND window) {
*max_width = 0;
*line_count = 0;
@@ -326,7 +331,7 @@
*text = result;
}
-void TooltipManager::UpdateTooltip(int x, int y) {
+void TooltipManagerWin::UpdateTooltip(int x, int y) {
RootView* root_view = widget_->GetRootView();
View* view = root_view->GetViewForPoint(gfx::Point(x, y));
if (view != last_tooltip_view_) {
@@ -353,7 +358,7 @@
}
}
-void TooltipManager::OnMouse(UINT u_msg, WPARAM w_param, LPARAM l_param) {
+void TooltipManagerWin::OnMouse(UINT u_msg, WPARAM w_param, LPARAM l_param) {
int x = GET_X_LPARAM(l_param);
int y = GET_Y_LPARAM(l_param);
@@ -373,14 +378,14 @@
}
// Forward the message onto the tooltip.
MSG msg;
- msg.hwnd = parent_;
+ msg.hwnd = GetParent();
msg.message = u_msg;
msg.wParam = w_param;
msg.lParam = l_param;
SendMessage(tooltip_hwnd_, TTM_RELAYEVENT, 0, (LPARAM)&msg);
}
-void TooltipManager::ShowKeyboardTooltip(View* focused_view) {
+void TooltipManagerWin::ShowKeyboardTooltip(View* focused_view) {
if (tooltip_showing_) {
SendMessage(tooltip_hwnd_, TTM_POP, 0, 0);
tooltip_text_.clear();
@@ -407,7 +412,7 @@
TOOLINFO keyboard_toolinfo;
memset(&keyboard_toolinfo, 0, sizeof(keyboard_toolinfo));
keyboard_toolinfo.cbSize = sizeof(keyboard_toolinfo);
- keyboard_toolinfo.hwnd = parent_;
+ keyboard_toolinfo.hwnd = GetParent();
keyboard_toolinfo.uFlags = TTF_TRACK | TTF_TRANSPARENT | TTF_IDISHWND ;
keyboard_toolinfo.lpszText = const_cast<WCHAR*>(tooltip_text.c_str());
SendMessage(keyboard_tooltip_hwnd_, TTM_ADDTOOL, 0,
@@ -429,18 +434,19 @@
SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOSIZE);
MessageLoop::current()->PostDelayedTask(FROM_HERE,
keyboard_tooltip_factory_.NewRunnableMethod(
- &TooltipManager::DestroyKeyboardTooltipWindow, keyboard_tooltip_hwnd_),
+ &TooltipManagerWin::DestroyKeyboardTooltipWindow,
+ keyboard_tooltip_hwnd_),
kDefaultTimeout);
}
-void TooltipManager::HideKeyboardTooltip() {
+void TooltipManagerWin::HideKeyboardTooltip() {
if (keyboard_tooltip_hwnd_ != NULL) {
SendMessage(keyboard_tooltip_hwnd_, WM_CLOSE, 0, 0);
keyboard_tooltip_hwnd_ = NULL;
}
}
-void TooltipManager::DestroyKeyboardTooltipWindow(HWND window_to_destroy) {
+void TooltipManagerWin::DestroyKeyboardTooltipWindow(HWND window_to_destroy) {
if (keyboard_tooltip_hwnd_ == window_to_destroy)
HideKeyboardTooltip();
}
« no previous file with comments | « views/widget/tooltip_manager_win.h ('k') | views/widget/widget_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698