summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--webkit/tools/test_shell/test_shell_gtk.cc34
1 files changed, 34 insertions, 0 deletions
diff --git a/webkit/tools/test_shell/test_shell_gtk.cc b/webkit/tools/test_shell/test_shell_gtk.cc
index 9112ba2..09524f4 100644
--- a/webkit/tools/test_shell/test_shell_gtk.cc
+++ b/webkit/tools/test_shell/test_shell_gtk.cc
@@ -47,10 +47,42 @@ bool TestShell::CreateNewWindow(const std::wstring& startingURL,
void TestShell::PlatformCleanUp() {
}
+// GTK callbacks ------------------------------------------------------
+namespace {
+
+// Callback for when the main window is destroyed.
+void MainWindowDestroyed(GtkWindow* window, TestShell* shell) {
+ // TODO(evanm): make WindowList a list of GtkWindow*, so this
+ // reinterpret_cast isn't necessary.
+ WindowList::iterator entry =
+ std::find(TestShell::windowList()->begin(),
+ TestShell::windowList()->end(),
+ GTK_WIDGET(window));
+ if (entry != TestShell::windowList()->end())
+ TestShell::windowList()->erase(entry);
+
+ if (TestShell::windowList()->empty() || shell->is_modal()) {
+ MessageLoop::current()->PostTask(FROM_HERE,
+ new MessageLoop::QuitTask());
+ }
+
+ delete shell;
+}
+
+// Callback for when you press enter in the URL box.
+void URLEntryActivate(GtkEntry* entry, TestShell* shell) {
+ const gchar* url = gtk_entry_get_text(entry);
+ shell->LoadURL(UTF8ToWide(url).c_str());
+}
+
+};
+
bool TestShell::Initialize(const std::wstring& startingURL) {
m_mainWnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(m_mainWnd), "Test Shell");
gtk_window_set_default_size(GTK_WINDOW(m_mainWnd), 640, 480);
+ g_signal_connect(G_OBJECT(m_mainWnd), "destroy",
+ G_CALLBACK(MainWindowDestroyed), this);
GtkWidget* vbox = gtk_vbox_new(FALSE, 0);
@@ -69,6 +101,8 @@ bool TestShell::Initialize(const std::wstring& startingURL) {
-1 /* append */);
m_editWnd = gtk_entry_new();
+ g_signal_connect(G_OBJECT(m_editWnd), "activate",
+ G_CALLBACK(URLEntryActivate), this);
gtk_entry_set_text(GTK_ENTRY(m_editWnd), WideToUTF8(startingURL).c_str());
GtkToolItem* tool_item = gtk_tool_item_new();