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

Unified Diff: remoting/host/continue_window_gtk.cc

Issue 13461029: The continue window is owned by the desktop environment now. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/host/continue_window.cc ('k') | remoting/host/continue_window_mac.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/continue_window_gtk.cc
diff --git a/remoting/host/continue_window_gtk.cc b/remoting/host/continue_window_gtk.cc
index 906e50f38ce11d11b011c6146e1023003647dde4..e22e62e371f7b96814c7bb19ccfb0975ba926e0e 100644
--- a/remoting/host/continue_window_gtk.cc
+++ b/remoting/host/continue_window_gtk.cc
@@ -2,59 +2,77 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "remoting/host/continue_window.h"
-
#include <gtk/gtk.h>
#include "base/compiler_specific.h"
#include "base/logging.h"
#include "base/utf_string_conversions.h"
-#include "remoting/host/ui_strings.h"
+#include "remoting/host/continue_window.h"
#include "ui/base/gtk/gtk_signal.h"
namespace remoting {
-class ContinueWindowGtk : public remoting::ContinueWindow {
+class ContinueWindowGtk : public ContinueWindow {
public:
- explicit ContinueWindowGtk(const UiStrings* ui_strings);
+ explicit ContinueWindowGtk(const UiStrings& ui_strings);
virtual ~ContinueWindowGtk();
- virtual void Show(const ContinueSessionCallback& callback) OVERRIDE;
- virtual void Hide() OVERRIDE;
+ protected:
+ // ContinueWindow overrides.
+ virtual void ShowUi() OVERRIDE;
+ virtual void HideUi() OVERRIDE;
private:
- CHROMEGTK_CALLBACK_1(ContinueWindowGtk, void, OnResponse, int);
-
void CreateWindow();
- ContinueSessionCallback callback_;
- GtkWidget* continue_window_;
+ CHROMEGTK_CALLBACK_1(ContinueWindowGtk, void, OnResponse, int);
- // Points to the localized strings.
- const UiStrings* ui_strings_;
+ GtkWidget* continue_window_;
DISALLOW_COPY_AND_ASSIGN(ContinueWindowGtk);
};
-ContinueWindowGtk::ContinueWindowGtk(const UiStrings* ui_strings)
- : continue_window_(NULL),
- ui_strings_(ui_strings) {
+ContinueWindowGtk::ContinueWindowGtk(const UiStrings& ui_strings)
+ : ContinueWindow(ui_strings),
+ continue_window_(NULL) {
}
ContinueWindowGtk::~ContinueWindowGtk() {
+ if (continue_window_) {
+ gtk_widget_destroy(continue_window_);
+ continue_window_ = NULL;
+ }
+}
+
+void ContinueWindowGtk::ShowUi() {
+ DCHECK(CalledOnValidThread());
+ DCHECK(!continue_window_);
+
+ CreateWindow();
+ gtk_window_set_urgency_hint(GTK_WINDOW(continue_window_), TRUE);
+ gtk_window_present(GTK_WINDOW(continue_window_));
+}
+
+void ContinueWindowGtk::HideUi() {
+ DCHECK(CalledOnValidThread());
+
+ if (continue_window_) {
+ gtk_widget_destroy(continue_window_);
+ continue_window_ = NULL;
+ }
}
void ContinueWindowGtk::CreateWindow() {
- if (continue_window_)
- return;
+ DCHECK(CalledOnValidThread());
+ DCHECK(!continue_window_);
continue_window_ = gtk_dialog_new_with_buttons(
- UTF16ToUTF8(ui_strings_->product_name).c_str(),
+ UTF16ToUTF8(ui_strings().product_name).c_str(),
NULL,
static_cast<GtkDialogFlags>(GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR),
- UTF16ToUTF8(ui_strings_->stop_sharing_button_text).c_str(),
+ UTF16ToUTF8(ui_strings().stop_sharing_button_text).c_str(),
GTK_RESPONSE_CANCEL,
- UTF16ToUTF8(ui_strings_->continue_button_text).c_str(),
+ UTF16ToUTF8(ui_strings().continue_button_text).c_str(),
GTK_RESPONSE_OK,
NULL);
@@ -73,7 +91,7 @@ void ContinueWindowGtk::CreateWindow() {
gtk_dialog_get_content_area(GTK_DIALOG(continue_window_));
GtkWidget* text_label =
- gtk_label_new(UTF16ToUTF8(ui_strings_->continue_prompt).c_str());
+ gtk_label_new(UTF16ToUTF8(ui_strings().continue_prompt).c_str());
gtk_label_set_line_wrap(GTK_LABEL(text_label), TRUE);
// TODO(lambroslambrou): Fix magic numbers, as in disconnect_window_gtk.cc.
gtk_misc_set_padding(GTK_MISC(text_label), 12, 12);
@@ -82,27 +100,22 @@ void ContinueWindowGtk::CreateWindow() {
gtk_widget_show_all(content_area);
}
-void ContinueWindowGtk::Show(const ContinueSessionCallback& callback) {
- callback_ = callback;
- CreateWindow();
- gtk_window_set_urgency_hint(GTK_WINDOW(continue_window_), TRUE);
- gtk_window_present(GTK_WINDOW(continue_window_));
-}
+void ContinueWindowGtk::OnResponse(GtkWidget* dialog, int response_id) {
+ DCHECK(CalledOnValidThread());
-void ContinueWindowGtk::Hide() {
- if (continue_window_) {
- gtk_widget_destroy(continue_window_);
- continue_window_ = NULL;
+ if (response_id == GTK_RESPONSE_OK) {
+ ContinueSession();
+ } else {
+ DisconnectSession();
}
-}
-void ContinueWindowGtk::OnResponse(GtkWidget* dialog, int response_id) {
- callback_.Run(response_id == GTK_RESPONSE_OK);
- Hide();
+ HideUi();
}
-scoped_ptr<ContinueWindow> ContinueWindow::Create(const UiStrings* ui_strings) {
- return scoped_ptr<ContinueWindow>(new ContinueWindowGtk(ui_strings));
+// static
+scoped_ptr<HostWindow> HostWindow::CreateContinueWindow(
+ const UiStrings& ui_strings) {
+ return scoped_ptr<HostWindow>(new ContinueWindowGtk(ui_strings));
}
} // namespace remoting
« no previous file with comments | « remoting/host/continue_window.cc ('k') | remoting/host/continue_window_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698