... ok, I created a second example with its own popup. This works on Mac, but on Win7 the link should first be marked.
Is there a way to mark selected link on win 7 automatically ?
And what is the best way to check / open selected link in external browser ?
Here the code:
Code: Select all
EnableExplicit
Enumeration FormGadget
#wnd
#my_popup
#web_gadget
EndEnumeration
Define event
Define HtmlCode$= "<html><body><div contenteditable>" +
"My Link: <a href= 'https://www.purebasic.com'>www.purebasic.fr</a>"+
"</div></body></html>"
Procedure webgadget_popup()
Debug ">" + GetGadgetItemText(#web_gadget, #PB_Web_SelectedText) + "<"
DisplayPopupMenu(#my_popup, WindowID(#wnd),DesktopMouseX()+10, DesktopMouseY()+10)
EndProcedure
CompilerIf#PB_Compiler_OS = #PB_OS_MacOS
Define clsWebViewDelegate = objc_allocateClassPair_(objc_getClass_("NSObject"), "RVR_WebView_UIDelegate", 0)
class_addProtocol_(clsWebViewDelegate, objc_getProtocol_("WebUIDelegate"))
class_addMethod_(clsWebViewDelegate, sel_registerName_("webView:contextMenuItemsForElement:defaultMenuItems:"), @webgadget_popup(), "@@:@@@")
objc_registerClassPair_(clsWebViewDelegate)
CompilerEndIf
; -----------------------------------------------------------------
OpenWindow(#wnd, 0, 0, 600, 410, "HTML Popup", #PB_Window_SystemMenu )
If CreatePopupMenu(#my_popup)
MenuItem(1, "popup menu 1")
MenuItem(2, "popup menu 2")
MenuItem(3, "popup menu 3")
EndIf
WebGadget(#web_gadget, 0, 5, 600, 400, "")
SetGadgetItemText(#web_gadget, #PB_Web_HtmlCode, HtmlCode$)
; Events Mac / Win
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
CocoaMessage(#wnd, GadgetID(#web_gadget), "setUIDelegate:", CocoaMessage(#wnd, clsWebViewDelegate, "alloc"))
CompilerElseIf #PB_Compiler_OS = #PB_OS_Windows
SetGadgetAttribute(#web_gadget,#PB_Web_BlockPopupMenu,1)
BindGadgetEvent(#web_gadget, @webgadget_popup(), #PB_EventType_PopupMenu)
CompilerEndIf
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_Gadget
Case #PB_Event_RightClick
DisplayPopupMenu(#my_popup, WindowID(#wnd))
Case #PB_Event_Menu ; Popup
Select EventMenu()
Case 1 : Debug "first menu"
Case 2 : Debug "second menu"
Case 3 : Debug "third menu"
EndSelect
EndSelect
Until event = #PB_Event_CloseWindow
thanks in advance!