Add option to use the primary selection in addition to the clipboard
selection.
This commit is contained in:
parent
3f5fada764
commit
6af0df45d6
|
@ -110,6 +110,7 @@ typedef struct
|
||||||
static int selectionAcquired = 0; /* Contains the current selection masks */
|
static int selectionAcquired = 0; /* Contains the current selection masks */
|
||||||
static Window selectionWindow = None; /* The top level X window which owns the selection */
|
static Window selectionWindow = None; /* The top level X window which owns the selection */
|
||||||
static BOOL clearAllSelections = FALSE; /* Always lose all selections */
|
static BOOL clearAllSelections = FALSE; /* Always lose all selections */
|
||||||
|
static BOOL usePrimary = FALSE; /* Use primary selection in additon to the clipboard selection */
|
||||||
static Atom selectionCacheSrc = XA_PRIMARY; /* The selection source from which the clipboard cache was filled */
|
static Atom selectionCacheSrc = XA_PRIMARY; /* The selection source from which the clipboard cache was filled */
|
||||||
static Window PrimarySelectionOwner = None; /* The window which owns the primary selection */
|
static Window PrimarySelectionOwner = None; /* The window which owns the primary selection */
|
||||||
static Window ClipboardSelectionOwner = None; /* The window which owns the clipboard selection */
|
static Window ClipboardSelectionOwner = None; /* The window which owns the clipboard selection */
|
||||||
|
@ -259,6 +260,8 @@ static UINT ClipDataCount = 0;
|
||||||
*/
|
*/
|
||||||
static UINT wSeqNo = 0;
|
static UINT wSeqNo = 0;
|
||||||
|
|
||||||
|
#define IS_OPTION_TRUE(ch) ((ch) == 'y' || (ch) == 'Y' || (ch) == 't' || (ch) == 'T' || (ch) == '1')
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* Internal Clipboard implementation methods
|
* Internal Clipboard implementation methods
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
@ -276,7 +279,10 @@ void X11DRV_InitClipboard(void)
|
||||||
char buffer[20];
|
char buffer[20];
|
||||||
DWORD type, count = sizeof(buffer);
|
DWORD type, count = sizeof(buffer);
|
||||||
if(!RegQueryValueExA(hkey, "ClearAllSelections", 0, &type, buffer, &count))
|
if(!RegQueryValueExA(hkey, "ClearAllSelections", 0, &type, buffer, &count))
|
||||||
clearAllSelections = atoi(buffer);
|
clearAllSelections = IS_OPTION_TRUE( buffer[0] );
|
||||||
|
count = sizeof(buffer);
|
||||||
|
if(!RegQueryValueExA(hkey, "UsePrimary", 0, &type, buffer, &count))
|
||||||
|
usePrimary = IS_OPTION_TRUE( buffer[0] );
|
||||||
RegCloseKey(hkey);
|
RegCloseKey(hkey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1083,7 +1089,7 @@ HANDLE X11DRV_CLIPBOARD_ImportClipboardData(LPBYTE lpdata, UINT cBytes)
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* X11DRV_CLIPBOARD_ExportClipboardData
|
X11DRV_CLIPBOARD_ExportClipboardData
|
||||||
*
|
*
|
||||||
* Generic export clipboard data routine.
|
* Generic export clipboard data routine.
|
||||||
*/
|
*/
|
||||||
|
@ -1397,11 +1403,11 @@ static int X11DRV_CLIPBOARD_QueryAvailableData(LPCLIPBOARDINFO lpcbinfo)
|
||||||
* Query the selection owner for the TARGETS property
|
* Query the selection owner for the TARGETS property
|
||||||
*/
|
*/
|
||||||
wine_tsx11_lock();
|
wine_tsx11_lock();
|
||||||
if (XGetSelectionOwner(display,XA_PRIMARY) ||
|
if ((usePrimary && XGetSelectionOwner(display,XA_PRIMARY)) ||
|
||||||
XGetSelectionOwner(display,x11drv_atom(CLIPBOARD)))
|
XGetSelectionOwner(display,x11drv_atom(CLIPBOARD)))
|
||||||
{
|
{
|
||||||
wine_tsx11_unlock();
|
wine_tsx11_unlock();
|
||||||
if (X11DRV_CLIPBOARD_QueryTargets(display, w, XA_PRIMARY, &xe))
|
if (usePrimary && (X11DRV_CLIPBOARD_QueryTargets(display, w, XA_PRIMARY, &xe)))
|
||||||
selectionCacheSrc = XA_PRIMARY;
|
selectionCacheSrc = XA_PRIMARY;
|
||||||
else if (X11DRV_CLIPBOARD_QueryTargets(display, w, x11drv_atom(CLIPBOARD), &xe))
|
else if (X11DRV_CLIPBOARD_QueryTargets(display, w, x11drv_atom(CLIPBOARD), &xe))
|
||||||
selectionCacheSrc = x11drv_atom(CLIPBOARD);
|
selectionCacheSrc = x11drv_atom(CLIPBOARD);
|
||||||
|
@ -1974,14 +1980,14 @@ void X11DRV_AcquireClipboard(HWND hWndClipWindow)
|
||||||
|
|
||||||
wine_tsx11_lock();
|
wine_tsx11_lock();
|
||||||
/* Grab PRIMARY selection if not owned */
|
/* Grab PRIMARY selection if not owned */
|
||||||
if (!(selectionAcquired & S_PRIMARY))
|
if (usePrimary && !(selectionAcquired & S_PRIMARY))
|
||||||
XSetSelectionOwner(display, XA_PRIMARY, owner, CurrentTime);
|
XSetSelectionOwner(display, XA_PRIMARY, owner, CurrentTime);
|
||||||
|
|
||||||
/* Grab CLIPBOARD selection if not owned */
|
/* Grab CLIPBOARD selection if not owned */
|
||||||
if (!(selectionAcquired & S_CLIPBOARD))
|
if (!(selectionAcquired & S_CLIPBOARD))
|
||||||
XSetSelectionOwner(display, x11drv_atom(CLIPBOARD), owner, CurrentTime);
|
XSetSelectionOwner(display, x11drv_atom(CLIPBOARD), owner, CurrentTime);
|
||||||
|
|
||||||
if (XGetSelectionOwner(display,XA_PRIMARY) == owner)
|
if (usePrimary && XGetSelectionOwner(display,XA_PRIMARY) == owner)
|
||||||
selectionAcquired |= S_PRIMARY;
|
selectionAcquired |= S_PRIMARY;
|
||||||
|
|
||||||
if (XGetSelectionOwner(display,x11drv_atom(CLIPBOARD)) == owner)
|
if (XGetSelectionOwner(display,x11drv_atom(CLIPBOARD)) == owner)
|
||||||
|
|
|
@ -236,6 +236,7 @@ WINE REGISTRY Version 2
|
||||||
[Clipboard]
|
[Clipboard]
|
||||||
"ClearAllSelections" = "0"
|
"ClearAllSelections" = "0"
|
||||||
"PersistentSelection" = "1"
|
"PersistentSelection" = "1"
|
||||||
|
"UsePrimary" = "0"
|
||||||
|
|
||||||
; List of all directories directly contain .AFM files
|
; List of all directories directly contain .AFM files
|
||||||
[afmdirs]
|
[afmdirs]
|
||||||
|
|
Loading…
Reference in New Issue