Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-01-11 04:34:42 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-01-11 04:34:42 +0400
commitdef948cc2843be81743be0ffabb3e40119650a8b (patch)
treeb1adf17ec95aebea5851ae3ecc868b93833bfe91 /intern/ghost
parentef3fbdd683a98bc660e073d2cd6fe91733ab22ac (diff)
patch [#29853] UTF-8 copy&paste for X11 GHOST
Diffstat (limited to 'intern/ghost')
-rw-r--r--intern/ghost/intern/GHOST_SystemX11.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp
index d701f9264b8..de0cf641c2d 100644
--- a/intern/ghost/intern/GHOST_SystemX11.cpp
+++ b/intern/ghost/intern/GHOST_SystemX11.cpp
@@ -767,10 +767,11 @@ GHOST_SystemX11::processEvent(XEvent *xe)
case SelectionRequest:
{
XEvent nxe;
- Atom target, string, compound_text, c_string;
+ Atom target, utf8_string, string, compound_text, c_string;
XSelectionRequestEvent *xse = &xe->xselectionrequest;
target = XInternAtom(m_display, "TARGETS", False);
+ utf8_string = XInternAtom(m_display, "UTF8_STRING", False);
string = XInternAtom(m_display, "STRING", False);
compound_text = XInternAtom(m_display, "COMPOUND_TEXT", False);
c_string = XInternAtom(m_display, "C_STRING", False);
@@ -789,7 +790,7 @@ GHOST_SystemX11::processEvent(XEvent *xe)
nxe.xselection.time = xse->time;
/*Check to see if the requestor is asking for String*/
- if(xse->target == string || xse->target == compound_text || xse->target == c_string) {
+ if(xse->target == utf8_string || xse->target == string || xse->target == compound_text || xse->target == c_string) {
if (xse->selection == XInternAtom(m_display, "PRIMARY", False)) {
XChangeProperty(m_display, xse->requestor, xse->property, xse->target, 8, PropModeReplace,
(unsigned char*)txt_select_buffer, strlen(txt_select_buffer));
@@ -798,13 +799,14 @@ GHOST_SystemX11::processEvent(XEvent *xe)
(unsigned char*)txt_cut_buffer, strlen(txt_cut_buffer));
}
} else if (xse->target == target) {
- Atom alist[4];
+ Atom alist[5];
alist[0] = target;
- alist[1] = string;
- alist[2] = compound_text;
- alist[3] = c_string;
+ alist[1] = utf8_string;
+ alist[2] = string;
+ alist[3] = compound_text;
+ alist[4] = c_string;
XChangeProperty(m_display, xse->requestor, xse->property, xse->target, 32, PropModeReplace,
- (unsigned char*)alist, 4);
+ (unsigned char*)alist, 5);
XFlush(m_display);
} else {
//Change property to None because we do not support anything but STRING
@@ -1342,7 +1344,7 @@ void GHOST_SystemX11::getClipboard_xcout(XEvent evt,
GHOST_TUns8 *GHOST_SystemX11::getClipboard(bool selection) const
{
Atom sseln;
- Atom target= m_string;
+ Atom target= m_utf8_string;
Window owner;
// from xclip.c doOut() v0.11