diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-12 21:04:39 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-12 21:04:39 +0000 |
commit | 3a9c26f147ab16179197bd4460f4ec6c476afcf7 (patch) | |
tree | aa850e93e76b3549550ae5d4d1e2bccbd07083b1 /chrome/browser/chromeos/frame/panel_controller.cc | |
parent | e512583b79e366db399a6566964412bb6e5af823 (diff) | |
download | chromium_src-3a9c26f147ab16179197bd4460f4ec6c476afcf7.zip chromium_src-3a9c26f147ab16179197bd4460f4ec6c476afcf7.tar.gz chromium_src-3a9c26f147ab16179197bd4460f4ec6c476afcf7.tar.bz2 |
Autoslide/hide notifications after timeout.
* Introduced panel's state to manage which notifications will be shown.'
* Added "OnPanelStateChanged" to PanelController::Delegate method to monitor the panel's state.
* Removed unnecessary SetSize in BalloonViewImpl. The size is set in BalloonViewImpl::Layout.
BUG=33306
TEST=This requires chromeos's wm and system notification to test (which does not exit yet).
None for now but I am writing unittest now.
Review URL: http://codereview.chromium.org/874004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41484 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/frame/panel_controller.cc')
-rw-r--r-- | chrome/browser/chromeos/frame/panel_controller.cc | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/chrome/browser/chromeos/frame/panel_controller.cc b/chrome/browser/chromeos/frame/panel_controller.cc index 8f2d1b7..4008342 100644 --- a/chrome/browser/chromeos/frame/panel_controller.cc +++ b/chrome/browser/chromeos/frame/panel_controller.cc @@ -166,10 +166,8 @@ void PanelController::TitleMouseReleased( mouse_down_ = false; if (!dragging_) { - WmIpc::Message msg(WmIpc::Message::WM_SET_PANEL_STATE); - msg.set_param(0, panel_xid_); - msg.set_param(1, expanded_ ? 0 : 1); - WmIpc::instance()->SendMessage(msg); + SetState(expanded_ ? + PanelController::MINIMIZED : PanelController::EXPANDED); } else { WmIpc::Message msg(WmIpc::Message::WM_NOTIFY_PANEL_DRAG_COMPLETE); msg.set_param(0, panel_xid_); @@ -178,6 +176,13 @@ void PanelController::TitleMouseReleased( } } +void PanelController::SetState(State state) { + WmIpc::Message msg(WmIpc::Message::WM_SET_PANEL_STATE); + msg.set_param(0, panel_xid_); + msg.set_param(1, state == EXPANDED); + WmIpc::instance()->SendMessage(msg); +} + bool PanelController::TitleMouseDragged(const views::MouseEvent& event) { if (!mouse_down_) { return false; @@ -230,7 +235,11 @@ bool PanelController::PanelClientEvent(GdkEventClient* event) { WmIpc::Message msg; WmIpc::instance()->DecodeMessage(*event, &msg); if (msg.type() == WmIpc::Message::CHROME_NOTIFY_PANEL_STATE) { - expanded_ = msg.param(0); + bool new_state = msg.param(0); + if (expanded_ != new_state) { + expanded_ = new_state; + delegate_->OnPanelStateChanged(new_state ? EXPANDED : MINIMIZED); + } } return true; } |