Re: how to draw gtk widget(like buttons) in the firefox npapi plugin under linux?
"spark.bao" <[email protected]> Sat, 16 Nov 2013 00:12:27 -0800 (PST)
| Newsgroups | gmane.comp.mozilla.devel.plugins |
|---|---|
| Message-ID | <[email protected]> |
some supplement:
webp-npapi demo is a windowless plugin and don't has buttons while npapi-vlc demo is a window plugin defalut and has some buttons.
在 2013年11月16日星期六UTC+8上午10时14分59秒,spark.bao写道:
> Hello everybody,
>
>
>
> I has known how to write a simple npapi plugin. But now I am in troubles to draw some buttons in the plugin.
>
>
>
> I download a simple sample named webp-npapi (http://code.google.com/p/webp-npapi-linux/) and modify it, it now can work well in my firefox.
>
>
>
> I also download a complex sample named npapi-vlc (http://git.videolan.org/?p=npapi-vlc.git;a=summary) and has read it.
>
>
>
> I want to draw some buttons in my own plugin, so I imitate the codes of npapi-vlc to modify webp-npapi. I change the type of webp-npapi from windowless to window by comment the following codes in constructor of CPlugin class:
>
> (http://code.google.com/p/webp-npapi-linux/source/browse/trunk/CPlugin.cpp)
>
>
>
> /*
>
> // Make sure we can render this plugin
>
> NPBool browserSupportsWindowless = false;
>
> s_pBrowserFunctions->getvalue(instance, NPNVSupportsWindowless, &browserSupportsWindowless);
>
> if( !browserSupportsWindowless )
>
> throw std::runtime_error("Windowless mode not supported by the browser");
>
> s_pBrowserFunctions->setvalue(instance, NPPVpluginWindowBool, (void*) false);
>
> */
>
>
>
> then I start draw a button in CPlugin::setWindow() function:
>
>
>
> NPError CPlugin::setWindow(const NPWindow * const window)
>
> {
>
> #ifdef WEBPNPAPI_DEBUG
>
> printf("CPlugin::setWindow() - Window set\n");
>
> #endif
>
>
>
> m_window = *window;
>
>
>
> //I add these codes to draw a button
>
> printf("test start\n");
>
> GdkColor color_bg;
>
> gdk_color_parse("#AAAAAA", &color_bg);
>
>
>
> Window socket = (Window)m_window.window;
>
> GtkWidget *parent = gtk_plug_new(socket);
>
> gtk_widget_modify_bg(parent, GTK_STATE_NORMAL, &color_bg);
>
> GtkWidget *button = gtk_button_new_with_label("hello");
>
> gtk_container_add(GTK_CONTAINER(parent), button);
>
> gtk_widget_show_all(parent);
>
> printf("test end\n");
>
>
>
> GtkRequisition req;
>
> req.width = m_window.width;
>
> req.height = m_window.height;
>
> gtk_widget_size_request(parent, &req);
>
>
>
> return NPERR_NO_ERROR;
>
> }
>
>
>
> But, It doesn't show anything in the webpage...
>
>
>
> So I really want to know what is the most important things you must notice when you want to draw some gtk widget in your plugin?
>
>
>
> thx!
_______________________________________________
dev-tech-plugins mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-plugins