| 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
|
|
|
|
|