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

Unified Diff: chrome/browser/views/panel_controller.h

Issue 155075: Popup changes (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 5 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 | « chrome/browser/gtk/tabs/tab_strip_gtk.cc ('k') | chrome/browser/views/panel_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/views/panel_controller.h
===================================================================
--- chrome/browser/views/panel_controller.h (revision 0)
+++ chrome/browser/views/panel_controller.h (revision 0)
@@ -0,0 +1,104 @@
+// 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.
+
+#ifndef CHROME_BROWSER_VIEWS_PANEL_CONTROLLER_H_
+#define CHROME_BROWSER_VIEWS_PANEL_CONTROLLER_H_
+
+#include <gtk/gtk.h>
+
+#include "views/controls/button/button.h"
+
+class BrowserWindowGtk;
+typedef unsigned long XID;
+
+namespace views {
+class ImageButton;
+class Label;
+class MouseEvent;
+class WidgetGtk;
+}
+
+// Controls interactions with the WM for popups / panels.
+class PanelController : public views::ButtonListener {
+ public:
+ explicit PanelController(BrowserWindowGtk* browser_window);
+ virtual ~PanelController() {}
+
+ bool TitleMousePressed(const views::MouseEvent& event);
+ void TitleMouseReleased(const views::MouseEvent& event, bool canceled);
+ bool TitleMouseDragged(const views::MouseEvent& event);
+ bool PanelClientEvent(GdkEventClient* event);
+
+ void UpdateTitleBar();
+ void Close();
+ // ButtonListener methods.
+ virtual void ButtonPressed(views::Button* sender);
+
+ private:
+ class TitleContentView : public views::View {
+ public:
+ explicit TitleContentView(PanelController* panelController);
+ virtual ~TitleContentView() {}
+ virtual void Layout();
+ virtual bool OnMousePressed(const views::MouseEvent& event);
+ virtual void OnMouseReleased(const views::MouseEvent& event, bool canceled);
+ virtual bool OnMouseDragged(const views::MouseEvent& event);
+
+ views::Label* title_label() { return title_label_; }
+ views::ImageButton* close_button() { return close_button_; }
+
+ private:
+ views::Label* title_label_;
+ views::ImageButton* close_button_;
+ PanelController* panel_controller_;
+ DISALLOW_COPY_AND_ASSIGN(TitleContentView);
+ };
+
+ // Dispatches client events to PanelController instances
+ static bool OnPanelClientEvent(
+ GtkWidget* widget,
+ GdkEventClient* event,
+ PanelController* panel_controller);
+
+ // Browser window containing content.
+ BrowserWindowGtk* browser_window_;
+ // Gtk object for content.
+ GtkWindow* panel_;
+ // X id for content.
+ XID panel_xid_;
+
+ // Views object representing title.
+ views::WidgetGtk* title_window_;
+ // Gtk object representing title.
+ GtkWidget* title_;
+ // X id representing title.
+ XID title_xid_;
+
+ // Views object, holds title and close button.
+ TitleContentView* title_content_;
+
+ // Is the panel expanded or collapsed?
+ bool expanded_;
+
+ // Is the mouse button currently down?
+ bool mouse_down_;
+
+ // Cursor's absolute position when the mouse button was pressed.
+ int mouse_down_abs_x_;
+ int mouse_down_abs_y_;
+
+ // Cursor's offset from the upper-left corner of the titlebar when the
+ // mouse button was pressed.
+ int mouse_down_offset_x_;
+ int mouse_down_offset_y_;
+
+ // Is the titlebar currently being dragged? That is, has the cursor
+ // moved more than kDragThreshold away from its starting position?
+ bool dragging_;
+
+ DISALLOW_COPY_AND_ASSIGN(PanelController);
+};
+
+#endif // CHROME_BROWSER_PANEL_CONTROLLER_H_
+
Property changes on: chrome/browser/views/panel_controller.h
___________________________________________________________________
Name: svn:eol-style
+ LF
« no previous file with comments | « chrome/browser/gtk/tabs/tab_strip_gtk.cc ('k') | chrome/browser/views/panel_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698