WebGadget: Open Link in New Window not working

Just starting out? Need help? Post your questions and find answers here.
flashbob
User
User
Posts: 92
Joined: Sat May 11, 2024 4:04 pm

WebGadget: Open Link in New Window not working

Post by flashbob »

Using WebGadget on MAC (didn't test on Win7) I have following behaviour:

1. the popup menu appears in english and not in system language. Is there a way to override ?
2. Popup: Open Link in New Window does not work

Would be nice to use my own popup in my (system-) language and open the link in default browser like FireFox etc.

Here an example code:

Code: Select all

; Popup: Open Link in New Window does not work...

EnableExplicit

Enumeration FormGadget
  #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>"

OpenWindow(0, 0, 0, 600, 400, "WebGadget", #PB_Window_SystemMenu)
WebGadget(#web_gadget, 0, 5, 600, 400, "")
SetGadgetItemText(#web_gadget, #PB_Web_HtmlCode, HtmlCode$)

Repeat
  event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
Any ideas ? Thx
flashbob
User
User
Posts: 92
Joined: Sat May 11, 2024 4:04 pm

Re: WebGadget: Open Link in New Window not working

Post by flashbob »

... 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!
Post Reply