diff options
author | evanm@google.com <evanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-01 00:28:20 +0000 |
---|---|---|
committer | evanm@google.com <evanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-01 00:28:20 +0000 |
commit | d2e4d754c163d8a98eb1b19a76cac1acfd324fde (patch) | |
tree | 0491898608e9abc214f8ce17555e162f1937a200 /webkit/tools | |
parent | d59fb48ad4e9194358b27ed1f2c91458aeafcff9 (diff) | |
download | chromium_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.cc | 34 |
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(); |