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

Side by Side Diff: chrome/browser/ui/panels/panel_browser_window_gtk.cc

Issue 10106008: Change Panel titlebars to activate the panel on click (rather than minimize). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: GTK changes Created 8 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/panels/panel_browser_window_gtk.h" 5 #include "chrome/browser/ui/panels/panel_browser_window_gtk.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "chrome/browser/ui/browser_list.h" 8 #include "chrome/browser/ui/browser_list.h"
9 #include "chrome/browser/ui/gtk/browser_titlebar.h" 9 #include "chrome/browser/ui/gtk/browser_titlebar.h"
10 #include "chrome/browser/ui/panels/panel.h" 10 #include "chrome/browser/ui/panels/panel.h"
(...skipping 10 matching lines...) Expand all
21 namespace { 21 namespace {
22 22
23 // RGB values for titlebar in draw attention state. A shade of orange. 23 // RGB values for titlebar in draw attention state. A shade of orange.
24 const int kDrawAttentionR = 0xfa; 24 const int kDrawAttentionR = 0xfa;
25 const int kDrawAttentionG = 0x98; 25 const int kDrawAttentionG = 0x98;
26 const int kDrawAttentionB = 0x3a; 26 const int kDrawAttentionB = 0x3a;
27 const float kDrawAttentionRFraction = kDrawAttentionR / 255.0; 27 const float kDrawAttentionRFraction = kDrawAttentionR / 255.0;
28 const float kDrawAttentionGFraction = kDrawAttentionG / 255.0; 28 const float kDrawAttentionGFraction = kDrawAttentionG / 255.0;
29 const float kDrawAttentionBFraction = kDrawAttentionB / 255.0; 29 const float kDrawAttentionBFraction = kDrawAttentionB / 255.0;
30 30
31 // Delay before click on a titlebar is allowed to minimize the panel after
32 // the 'draw attention' mode has been cleared.
33 const int kSuspendMinimizeOnClickIntervalMs = 500;
34
35 // Markup for title text in draw attention state. Set to color white. 31 // Markup for title text in draw attention state. Set to color white.
36 const char* const kDrawAttentionTitleMarkupPrefix = 32 const char* const kDrawAttentionTitleMarkupPrefix =
37 "<span fgcolor='#ffffff'>"; 33 "<span fgcolor='#ffffff'>";
38 const char* const kDrawAttentionTitleMarkupSuffix = "</span>"; 34 const char* const kDrawAttentionTitleMarkupSuffix = "</span>";
39 35
40 // Set minimium width for window really small so it can be reduced to icon only 36 // Set minimium width for window really small so it can be reduced to icon only
41 // size in overflow expansion state. 37 // size in overflow expansion state.
42 const int kMinWindowWidth = 2; 38 const int kMinWindowWidth = 2;
43 39
44 } // namespace 40 } // namespace
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 cairo_paint(cr); 241 cairo_paint(cr);
246 gdk_region_destroy(dest_region); 242 gdk_region_destroy(dest_region);
247 } 243 }
248 244
249 void PanelBrowserWindowGtk::ActiveWindowChanged(GdkWindow* active_window) { 245 void PanelBrowserWindowGtk::ActiveWindowChanged(GdkWindow* active_window) {
250 bool was_active = IsActive(); 246 bool was_active = IsActive();
251 BrowserWindowGtk::ActiveWindowChanged(active_window); 247 BrowserWindowGtk::ActiveWindowChanged(active_window);
252 if (!window() || was_active == IsActive()) // State didn't change. 248 if (!window() || was_active == IsActive()) // State didn't change.
253 return; 249 return;
254 250
251 if (IsActive() && is_drawing_attention_) {
252 DCHECK(!panel_->IsMinimized());
253 panel_->FlashFrame(false);
254 }
255
255 content::NotificationService::current()->Notify( 256 content::NotificationService::current()->Notify(
256 chrome::NOTIFICATION_PANEL_CHANGED_ACTIVE_STATUS, 257 chrome::NOTIFICATION_PANEL_CHANGED_ACTIVE_STATUS,
257 content::Source<Panel>(panel_.get()), 258 content::Source<Panel>(panel_.get()),
258 content::NotificationService::NoDetails()); 259 content::NotificationService::NoDetails());
259 } 260 }
260 261
261 BrowserWindowGtk::TitleDecoration PanelBrowserWindowGtk::GetWindowTitle( 262 BrowserWindowGtk::TitleDecoration PanelBrowserWindowGtk::GetWindowTitle(
262 std::string* title) const { 263 std::string* title) const {
263 if (is_drawing_attention_) { 264 if (is_drawing_attention_) {
264 std::string title_original; 265 std::string title_original;
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 702
702 gboolean PanelBrowserWindowGtk::OnTitlebarButtonReleaseEvent( 703 gboolean PanelBrowserWindowGtk::OnTitlebarButtonReleaseEvent(
703 GtkWidget* widget, GdkEventButton* event) { 704 GtkWidget* widget, GdkEventButton* event) {
704 if (event->button != 1) { 705 if (event->button != 1) {
705 DCHECK(!last_mouse_down_); 706 DCHECK(!last_mouse_down_);
706 return TRUE; 707 return TRUE;
707 } 708 }
708 709
709 CleanupDragDrop(); 710 CleanupDragDrop();
710 711
711 if (event->state & GDK_CONTROL_MASK) { 712 panel_->OnTitlebarClicked((event->state & GDK_CONTROL_MASK) ?
712 panel_->OnTitlebarClicked(panel::APPLY_TO_ALL); 713 panel::APPLY_TO_ALL : panel::NO_MODIFIER);
713 return TRUE;
714 }
715
716 // TODO(jennb): Move remaining titlebar click handling out of here.
717 // (http://crbug.com/118431)
718 PanelStrip* panel_strip = panel_->panel_strip();
719 if (!panel_strip)
720 return TRUE;
721
722 if (panel_strip->type() == PanelStrip::DOCKED &&
723 panel_->expansion_state() == Panel::EXPANDED) {
724 if (base::Time::Now() < disableMinimizeUntilTime_)
725 return TRUE;
726
727 panel_->SetExpansionState(Panel::MINIMIZED);
728 } else {
729 panel_->Activate();
730 }
731
732 return TRUE; 714 return TRUE;
733 } 715 }
734 716
735 void PanelBrowserWindowGtk::HandleFocusIn(GtkWidget* widget,
736 GdkEventFocus* event) {
737 BrowserWindowGtk::HandleFocusIn(widget, event);
738
739 if (!is_drawing_attention_)
740 return;
741
742 panel_->FlashFrame(false);
743 DCHECK(panel_->expansion_state() == Panel::EXPANDED);
744
745 disableMinimizeUntilTime_ = base::Time::Now() +
746 base::TimeDelta::FromMilliseconds(kSuspendMinimizeOnClickIntervalMs);
747 }
748
749 void PanelBrowserWindowGtk::OnDragBegin(GtkWidget* widget, 717 void PanelBrowserWindowGtk::OnDragBegin(GtkWidget* widget,
750 GdkDragContext* context) { 718 GdkDragContext* context) {
751 // Set drag icon to be a transparent pixbuf. 719 // Set drag icon to be a transparent pixbuf.
752 GdkPixbuf* pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 1, 1); 720 GdkPixbuf* pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 1, 1);
753 gdk_pixbuf_fill(pixbuf, 0); 721 gdk_pixbuf_fill(pixbuf, 0);
754 gtk_drag_set_icon_pixbuf(context, pixbuf, 0, 0); 722 gtk_drag_set_icon_pixbuf(context, pixbuf, 0, 0);
755 g_object_unref(pixbuf); 723 g_object_unref(pixbuf);
756 } 724 }
757 725
758 gboolean PanelBrowserWindowGtk::OnDragFailed( 726 gboolean PanelBrowserWindowGtk::OnDragFailed(
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 MessageLoopForUI::current()->RunAllPending(); 858 MessageLoopForUI::current()->RunAllPending();
891 } 859 }
892 860
893 bool NativePanelTestingGtk::IsWindowSizeKnown() const { 861 bool NativePanelTestingGtk::IsWindowSizeKnown() const {
894 return !panel_browser_window_gtk_->frame_size_.IsEmpty(); 862 return !panel_browser_window_gtk_->frame_size_.IsEmpty();
895 } 863 }
896 864
897 bool NativePanelTestingGtk::IsAnimatingBounds() const { 865 bool NativePanelTestingGtk::IsAnimatingBounds() const {
898 return panel_browser_window_gtk_->IsAnimatingBounds(); 866 return panel_browser_window_gtk_->IsAnimatingBounds();
899 } 867 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698