summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--src/communications.c16
-rw-r--r--src/communications.h2
-rw-r--r--src/main.c6
4 files changed, 26 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index e53ed69..0d91fb1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2003-04-13 Shawn Betts <sabetts@sfu.ca>
+ * src/main.c (main): if the screen was specified on the
+ command-line, send the command to the correct screen.
+
+ * src/communications.c (send_command): new argument,
+ screen_num. Get the root window for the specified
+ screen. prototype updated.
+
* src/main.c (init_screen): print the display string for
debugging.
(ratpoison_opts): fix -c option by adding a : after it.
diff --git a/src/communications.c b/src/communications.c
index 7705c85..d5e96d0 100644
--- a/src/communications.c
+++ b/src/communications.c
@@ -81,13 +81,23 @@ recieve_command_result (Window w)
}
int
-send_command (unsigned char *cmd)
+send_command (unsigned char *cmd, int screen_num)
{
Window w;
int done = 0;
- w = XCreateSimpleWindow (dpy, DefaultRootWindow (dpy),
- 0, 0, 1, 1, 0, 0, 0);
+ /* If the user specified a specific screen, then send the event to
+ that screen. */
+ if (screen_num >= 0)
+ {
+ w = XCreateSimpleWindow (dpy, RootWindow (dpy, screen_num),
+ 0, 0, 1, 1, 0, 0, 0);
+ }
+ else
+ {
+ w = XCreateSimpleWindow (dpy, DefaultRootWindow (dpy),
+ 0, 0, 1, 1, 0, 0, 0);
+ }
/* Select first to avoid race condition */
XSelectInput (dpy, w, PropertyChangeMask);
diff --git a/src/communications.h b/src/communications.h
index 0fd7937..6ece873 100644
--- a/src/communications.h
+++ b/src/communications.h
@@ -22,6 +22,6 @@
#ifndef _RATPOISON_COMMUNICATIONS_H
#define _RATPOISON_COMMUNICATIONS_H 1
-int send_command (unsigned char *cmd);
+int send_command (unsigned char *cmd, int screen_num);
#endif /* ! _RATPOISON_COMMUNICATIONS_H */
diff --git a/src/main.c b/src/main.c
index 33a9597..8c3b98b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -568,7 +568,11 @@ main (int argc, char *argv[])
for (i=0; i<cmd_count; i++)
{
- send_command (command[i]);
+ if (screen_arg)
+ send_command (command[i], screen_num);
+ else
+ send_command (command[i], -1);
+
free (command[i]);
}