提交 8e7b8558 编写于 作者: R Richard Wilkes

Allow delegates to be nil

上级 882a2e0b
...@@ -106,7 +106,11 @@ func BrowserViewCreate(client *Client, url string, settings *BrowserSettings, re ...@@ -106,7 +106,11 @@ func BrowserViewCreate(client *Client, url string, settings *BrowserSettings, re
defer func() { defer func() {
C.cef_string_userfree_free(url_) C.cef_string_userfree_free(url_)
}() }()
return (*BrowserView)(C.cef_browser_view_create(client.toNative(), (*C.cef_string_t)(url_), settings.toNative(&C.cef_browser_settings_t{}), request_context.toNative(), delegate.toNative())) var delegate_ *C.cef_browser_view_delegate_t
if delegate != nil {
delegate_ = delegate.toNative()
}
return (*BrowserView)(C.cef_browser_view_create(client.toNative(), (*C.cef_string_t)(url_), settings.toNative(&C.cef_browser_settings_t{}), request_context.toNative(), delegate_))
} }
// BrowserViewGetForBrowser (cef_browser_view_get_for_browser from include/capi/views/cef_browser_view_capi.h) // BrowserViewGetForBrowser (cef_browser_view_get_for_browser from include/capi/views/cef_browser_view_capi.h)
...@@ -338,12 +342,16 @@ func IsWebPluginUnstable(path string, callback *WebPluginUnstableCallback) { ...@@ -338,12 +342,16 @@ func IsWebPluginUnstable(path string, callback *WebPluginUnstableCallback) {
// have a visible frame on hover/press, left alignment, less padding and no // have a visible frame on hover/press, left alignment, less padding and no
// default minimum size. // default minimum size.
func LabelButtonCreate(delegate *ButtonDelegate, text string, with_frame int32) *LabelButton { func LabelButtonCreate(delegate *ButtonDelegate, text string, with_frame int32) *LabelButton {
var delegate_ *C.cef_button_delegate_t
if delegate != nil {
delegate_ = delegate.toNative()
}
text_ := C.cef_string_userfree_alloc() text_ := C.cef_string_userfree_alloc()
setCEFStr(text, text_) setCEFStr(text, text_)
defer func() { defer func() {
C.cef_string_userfree_free(text_) C.cef_string_userfree_free(text_)
}() }()
return (*LabelButton)(C.cef_label_button_create(delegate.toNative(), (*C.cef_string_t)(text_), C.int(with_frame))) return (*LabelButton)(C.cef_label_button_create(delegate_, (*C.cef_string_t)(text_), C.int(with_frame)))
} }
// ListValueCreate (cef_list_value_create from include/capi/cef_values_capi.h) // ListValueCreate (cef_list_value_create from include/capi/cef_values_capi.h)
...@@ -362,24 +370,36 @@ func ListValueCreate() *ListValue { ...@@ -362,24 +370,36 @@ func ListValueCreate() *ListValue {
// and no default minimum size. If |with_menu_marker| is true (1) a menu marker // and no default minimum size. If |with_menu_marker| is true (1) a menu marker
// will be added to the button. // will be added to the button.
func MenuButtonCreate(delegate *MenuButtonDelegate, text string, with_frame, with_menu_marker int32) *MenuButton { func MenuButtonCreate(delegate *MenuButtonDelegate, text string, with_frame, with_menu_marker int32) *MenuButton {
var delegate_ *C.cef_menu_button_delegate_t
if delegate != nil {
delegate_ = delegate.toNative()
}
text_ := C.cef_string_userfree_alloc() text_ := C.cef_string_userfree_alloc()
setCEFStr(text, text_) setCEFStr(text, text_)
defer func() { defer func() {
C.cef_string_userfree_free(text_) C.cef_string_userfree_free(text_)
}() }()
return (*MenuButton)(C.cef_menu_button_create(delegate.toNative(), (*C.cef_string_t)(text_), C.int(with_frame), C.int(with_menu_marker))) return (*MenuButton)(C.cef_menu_button_create(delegate_, (*C.cef_string_t)(text_), C.int(with_frame), C.int(with_menu_marker)))
} }
// MenuModelCreate (cef_menu_model_create from include/capi/cef_menu_model_capi.h) // MenuModelCreate (cef_menu_model_create from include/capi/cef_menu_model_capi.h)
// Create a new MenuModel with the specified |delegate|. // Create a new MenuModel with the specified |delegate|.
func MenuModelCreate(delegate *MenuModelDelegate) *MenuModel { func MenuModelCreate(delegate *MenuModelDelegate) *MenuModel {
return (*MenuModel)(C.cef_menu_model_create(delegate.toNative())) var delegate_ *C.cef_menu_model_delegate_t
if delegate != nil {
delegate_ = delegate.toNative()
}
return (*MenuModel)(C.cef_menu_model_create(delegate_))
} }
// PanelCreate (cef_panel_create from include/capi/views/cef_panel_capi.h) // PanelCreate (cef_panel_create from include/capi/views/cef_panel_capi.h)
// Create a new Panel. // Create a new Panel.
func PanelCreate(delegate *PanelDelegate) *Panel { func PanelCreate(delegate *PanelDelegate) *Panel {
return (*Panel)(C.cef_panel_create(delegate.toNative(&C.cef_panel_delegate_t{}))) var delegate_ *C.cef_panel_delegate_t
if delegate != nil {
delegate_ = delegate.toNative(&C.cef_panel_delegate_t{})
}
return (*Panel)(C.cef_panel_create(delegate_))
} }
// PostDataCreate (cef_post_data_create from include/capi/cef_request_capi.h) // PostDataCreate (cef_post_data_create from include/capi/cef_request_capi.h)
...@@ -668,7 +688,11 @@ func RunMessageLoop() { ...@@ -668,7 +688,11 @@ func RunMessageLoop() {
// ScrollViewCreate (cef_scroll_view_create from include/capi/views/cef_scroll_view_capi.h) // ScrollViewCreate (cef_scroll_view_create from include/capi/views/cef_scroll_view_capi.h)
// Create a new ScrollView. // Create a new ScrollView.
func ScrollViewCreate(delegate *ViewDelegate) *ScrollView { func ScrollViewCreate(delegate *ViewDelegate) *ScrollView {
return (*ScrollView)(C.cef_scroll_view_create(delegate.toNative())) var delegate_ *C.cef_view_delegate_t
if delegate != nil {
delegate_ = delegate.toNative()
}
return (*ScrollView)(C.cef_scroll_view_create(delegate_))
} }
// ServerCreate (cef_server_create from include/capi/cef_server_capi.h) // ServerCreate (cef_server_create from include/capi/cef_server_capi.h)
...@@ -991,7 +1015,11 @@ func TaskRunnerGetForThread(threadId ThreadID) *TaskRunner { ...@@ -991,7 +1015,11 @@ func TaskRunnerGetForThread(threadId ThreadID) *TaskRunner {
// TextfieldCreate (cef_textfield_create from include/capi/views/cef_textfield_capi.h) // TextfieldCreate (cef_textfield_create from include/capi/views/cef_textfield_capi.h)
// Create a new Textfield. // Create a new Textfield.
func TextfieldCreate(delegate *TextfieldDelegate) *Textfield { func TextfieldCreate(delegate *TextfieldDelegate) *Textfield {
return (*Textfield)(C.cef_textfield_create(delegate.toNative())) var delegate_ *C.cef_textfield_delegate_t
if delegate != nil {
delegate_ = delegate.toNative()
}
return (*Textfield)(C.cef_textfield_create(delegate_))
} }
// TimeDelta (cef_time_delta from include/internal/cef_time.h) // TimeDelta (cef_time_delta from include/internal/cef_time.h)
...@@ -1220,5 +1248,9 @@ func WaitableEventCreate(automatic_reset, initially_signaled int32) *WaitableEve ...@@ -1220,5 +1248,9 @@ func WaitableEventCreate(automatic_reset, initially_signaled int32) *WaitableEve
// WindowCreateTopLevel (cef_window_create_top_level from include/capi/views/cef_window_capi.h) // WindowCreateTopLevel (cef_window_create_top_level from include/capi/views/cef_window_capi.h)
// Create a new Window. // Create a new Window.
func WindowCreateTopLevel(delegate *WindowDelegate) *Window { func WindowCreateTopLevel(delegate *WindowDelegate) *Window {
return (*Window)(C.cef_window_create_top_level(delegate.toNative())) var delegate_ *C.cef_window_delegate_t
if delegate != nil {
delegate_ = delegate.toNative()
}
return (*Window)(C.cef_window_create_top_level(delegate_))
} }
...@@ -95,6 +95,16 @@ for i, one := range %[1]s { ...@@ -95,6 +95,16 @@ for i, one := range %[1]s {
if _, exists := edefsMap[p.BaseType]; exists { if _, exists := edefsMap[p.BaseType]; exists {
names[i] = p.Name + "_" names[i] = p.Name + "_"
fmt.Fprintf(&buffer, "%[1]s_ := C.%[2]s(*%[1]s)\n", p.Name, p.BaseType) fmt.Fprintf(&buffer, "%[1]s_ := C.%[2]s(*%[1]s)\n", p.Name, p.BaseType)
} else if p.Name == "delegate" {
names[i] = p.Name + "_"
fmt.Fprintf(&buffer, "var delegate_ %sC.%s\n", p.Ptrs, p.BaseType)
buffer.WriteString("if delegate != nil {\n")
buffer.WriteString("delegate_ = delegate.toNative(")
if sdef, exists := sdefsMap[p.BaseType]; exists && !sdef.isClassEquivalent() {
fmt.Fprintf(&buffer, "&C.%s{}", p.BaseType)
}
buffer.WriteString(")\n")
buffer.WriteString("}\n")
} }
} }
} }
...@@ -156,11 +166,15 @@ func emitParamsForCCall(buffer *strings.Builder, vars []*variable, names []strin ...@@ -156,11 +166,15 @@ func emitParamsForCCall(buffer *strings.Builder, vars []*variable, names []strin
if len(p.Ptrs) > 1 { if len(p.Ptrs) > 1 {
fmt.Fprintf(buffer, "&%s", names[i]) fmt.Fprintf(buffer, "&%s", names[i])
} else { } else {
fmt.Fprintf(buffer, "%s.toNative(", names[i]) if names[i] == "delegate_" {
if !sdef.isClassEquivalent() { buffer.WriteString("delegate_")
fmt.Fprintf(buffer, "&C.%s{}", p.BaseType) } else {
fmt.Fprintf(buffer, "%s.toNative(", names[i])
if !sdef.isClassEquivalent() {
fmt.Fprintf(buffer, "&C.%s{}", p.BaseType)
}
buffer.WriteString(")")
} }
buffer.WriteString(")")
} }
} else if len(p.Ptrs) > 0 { } else if len(p.Ptrs) > 0 {
fmt.Fprintf(buffer, "(%sC.%s)(%s)", p.Ptrs, p.BaseType, names[i]) fmt.Fprintf(buffer, "(%sC.%s)(%s)", p.Ptrs, p.BaseType, names[i])
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册