diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-03 01:16:27 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-03 01:16:27 +0000 |
commit | 993e6ea820a8b71c8f7767822de3b66bd2bb3c6f (patch) | |
tree | 89d2c2041a191dff5364604765e2cc89509d7126 /chrome/common | |
parent | 0a49fa28ef184ad40c406368d23c8079a34cd251 (diff) | |
download | chromium_src-993e6ea820a8b71c8f7767822de3b66bd2bb3c6f.zip chromium_src-993e6ea820a8b71c8f7767822de3b66bd2bb3c6f.tar.gz chromium_src-993e6ea820a8b71c8f7767822de3b66bd2bb3c6f.tar.bz2 |
GTK: fix some memory leaks, streamline a common operation.
BUG=none
TEST=trybots
Review URL: http://codereview.chromium.org/562019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37921 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common')
-rw-r--r-- | chrome/common/gtk_util.cc | 12 | ||||
-rw-r--r-- | chrome/common/gtk_util.h | 5 |
2 files changed, 17 insertions, 0 deletions
diff --git a/chrome/common/gtk_util.cc b/chrome/common/gtk_util.cc index 37fb13e..b8e7aeb 100644 --- a/chrome/common/gtk_util.cc +++ b/chrome/common/gtk_util.cc @@ -692,4 +692,16 @@ void WrapLabelAtAllocationHack(GtkWidget* label) { G_CALLBACK(OnLabelAllocate), NULL); } +WindowOpenDisposition DispositionForCurrentButtonPressEvent() { + GdkEvent* event = gtk_get_current_event(); + if (!event) { + NOTREACHED(); + return NEW_FOREGROUND_TAB; + } + + guint state = event->button.state; + gdk_event_free(event); + return event_utils::DispositionFromEventFlags(state); +} + } // namespace gtk_util diff --git a/chrome/common/gtk_util.h b/chrome/common/gtk_util.h index c13b904..149253b 100644 --- a/chrome/common/gtk_util.h +++ b/chrome/common/gtk_util.h @@ -242,6 +242,11 @@ void SuppressDefaultPainting(GtkWidget* container); // proper width. void WrapLabelAtAllocationHack(GtkWidget* label); +// Get the window open disposition from the state in gtk_get_current_event(). +// This is designed to be called inside a "clicked" event handler. It is an +// error to call it when gtk_get_current_event() won't return a GdkEventButton*. +WindowOpenDisposition DispositionForCurrentButtonPressEvent(); + } // namespace gtk_util #endif // CHROME_COMMON_GTK_UTIL_H_ |