Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
b8fac8ad
Commit
b8fac8ad
authored
Jun 03, 2015
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Use separate helper functions for setting and resetting clipboard windows.
parent
b7f79bae
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
36 deletions
+30
-36
clipboard.c
server/clipboard.c
+30
-36
No files found.
server/clipboard.c
View file @
b8fac8ad
...
...
@@ -135,44 +135,51 @@ void cleanup_clipboard_thread(struct thread *thread)
release_object
(
winstation
);
}
static
int
set_clipboard_window
(
struct
clipboard
*
clipboard
,
user_handle_t
win
,
int
clear
)
static
int
open_clipboard
(
struct
clipboard
*
clipboard
,
user_handle_t
win
)
{
if
(
clipboard
->
open_thread
&&
clipboard
->
open_thread
!=
current
)
{
set_error
(
STATUS_WAS_LOCKED
);
return
0
;
}
else
if
(
!
clear
)
{
clipboard
->
open_win
=
win
;
clipboard
->
open_thread
=
current
;
}
else
clipboard
->
open_win
=
win
;
clipboard
->
open_thread
=
current
;
return
1
;
}
static
int
close_clipboard
(
struct
clipboard
*
clipboard
)
{
if
(
clipboard
->
open_thread
!=
current
)
{
clipboard
->
open_thread
=
NULL
;
clipboard
->
open_win
=
0
;
set_win32_error
(
ERROR_CLIPBOARD_NOT_OPEN
)
;
return
0
;
}
clipboard
->
open_thread
=
NULL
;
clipboard
->
open_win
=
0
;
return
1
;
}
static
int
set_clipboard_owner
(
struct
clipboard
*
clipboard
,
user_handle_t
win
,
int
clear
)
static
int
set_clipboard_owner
(
struct
clipboard
*
clipboard
,
user_handle_t
win
)
{
if
(
clipboard
->
open_thread
&&
clipboard
->
open_thread
->
process
!=
current
->
process
)
{
set_error
(
STATUS_WAS_LOCKED
);
return
0
;
}
else
if
(
!
clear
)
{
clipboard
->
owner_win
=
win
;
clipboard
->
owner_thread
=
current
;
}
else
clipboard
->
owner_win
=
win
;
clipboard
->
owner_thread
=
current
;
return
1
;
}
static
int
release_clipboard_owner
(
struct
clipboard
*
clipboard
)
{
if
(
clipboard
->
open_thread
&&
clipboard
->
open_thread
->
process
!=
current
->
process
)
{
clipboard
->
owner_win
=
0
;
clipboard
->
owner_thread
=
NULL
;
set_error
(
STATUS_WAS_LOCKED
)
;
return
0
;
}
clipboard
->
owner_win
=
0
;
clipboard
->
owner_thread
=
NULL
;
return
1
;
}
...
...
@@ -200,33 +207,20 @@ DECL_HANDLER(set_clipboard_info)
if
(
req
->
flags
&
SET_CB_OPEN
)
{
if
(
clipboard
->
open_thread
)
{
/* clipboard already opened */
set_error
(
STATUS_WAS_LOCKED
);
return
;
}
if
(
!
set_clipboard_window
(
clipboard
,
req
->
clipboard
,
0
))
return
;
if
(
!
open_clipboard
(
clipboard
,
req
->
clipboard
))
return
;
}
else
if
(
req
->
flags
&
SET_CB_CLOSE
)
{
if
(
clipboard
->
open_thread
!=
current
)
{
set_win32_error
(
ERROR_CLIPBOARD_NOT_OPEN
);
return
;
}
if
(
!
set_clipboard_window
(
clipboard
,
0
,
1
))
return
;
if
(
!
close_clipboard
(
clipboard
))
return
;
}
if
(
req
->
flags
&
SET_CB_OWNER
)
{
if
(
!
set_clipboard_owner
(
clipboard
,
req
->
owner
,
0
))
return
;
if
(
!
set_clipboard_owner
(
clipboard
,
req
->
owner
))
return
;
}
else
if
(
req
->
flags
&
SET_CB_RELOWNER
)
{
if
(
!
set_clipboard_owner
(
clipboard
,
0
,
1
))
return
;
if
(
!
release_clipboard_owner
(
clipboard
))
return
;
}
if
(
req
->
flags
&
SET_CB_VIEWER
)
clipboard
->
viewer
=
req
->
viewer
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment