summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/frame/panel_controller.cc
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-12 21:04:39 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-12 21:04:39 +0000
commit3a9c26f147ab16179197bd4460f4ec6c476afcf7 (patch)
treeaa850e93e76b3549550ae5d4d1e2bccbd07083b1 /chrome/browser/chromeos/frame/panel_controller.cc
parente512583b79e366db399a6566964412bb6e5af823 (diff)
downloadchromium_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.cc19
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;
}