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

Side by Side Diff: webkit/glue/webcursor_gtk.cc

Issue 7791004: linux: delete code that worked around gtk <2.18 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « views/controls/menu/native_menu_gtk.cc ('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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "webkit/glue/webcursor.h" 5 #include "webkit/glue/webcursor.h"
6 6
7 #include <gdk/gdk.h> 7 #include <gdk/gdk.h>
8 #include <gtk/gtk.h> 8 #include <gtk/gtk.h>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 26 matching lines...) Expand all
37 32, 32); 37 32, 32);
38 cursor = gdk_cursor_new_from_pixmap(source, mask, &fg, &bg, 38 cursor = gdk_cursor_new_from_pixmap(source, mask, &fg, &bg,
39 custom.hot_x, custom.hot_y); 39 custom.hot_x, custom.hot_y);
40 g_object_unref(source); 40 g_object_unref(source);
41 g_object_unref(mask); 41 g_object_unref(mask);
42 } 42 }
43 CustomCursorsGdk[type] = cursor; 43 CustomCursorsGdk[type] = cursor;
44 return cursor; 44 return cursor;
45 } 45 }
46 46
47 // For GTK 2.16 and beyond, GDK_BLANK_CURSOR is available. Before, we have to
48 // use a custom cursor.
49 #if !GTK_CHECK_VERSION(2, 16, 0)
50 // Get/create a custom cursor which is invisible.
51 GdkCursor* GetInvisibleCustomCursor() {
52 static GdkCursor* cursor = NULL;
53 if (cursor)
54 return cursor;
55 const char bits[] = { 0 };
56 const GdkColor color = { 0, 0, 0, 0 };
57 GdkPixmap* bitmap = gdk_bitmap_create_from_data(NULL, bits, 1, 1);
58 cursor = gdk_cursor_new_from_pixmap(bitmap, bitmap, &color, &color, 0, 0);
59 g_object_unref(bitmap);
60 return cursor;
61 }
62 #endif
63
64 } // end anonymous namespace 47 } // end anonymous namespace
65 48
66 int WebCursor::GetCursorType() const { 49 int WebCursor::GetCursorType() const {
67 // http://library.gnome.org/devel/gdk/2.12/gdk-Cursors.html has images 50 // http://library.gnome.org/devel/gdk/2.12/gdk-Cursors.html has images
68 // of the default X theme, but beware that the user's cursor theme can 51 // of the default X theme, but beware that the user's cursor theme can
69 // change everything. 52 // change everything.
70 switch (type_) { 53 switch (type_) {
71 case WebCursorInfo::TypePointer: 54 case WebCursorInfo::TypePointer:
72 return GDK_LAST_CURSOR; 55 return GDK_LAST_CURSOR;
73 case WebCursorInfo::TypeCross: 56 case WebCursorInfo::TypeCross:
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 NOTIMPLEMENTED(); return GDK_LAST_CURSOR; 119 NOTIMPLEMENTED(); return GDK_LAST_CURSOR;
137 case WebCursorInfo::TypeAlias: 120 case WebCursorInfo::TypeAlias:
138 NOTIMPLEMENTED(); return GDK_LAST_CURSOR; 121 NOTIMPLEMENTED(); return GDK_LAST_CURSOR;
139 case WebCursorInfo::TypeProgress: 122 case WebCursorInfo::TypeProgress:
140 return GDK_WATCH; 123 return GDK_WATCH;
141 case WebCursorInfo::TypeNoDrop: 124 case WebCursorInfo::TypeNoDrop:
142 NOTIMPLEMENTED(); return GDK_LAST_CURSOR; 125 NOTIMPLEMENTED(); return GDK_LAST_CURSOR;
143 case WebCursorInfo::TypeCopy: 126 case WebCursorInfo::TypeCopy:
144 NOTIMPLEMENTED(); return GDK_LAST_CURSOR; 127 NOTIMPLEMENTED(); return GDK_LAST_CURSOR;
145 case WebCursorInfo::TypeNone: 128 case WebCursorInfo::TypeNone:
146 // See comment above |GetInvisibleCustomCursor()|.
147 #if !GTK_CHECK_VERSION(2, 16, 0)
148 return GDK_CURSOR_IS_PIXMAP;
149 #else
150 return GDK_BLANK_CURSOR; 129 return GDK_BLANK_CURSOR;
151 #endif
152 case WebCursorInfo::TypeNotAllowed: 130 case WebCursorInfo::TypeNotAllowed:
153 NOTIMPLEMENTED(); return GDK_LAST_CURSOR; 131 NOTIMPLEMENTED(); return GDK_LAST_CURSOR;
154 case WebCursorInfo::TypeZoomIn: 132 case WebCursorInfo::TypeZoomIn:
155 case WebCursorInfo::TypeZoomOut: 133 case WebCursorInfo::TypeZoomOut:
156 case WebCursorInfo::TypeGrab: 134 case WebCursorInfo::TypeGrab:
157 case WebCursorInfo::TypeGrabbing: 135 case WebCursorInfo::TypeGrabbing:
158 case WebCursorInfo::TypeCustom: 136 case WebCursorInfo::TypeCustom:
159 return GDK_CURSOR_IS_PIXMAP; 137 return GDK_CURSOR_IS_PIXMAP;
160 } 138 }
161 NOTREACHED(); 139 NOTREACHED();
162 return GDK_LAST_CURSOR; 140 return GDK_LAST_CURSOR;
163 } 141 }
164 142
165 gfx::NativeCursor WebCursor::GetNativeCursor() { 143 gfx::NativeCursor WebCursor::GetNativeCursor() {
166 int type = GetCursorType(); 144 int type = GetCursorType();
167 if (type == GDK_CURSOR_IS_PIXMAP) 145 if (type == GDK_CURSOR_IS_PIXMAP)
168 return GetCustomCursor(); 146 return GetCustomCursor();
169 return gfx::GetCursor(type); 147 return gfx::GetCursor(type);
170 } 148 }
171 149
172 GdkCursor* WebCursor::GetCustomCursor() { 150 GdkCursor* WebCursor::GetCustomCursor() {
173 switch (type_) { 151 switch (type_) {
174 // See comment above |GetInvisibleCustomCursor()|.
175 #if !GTK_CHECK_VERSION(2, 16, 0)
176 case WebCursorInfo::TypeNone:
177 return GetInvisibleCustomCursor();
178 #endif
179 case WebCursorInfo::TypeZoomIn: 152 case WebCursorInfo::TypeZoomIn:
180 return GetInlineCustomCursor(CustomCursorZoomIn); 153 return GetInlineCustomCursor(CustomCursorZoomIn);
181 case WebCursorInfo::TypeZoomOut: 154 case WebCursorInfo::TypeZoomOut:
182 return GetInlineCustomCursor(CustomCursorZoomOut); 155 return GetInlineCustomCursor(CustomCursorZoomOut);
183 case WebCursorInfo::TypeGrab: 156 case WebCursorInfo::TypeGrab:
184 return GetInlineCustomCursor(CustomCursorGrab); 157 return GetInlineCustomCursor(CustomCursorGrab);
185 case WebCursorInfo::TypeGrabbing: 158 case WebCursorInfo::TypeGrabbing:
186 return GetInlineCustomCursor(CustomCursorGrabbing); 159 return GetInlineCustomCursor(CustomCursorGrabbing);
187 } 160 }
188 161
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 unref_ = NULL; 207 unref_ = NULL;
235 } 208 }
236 return; 209 return;
237 } 210 }
238 211
239 void WebCursor::CopyPlatformData(const WebCursor& other) { 212 void WebCursor::CopyPlatformData(const WebCursor& other) {
240 if (other.unref_) 213 if (other.unref_)
241 unref_ = gdk_cursor_ref(other.unref_); 214 unref_ = gdk_cursor_ref(other.unref_);
242 return; 215 return;
243 } 216 }
OLDNEW
« no previous file with comments | « views/controls/menu/native_menu_gtk.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698