improve support of opengl for Linux
This commit is contained in:
parent
6a66b03663
commit
d5f8f8b305
@ -45,6 +45,15 @@ namespace nana
|
|||||||
|
|
||||||
namespace API
|
namespace API
|
||||||
{
|
{
|
||||||
|
#ifdef NANA_X11
|
||||||
|
//Some platform specific functions for X11
|
||||||
|
namespace x11
|
||||||
|
{
|
||||||
|
/// Returns the connection to the X server
|
||||||
|
const void* get_display();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
::nana::widget_geometrics* make_scheme(::nana::detail::scheme_factory_interface&&);
|
::nana::widget_geometrics* make_scheme(::nana::detail::scheme_factory_interface&&);
|
||||||
@ -110,6 +119,7 @@ namespace API
|
|||||||
void draw_shortkey_underline(paint::graphics&, const std::string& text, wchar_t shortkey, std::size_t shortkey_position, const point& text_pos, const color&);
|
void draw_shortkey_underline(paint::graphics&, const std::string& text, wchar_t shortkey, std::size_t shortkey_position, const point& text_pos, const color&);
|
||||||
}//end namespace dev
|
}//end namespace dev
|
||||||
|
|
||||||
|
|
||||||
/// Returns the widget pointer of the specified window.
|
/// Returns the widget pointer of the specified window.
|
||||||
/*
|
/*
|
||||||
* @param window_handle A handle to a window owning the widget.
|
* @param window_handle A handle to a window owning the widget.
|
||||||
|
@ -911,11 +911,18 @@ namespace detail
|
|||||||
case Expose:
|
case Expose:
|
||||||
if(msgwnd->visible && (msgwnd->root_graph->empty() == false))
|
if(msgwnd->visible && (msgwnd->root_graph->empty() == false))
|
||||||
{
|
{
|
||||||
nana::detail::platform_scope_guard psg;
|
nana::detail::platform_scope_guard lock;
|
||||||
//Don't copy root_graph to the window directly, otherwise the edge nimbus effect will be missed.
|
if(msgwnd->is_draw_through())
|
||||||
::nana::rectangle update_area(xevent.xexpose.x, xevent.xexpose.y, xevent.xexpose.width, xevent.xexpose.height);
|
{
|
||||||
if (!update_area.empty())
|
msgwnd->other.attribute.root->draw_through();
|
||||||
msgwnd->drawer.map(reinterpret_cast<window>(msgwnd), true, &update_area);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Don't copy root_graph to the window directly, otherwise the edge nimbus effect will be missed.
|
||||||
|
::nana::rectangle update_area(xevent.xexpose.x, xevent.xexpose.y, xevent.xexpose.width, xevent.xexpose.height);
|
||||||
|
if (!update_area.empty())
|
||||||
|
msgwnd->drawer.map(reinterpret_cast<window>(msgwnd), true, &update_area);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KeyPress:
|
case KeyPress:
|
||||||
|
@ -21,6 +21,9 @@
|
|||||||
#include <nana/gui/detail/events_operation.hpp>
|
#include <nana/gui/detail/events_operation.hpp>
|
||||||
|
|
||||||
#include "../../source/detail/platform_abstraction.hpp"
|
#include "../../source/detail/platform_abstraction.hpp"
|
||||||
|
#ifdef NANA_X11
|
||||||
|
# include "../../source/detail/posix/platform_spec.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace nana
|
namespace nana
|
||||||
{
|
{
|
||||||
@ -52,6 +55,19 @@ namespace nana
|
|||||||
}
|
}
|
||||||
namespace API
|
namespace API
|
||||||
{
|
{
|
||||||
|
#ifdef NANA_X11
|
||||||
|
//Some platform specific functions for X11
|
||||||
|
namespace x11
|
||||||
|
{
|
||||||
|
/// Returns the connection to the X server
|
||||||
|
const void* get_display()
|
||||||
|
{
|
||||||
|
auto & spec = nana::detail::platform_spec::instance();
|
||||||
|
return spec.open_display();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
using basic_window = ::nana::detail::basic_window;
|
using basic_window = ::nana::detail::basic_window;
|
||||||
using interface_type = ::nana::detail::native_interface;
|
using interface_type = ::nana::detail::native_interface;
|
||||||
|
|
||||||
@ -392,7 +408,6 @@ namespace API
|
|||||||
}
|
}
|
||||||
}//end namespace dev
|
}//end namespace dev
|
||||||
|
|
||||||
|
|
||||||
widget* get_widget(window wd)
|
widget* get_widget(window wd)
|
||||||
{
|
{
|
||||||
internal_scope_guard lock;
|
internal_scope_guard lock;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user