Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(242)

Side by Side Diff: views/widget/widget_gtk.cc

Issue 2682004: MessageBubble which does not require separate window and does not grab input on mouse press event. (Closed)
Patch Set: moved HandleGrabBroke to protected section Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « views/widget/widget_gtk.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "views/widget/widget_gtk.h" 5 #include "views/widget/widget_gtk.h"
6 6
7 #include <gdk/gdk.h> 7 #include <gdk/gdk.h>
8 #include <gdk/gdkx.h> 8 #include <gdk/gdkx.h>
9 #include <X11/extensions/shape.h> 9 #include <X11/extensions/shape.h>
10 10
(...skipping 1135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1146 gtk_grab_add(window_contents_); 1146 gtk_grab_add(window_contents_);
1147 } 1147 }
1148 1148
1149 void WidgetGtk::ReleaseGrab() { 1149 void WidgetGtk::ReleaseGrab() {
1150 if (has_capture_) { 1150 if (has_capture_) {
1151 has_capture_ = false; 1151 has_capture_ = false;
1152 gtk_grab_remove(window_contents_); 1152 gtk_grab_remove(window_contents_);
1153 } 1153 }
1154 } 1154 }
1155 1155
1156 void WidgetGtk::HandleGrabBroke() {
1157 if (has_capture_) {
1158 if (is_mouse_down_)
1159 root_view_->ProcessMouseDragCanceled();
1160 is_mouse_down_ = false;
1161 has_capture_ = false;
1162 }
1163 }
1164
1156 //////////////////////////////////////////////////////////////////////////////// 1165 ////////////////////////////////////////////////////////////////////////////////
1157 // WidgetGtk, private: 1166 // WidgetGtk, private:
1158 1167
1159 RootView* WidgetGtk::CreateRootView() { 1168 RootView* WidgetGtk::CreateRootView() {
1160 return new RootView(this); 1169 return new RootView(this);
1161 } 1170 }
1162 1171
1163 gboolean WidgetGtk::OnWindowPaint(GtkWidget* widget, GdkEventExpose* event) { 1172 gboolean WidgetGtk::OnWindowPaint(GtkWidget* widget, GdkEventExpose* event) {
1164 // Clear the background to be totally transparent. We don't need to 1173 // Clear the background to be totally transparent. We don't need to
1165 // paint the root view here as that is done by OnPaint. 1174 // paint the root view here as that is done by OnPaint.
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
1392 win, 1401 win,
1393 ShapeInput, 1402 ShapeInput,
1394 0, // x offset 1403 0, // x offset
1395 0, // y offset 1404 0, // y offset
1396 NULL, // rectangles 1405 NULL, // rectangles
1397 0, // num rectangles 1406 0, // num rectangles
1398 ShapeSet, 1407 ShapeSet,
1399 0); 1408 0);
1400 } 1409 }
1401 1410
1402 void WidgetGtk::HandleGrabBroke() {
1403 if (has_capture_) {
1404 if (is_mouse_down_)
1405 root_view_->ProcessMouseDragCanceled();
1406 is_mouse_down_ = false;
1407 has_capture_ = false;
1408 }
1409 }
1410
1411 void WidgetGtk::DrawTransparentBackground(GtkWidget* widget, 1411 void WidgetGtk::DrawTransparentBackground(GtkWidget* widget,
1412 GdkEventExpose* event) { 1412 GdkEventExpose* event) {
1413 cairo_t* cr = gdk_cairo_create(widget->window); 1413 cairo_t* cr = gdk_cairo_create(widget->window);
1414 cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR); 1414 cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR);
1415 gdk_cairo_region(cr, event->region); 1415 gdk_cairo_region(cr, event->region);
1416 cairo_fill(cr); 1416 cairo_fill(cr);
1417 cairo_destroy(cr); 1417 cairo_destroy(cr);
1418 } 1418 }
1419 1419
1420 //////////////////////////////////////////////////////////////////////////////// 1420 ////////////////////////////////////////////////////////////////////////////////
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
1520 GtkWindow* window = GTK_WINDOW(element->data); 1520 GtkWindow* window = GTK_WINDOW(element->data);
1521 DCHECK(window); 1521 DCHECK(window);
1522 RootView *root_view = FindRootView(window); 1522 RootView *root_view = FindRootView(window);
1523 if (root_view) 1523 if (root_view)
1524 root_view->NotifyLocaleChanged(); 1524 root_view->NotifyLocaleChanged();
1525 } 1525 }
1526 g_list_free(window_list); 1526 g_list_free(window_list);
1527 } 1527 }
1528 1528
1529 } // namespace views 1529 } // namespace views
OLDNEW
« no previous file with comments | « views/widget/widget_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698