| 
									
										
										
										
											2020-03-29 18:32:02 -07:00
										 |  |  | // Copyright (c) 2020 Slack Technologies, Inc.
 | 
					
						
							|  |  |  | // Use of this source code is governed by the MIT license that can be
 | 
					
						
							|  |  |  | // found in the LICENSE file.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "shell/browser/api/ui_event.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "gin/data_object_builder.h"
 | 
					
						
							| 
									
										
										
										
											2020-06-22 09:35:24 -07:00
										 |  |  | #include "shell/browser/javascript_environment.h"
 | 
					
						
							| 
									
										
										
										
											2020-03-29 18:32:02 -07:00
										 |  |  | #include "ui/events/event_constants.h"
 | 
					
						
							|  |  |  | #include "v8/include/v8.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace electron { | 
					
						
							|  |  |  | namespace api { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | constexpr int mouse_button_flags = | 
					
						
							|  |  |  |     (ui::EF_RIGHT_MOUSE_BUTTON | ui::EF_LEFT_MOUSE_BUTTON | | 
					
						
							|  |  |  |      ui::EF_MIDDLE_MOUSE_BUTTON | ui::EF_BACK_MOUSE_BUTTON | | 
					
						
							|  |  |  |      ui::EF_FORWARD_MOUSE_BUTTON); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | v8::Local<v8::Object> CreateEventFromFlags(int flags) { | 
					
						
							| 
									
										
										
										
											2020-06-22 09:35:24 -07:00
										 |  |  |   v8::Isolate* isolate = JavascriptEnvironment::GetIsolate(); | 
					
						
							| 
									
										
										
										
											2020-03-29 18:32:02 -07:00
										 |  |  |   const int is_mouse_click = static_cast<bool>(flags & mouse_button_flags); | 
					
						
							|  |  |  |   return gin::DataObjectBuilder(isolate) | 
					
						
							|  |  |  |       .Set("shiftKey", static_cast<bool>(flags & ui::EF_SHIFT_DOWN)) | 
					
						
							|  |  |  |       .Set("ctrlKey", static_cast<bool>(flags & ui::EF_CONTROL_DOWN)) | 
					
						
							|  |  |  |       .Set("altKey", static_cast<bool>(flags & ui::EF_ALT_DOWN)) | 
					
						
							|  |  |  |       .Set("metaKey", static_cast<bool>(flags & ui::EF_COMMAND_DOWN)) | 
					
						
							|  |  |  |       .Set("triggeredByAccelerator", !is_mouse_click) | 
					
						
							|  |  |  |       .Build(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }  // namespace api
 | 
					
						
							|  |  |  | }  // namespace electron
 |