summaryrefslogtreecommitdiffstats
path: root/chrome/common
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-03 01:16:27 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-03 01:16:27 +0000
commit993e6ea820a8b71c8f7767822de3b66bd2bb3c6f (patch)
tree89d2c2041a191dff5364604765e2cc89509d7126 /chrome/common
parent0a49fa28ef184ad40c406368d23c8079a34cd251 (diff)
downloadchromium_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.cc12
-rw-r--r--chrome/common/gtk_util.h5
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_