summaryrefslogtreecommitdiffstats
path: root/webkit/tools
diff options
context:
space:
mode:
authorevanm@google.com <evanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-01 00:28:20 +0000
committerevanm@google.com <evanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-01 00:28:20 +0000
commitd2e4d754c163d8a98eb1b19a76cac1acfd324fde (patch)
tree0491898608e9abc214f8ce17555e162f1937a200 /webkit/tools
parentd59fb48ad4e9194358b27ed1f2c91458aeafcff9 (diff)
downloadchromium_src-d2e4d754c163d8a98eb1b19a76cac1acfd324fde.zip
chromium_src-d2e4d754c163d8a98eb1b19a76cac1acfd324fde.tar.gz
chromium_src-d2e4d754c163d8a98eb1b19a76cac1acfd324fde.tar.bz2
Hook up some GTK signals:
- Enter in URL box loads URL. - Closing the window shuts everything down. Review URL: http://codereview.chromium.org/8780 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4353 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/tools')
-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();