Richard B's patch to add WINDOWID support to pterm.
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Thu, 6 Mar 2003 12:57:37 +0000 (12:57 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Thu, 6 Mar 2003 12:57:37 +0000 (12:57 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/putty@2912 cda61777-01e9-0310-a592-d414129be87e

unix/pterm.c
unix/pty.c
unix/unix.h

index 66b55ff..aaed73b 100644 (file)
@@ -1978,6 +1978,13 @@ char *get_x_display(void *frontend)
     return gdk_get_display();
 }
 
+long get_windowid(void *frontend)
+{
+    Terminal *term = (Terminal *)frontend;
+    struct gui_data *inst = (struct gui_data *)(term->frontend);
+    return (long)GDK_WINDOW_XWINDOW(inst->area->window);
+}
+
 static void help(FILE *fp) {
     if(fprintf(fp,
 "pterm option summary:\n"
index 37f5050..63fe69e 100644 (file)
@@ -394,6 +394,7 @@ static char *pty_init(void *frontend, void **backend_handle, Config *cfg,
 {
     int slavefd;
     pid_t pid, pgrp;
+    long windowid;
 
     pty_frontend = frontend;
     *backend_handle = NULL;           /* we can't sensibly use this, sadly */
@@ -435,6 +436,8 @@ static char *pty_init(void *frontend, void **backend_handle, Config *cfg,
        }
     }
 
+    windowid = get_windowid(pty_frontend);
+
     /*
      * Fork and execute the command.
      */
@@ -476,6 +479,11 @@ static char *pty_init(void *frontend, void **backend_handle, Config *cfg,
            sprintf(term_env_var, "TERM=%s", cfg->termtype);
            putenv(term_env_var);
        }
+       {
+           char windowid_env_var[40];
+           sprintf(windowid_env_var, "WINDOWID=%ld", windowid);
+           putenv(windowid_env_var);
+       }
        /*
         * SIGINT and SIGQUIT may have been set to ignored by our
         * parent, particularly by things like sh -c 'pterm &' and
index e821cd4..c7f2470 100644 (file)
@@ -47,6 +47,7 @@ GLOBAL void *logctx;
 /* Things pty.c needs from pterm.c */
 char *get_x_display(void *frontend);
 int font_dimension(void *frontend, int which);/* 0 for width, 1 for height */
+long get_windowid(void *frontend);
 
 /* Things uxstore.c needs from pterm.c */
 char *x_get_default(const char *key);