]> Dogcows Code - chaz/openbox/commitdiff
sync with bb. mostly cleanups in Window.cc
authorDana Jansens <danakj@orodu.net>
Sun, 30 Jun 2002 09:53:52 +0000 (09:53 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 30 Jun 2002 09:53:52 +0000 (09:53 +0000)
src/BaseDisplay.cc
src/Input.cc
src/Input.hh
src/Util.cc
src/Window.cc
src/Window.hh
src/Windowmenu.cc
src/blackbox.cc

index 8be0a7f781e91e58d183dfe26b70a612b49ee55d..21f9ab532a46a3faf29dec38748443d04f7f656f 100644 (file)
@@ -417,7 +417,7 @@ ScreenInfo::ScreenInfo(BaseDisplay *d, unsigned int num) {
                HeightOfScreen(ScreenOfDisplay(basedisplay->getXDisplay(),
                                               screen_number)));
   /*
-    If the default depth is at least 15 we will use that,
+    If the default depth is at least 8 we will use that,
     otherwise we try to find the largest TrueColor visual.
     Preference is given to 24 bit over larger depths if 24 bit is an option.
   */
@@ -426,7 +426,7 @@ ScreenInfo::ScreenInfo(BaseDisplay *d, unsigned int num) {
   visual = DefaultVisual(basedisplay->getXDisplay(), screen_number);
   colormap = DefaultColormap(basedisplay->getXDisplay(), screen_number);
   
-  if (depth < 15) {
+  if (depth < 8) {
     // search for a TrueColor Visual... if we can't find one...
     // we will use the default visual for the screen
     XVisualInfo vinfo_template, *vinfo_return;
index d091fefb997da737efdb88ec0db05cd523b87ffb..97dabf84e16e0a9254f7ef416c290a3d81350520 100644 (file)
@@ -253,6 +253,32 @@ void BInput::doAction(BlackboxWindow *window, Action action) const {
     if (window && window->isClosable()) window->close();
     return;
 
+  case NextWorkspace: {
+    BScreen *s;
+    unsigned int w;
+    s = _blackbox->getFocusedScreen();
+    if (s) {
+      w = s->getCurrentWorkspaceID();
+      if (++w >= s->getWorkspaceCount())
+        w = 0;
+      s->changeWorkspaceID(w);
+    }
+    return;
+  }
+
+  case PrevWorkspace: {
+    BScreen *s;
+    int w;
+    s = _blackbox->getFocusedScreen();
+    if (s) {
+      w = s->getCurrentWorkspaceID();
+      if (w-- == 0)
+        w = s->getWorkspaceCount() - 1;
+      s->changeWorkspaceID(w);
+    }
+    return;
+  }
+
   case BeginMove:
     if (window && window->isMovable()) {
       Window root_return, child_return;
index 777da31b6ae34b8c9621ca1191113d635b776c06..e354b23092ff374c6ec7ed755a482b63db807d59 100644 (file)
@@ -70,6 +70,8 @@ public:
     Iconify,
     Close,
     ShowWindowMenu,
+    NextWorkspace,
+    PrevWorkspace,
     
     BeginMove,
     BeginResizeUL,
index 9dadb3e10ea510fcd73961536fdc7f8958d83a3b..514774239c1b4de4f1c03c329f75c7c72c73c0f4 100644 (file)
@@ -188,8 +188,9 @@ string textPropertyToString(Display *display, XTextProperty& text_prop) {
   string ret;
 
   if (text_prop.value && text_prop.nitems > 0) {
-    ret = (char *) text_prop.value;
-    if (text_prop.encoding != XA_STRING) {
+    if (text_prop.encoding == XA_STRING) {
+      ret = (char *) text_prop.value;
+    } else {
       text_prop.nitems = strlen((char *) text_prop.value);
 
       char **list;
index 09d4ec60e8e78462fea953af915582b537fa9b7b..17f2e8b3ac94e8f4f1d12a4c76be11b67dc78c9b 100644 (file)
@@ -254,8 +254,7 @@ BlackboxWindow::BlackboxWindow(Blackbox *b, Window w, BScreen *s) {
   bool place_window = True;
   if (blackbox->isStartup() || isTransient() ||
       client.normal_hint_flags & (PPosition|USPosition)) {
-    setGravityOffsets();
-
+    applyGravity(frame.rect);
 
     if (blackbox->isStartup() ||
         client.rect.intersects(screen->availableArea()))
@@ -315,7 +314,7 @@ BlackboxWindow::BlackboxWindow(Blackbox *b, Window w, BScreen *s) {
   if (flags.shaded) {
     flags.shaded = False;
     shade();
-    
+
     /*
       Because the iconic'ness of shaded windows is lost, we need to set the
       state to NormalState so that shaded windows on other workspaces will not
@@ -345,7 +344,7 @@ BlackboxWindow::BlackboxWindow(Blackbox *b, Window w, BScreen *s) {
     window was iconified previously.
   */
 
-  setFocusFlag(False);
+  redrawWindowFrame();
 }
 
 
@@ -829,8 +828,7 @@ void BlackboxWindow::reconfigure(void) {
   positionWindows();
   decorate();
 
-  XClearWindow(blackbox->getXDisplay(), frame.window);
-  setFocusFlag(flags.focused);
+  redrawWindowFrame();
 
   configure(frame.rect.x(), frame.rect.y(),
             frame.rect.width(), frame.rect.height());
@@ -846,7 +844,8 @@ void BlackboxWindow::positionWindows(void) {
   XMoveResizeWindow(blackbox->getXDisplay(), frame.window,
                     frame.rect.x(), frame.rect.y(), frame.inside_w,
                     (flags.shaded) ? frame.title_h : frame.inside_h);
-  XSetWindowBorderWidth(blackbox->getXDisplay(), frame.window, frame.border_w);
+  XSetWindowBorderWidth(blackbox->getXDisplay(), frame.window,
+                        frame.border_w);
   XSetWindowBorderWidth(blackbox->getXDisplay(), frame.plate,
                         frame.mwm_border_w);
   XMoveResizeWindow(blackbox->getXDisplay(), frame.plate,
@@ -1405,9 +1404,9 @@ BlackboxWindow *BlackboxWindow::getTransientFor(void) const {
 
 void BlackboxWindow::configure(int dx, int dy,
                                unsigned int dw, unsigned int dh) {
-  bool send_event = (frame.rect.x() != dx || frame.rect.y() != dy);
+  bool send_event = False;
 
-  if ((dw != frame.rect.width()) || (dh != frame.rect.height())) {
+  if (dw != frame.rect.width() || dh != frame.rect.height()) {
     frame.rect.setRect(dx, dy, dw, dh);
     frame.inside_w = frame.rect.width() - (frame.border_w * 2);
     frame.inside_h = frame.rect.height() - (frame.border_w * 2);
@@ -1428,15 +1427,14 @@ void BlackboxWindow::configure(int dx, int dy,
 
     positionWindows();
     decorate();
-    setFocusFlag(flags.focused);
-    redrawAllButtons();
-  } else {
+    redrawWindowFrame();
+  } else if (frame.rect.x() != dx || frame.rect.y() != dy) {
+    send_event = True;
+
     frame.rect.setPos(dx, dy);
 
     XMoveWindow(blackbox->getXDisplay(), frame.window,
                 frame.rect.x(), frame.rect.y());
-
-    if (! flags.moving) send_event = True;
   }
 
   if (send_event && ! flags.moving) {
@@ -1457,8 +1455,8 @@ void BlackboxWindow::configure(int dx, int dy,
     event.xconfigure.above = frame.window;
     event.xconfigure.override_redirect = False;
 
-    XSendEvent(blackbox->getXDisplay(), client.window, True,
-               NoEventMask, &event);
+    XSendEvent(blackbox->getXDisplay(), client.window, False,
+               StructureNotifyMask, &event);
 
     screen->updateNetizenConfigNotify(&event);
   }
@@ -1511,7 +1509,7 @@ bool BlackboxWindow::setInputFocus(void) {
     return True;
   }
 
-  if (! client.rect.intersects(screen->getRect())) {
+  if (! frame.rect.intersects(screen->getRect())) {
     // client is outside the screen, move it to the center
     configure((screen->getWidth() - frame.rect.width()) / 2,
               (screen->getHeight() - frame.rect.height()) / 2,
@@ -1725,7 +1723,7 @@ void BlackboxWindow::maximize(unsigned int button) {
     blackbox_attrib.premax_x = blackbox_attrib.premax_y = 0;
     blackbox_attrib.premax_w = blackbox_attrib.premax_h = 0;
 
-    redrawAllButtons();
+    redrawAllButtons(); // in case it is not called in configure()
     setState(current_state);
     return;
   }
@@ -1739,7 +1737,6 @@ void BlackboxWindow::maximize(unsigned int button) {
 
   const Rect &screen_area = screen->availableArea();
   frame.changing = screen_area;
-  constrain(TopLeft);
 
   switch(button) {
   case 1:
@@ -1764,6 +1761,8 @@ void BlackboxWindow::maximize(unsigned int button) {
     break;
   }
 
+  constrain(TopLeft);
+
   if (flags.shaded) {
     blackbox_attrib.flags ^= AttribShaded;
     blackbox_attrib.attrib ^= AttribShaded;
@@ -1776,7 +1775,7 @@ void BlackboxWindow::maximize(unsigned int button) {
             frame.changing.width(), frame.changing.height());
   if (flags.focused)
     raise();
-  redrawAllButtons();
+  redrawAllButtons(); // in case it is not called in configure()
   setState(current_state);
 }
 
@@ -1823,7 +1822,7 @@ void BlackboxWindow::shade(void) {
                          frame.margin.bottom);
   } else {
     if (! (decorations & Decor_Titlebar))
-      return;
+      return; // can't shade it without a titlebar!
 
     XResizeWindow(blackbox->getXDisplay(), frame.window,
                   frame.inside_w, frame.title_h);
@@ -1884,13 +1883,7 @@ void BlackboxWindow::stick(void) {
 }
 
 
-void BlackboxWindow::setFocusFlag(bool focus) {
-  // only focus a window if it is visible
-  if (focus && !flags.visible)
-    return;
-
-  flags.focused = focus;
-
+void BlackboxWindow::redrawWindowFrame(void) const {
   if (decorations & Decor_Titlebar) {
     if (flags.focused) {
       if (frame.ftitle)
@@ -1966,6 +1959,17 @@ void BlackboxWindow::setFocusFlag(bool focus) {
       XSetWindowBorder(blackbox->getXDisplay(),
                        frame.plate, frame.uborder_pixel);
   }
+}
+
+
+void BlackboxWindow::setFocusFlag(bool focus) {
+  // only focus a window if it is visible
+  if (focus && !flags.visible)
+    return;
+
+  flags.focused = focus;
+
+  redrawWindowFrame();
 
   if (screen->isSloppyFocus() && screen->doAutoRaise()) {
     if (isFocused()) timer->start();
@@ -1981,8 +1985,8 @@ void BlackboxWindow::installColormap(bool install) {
   int i = 0, ncmap = 0;
   Colormap *cmaps = XListInstalledColormaps(blackbox->getXDisplay(),
                                             client.window, &ncmap);
-  XWindowAttributes wattrib;
   if (cmaps) {
+    XWindowAttributes wattrib;
     if (XGetWindowAttributes(blackbox->getXDisplay(),
                              client.window, &wattrib)) {
       if (install) {
@@ -2146,88 +2150,138 @@ void BlackboxWindow::restoreAttributes(void) {
     blackbox_attrib.premax_h = h;
   }
 
-  // with the state set it will then be the map events job to read the window's
-  // state and behave accordingly
+  // with the state set it will then be the map event's job to read the
+  // window's state and behave accordingly
 
   delete net;
 }
 
 
 /*
- * Positions the frame according the the client window position and window
- * gravity.
+ * Positions the Rect r according the the client window position and
+ * window gravity.
  */
-void BlackboxWindow::setGravityOffsets(void) {
-  // x coordinates for each gravity type
-  const int x_west = client.rect.x();
-  const int x_east = client.rect.right() - frame.inside_w + 1;
-  const int x_center = client.rect.left() +
-    ((client.rect.width() - frame.rect.width()) / 2);
-  // y coordinates for each gravity type
-  const int y_north = client.rect.y();
-  const int y_south = client.rect.bottom() - frame.inside_h + 1;
-  const int y_center = client.rect.top() +
-    ((client.rect.height() - frame.rect.height()) / 2);
+void BlackboxWindow::applyGravity(Rect &r) {
+  // apply horizontal window gravity
+  switch (client.win_gravity) {
+  default:
+  case NorthWestGravity:
+  case SouthWestGravity:
+  case WestGravity:
+    r.setX(client.rect.x());
+    break;
+
+  case NorthGravity:
+  case SouthGravity:
+  case CenterGravity:
+    r.setX(client.rect.x() - (frame.margin.left + frame.margin.right) / 2);
+    break;
+
+  case NorthEastGravity:
+  case SouthEastGravity:
+  case EastGravity:
+    r.setX(client.rect.x() - frame.margin.left - frame.margin.right);
+    break;
+
+  case ForgetGravity:
+  case StaticGravity:
+    r.setX(client.rect.x() - frame.margin.left);
+    break;
+  }
 
+  // apply vertical window gravity
   switch (client.win_gravity) {
   default:
-  case NorthWestGravity: frame.rect.setPos(x_west,   y_north);  break;
-  case NorthGravity:     frame.rect.setPos(x_center, y_north);  break;
-  case NorthEastGravity: frame.rect.setPos(x_east,   y_north);  break;
-  case SouthWestGravity: frame.rect.setPos(x_west,   y_south);  break;
-  case SouthGravity:     frame.rect.setPos(x_center, y_south);  break;
-  case SouthEastGravity: frame.rect.setPos(x_east,   y_south);  break;
-  case WestGravity:      frame.rect.setPos(x_west,   y_center); break;
-  case CenterGravity:    frame.rect.setPos(x_center, y_center); break;
-  case EastGravity:      frame.rect.setPos(x_east,   y_center); break;
+  case NorthWestGravity:
+  case NorthEastGravity:
+  case NorthGravity:
+    r.setY(client.rect.y());
+    break;
+
+  case CenterGravity:
+  case EastGravity:
+  case WestGravity:
+    r.setY(client.rect.y() - (frame.margin.top + frame.margin.bottom) / 2);
+    break;
+
+  case SouthWestGravity:
+  case SouthEastGravity:
+  case SouthGravity:
+    r.setY(client.rect.y() - frame.margin.top - frame.margin.bottom);
+    break;
 
   case ForgetGravity:
   case StaticGravity:
-    frame.rect.setPos(client.rect.x() - frame.margin.left,
-                      client.rect.y() - frame.margin.top);
+    r.setY(client.rect.y() - frame.margin.top);
     break;
   }
 }
 
 
 /*
- * The reverse of the setGravityOffsets function. Uses the frame window's
- * position to find the window's reference point.
+ * The reverse of the applyGravity function.
+ *
+ * Positions the Rect r according to the frame window position and
+ * window gravity.
  */
-void BlackboxWindow::restoreGravity(void) {
-  // x coordinates for each gravity type
-  const int x_west = frame.rect.x();
-  const int x_east = frame.rect.x() + frame.inside_w - client.rect.width();
-  const int x_center = frame.rect.x() -
-    ((client.rect.width() - frame.rect.width()) / 2);
-  // y coordinates for each gravity type
-  const int y_north = frame.rect.y();
-  const int y_south = frame.rect.y() + frame.inside_h - client.rect.height();
-  const int y_center = frame.rect.y() -
-    ((client.rect.height() - frame.rect.height()) / 2);
-
-  switch(client.win_gravity) {
+void BlackboxWindow::restoreGravity(Rect &r) {
+  // restore horizontal window gravity
+  switch (client.win_gravity) {
   default:
-  case NorthWestGravity: client.rect.setPos(x_west,   y_north);  break;
-  case NorthGravity:     client.rect.setPos(x_center, y_north);  break;
-  case NorthEastGravity: client.rect.setPos(x_east,   y_north);  break;
-  case SouthWestGravity: client.rect.setPos(x_west,   y_south);  break;
-  case SouthGravity:     client.rect.setPos(x_center, y_south);  break;
-  case SouthEastGravity: client.rect.setPos(x_east,   y_south);  break;
-  case WestGravity:      client.rect.setPos(x_west,   y_center); break;
-  case CenterGravity:    client.rect.setPos(x_center, y_center); break;
-  case EastGravity:      client.rect.setPos(x_east,   y_center); break;
+  case NorthWestGravity:
+  case SouthWestGravity:
+  case WestGravity:
+    r.setX(frame.rect.x());
+    break;
+
+  case NorthGravity:
+  case SouthGravity:
+  case CenterGravity:
+    r.setX(frame.rect.x() + (frame.margin.left + frame.margin.right) / 2);
+    break;
+
+  case NorthEastGravity:
+  case SouthEastGravity:
+  case EastGravity:
+    r.setX(frame.rect.x() + frame.margin.left + frame.margin.right);
+    break;
 
   case ForgetGravity:
   case StaticGravity:
-    client.rect.setPos(frame.rect.left() + frame.margin.left,
-                       frame.rect.top() + frame.margin.top);
+    r.setX(frame.rect.x() + frame.margin.left);
+    break;
+  }
+
+  // restore vertical window gravity
+  switch (client.win_gravity) {
+  default:
+  case NorthWestGravity:
+  case NorthEastGravity:
+  case NorthGravity:
+    r.setY(frame.rect.y());
+    break;
+
+  case CenterGravity:
+  case EastGravity:
+  case WestGravity:
+    r.setY(frame.rect.y() + (frame.margin.top + frame.margin.bottom) / 2);
+    break;
+
+  case SouthWestGravity:
+  case SouthEastGravity:
+  case SouthGravity:
+    r.setY(frame.rect.y() + frame.margin.top + frame.margin.bottom);
+    break;
+
+  case ForgetGravity:
+  case StaticGravity:
+    r.setY(frame.rect.y() + frame.margin.top);
     break;
   }
 }
 
 
-void BlackboxWindow::redrawLabel(void) {
+void BlackboxWindow::redrawLabel(void) const {
   if (flags.focused) {
     if (frame.flabel)
       XSetWindowBackgroundPixmap(blackbox->getXDisplay(),
@@ -2264,14 +2318,14 @@ void BlackboxWindow::redrawLabel(void) {
 }
 
 
-void BlackboxWindow::redrawAllButtons(void) {
+void BlackboxWindow::redrawAllButtons(void) const {
   if (frame.iconify_button) redrawIconifyButton(False);
   if (frame.maximize_button) redrawMaximizeButton(flags.maximized);
   if (frame.close_button) redrawCloseButton(False);
 }
 
 
-void BlackboxWindow::redrawIconifyButton(bool pressed) {
+void BlackboxWindow::redrawIconifyButton(bool pressed) const {
   if (! pressed) {
     if (flags.focused) {
       if (frame.fbutton)
@@ -2305,7 +2359,7 @@ void BlackboxWindow::redrawIconifyButton(bool pressed) {
 }
 
 
-void BlackboxWindow::redrawMaximizeButton(bool pressed) {
+void BlackboxWindow::redrawMaximizeButton(bool pressed) const {
   if (! pressed) {
     if (flags.focused) {
       if (frame.fbutton)
@@ -2341,7 +2395,7 @@ void BlackboxWindow::redrawMaximizeButton(bool pressed) {
 }
 
 
-void BlackboxWindow::redrawCloseButton(bool pressed) {
+void BlackboxWindow::redrawCloseButton(bool pressed) const {
   if (! pressed) {
     if (flags.focused) {
       if (frame.fbutton)
@@ -2556,26 +2610,29 @@ void BlackboxWindow::configureRequestEvent(const XConfigureRequestEvent *cr) {
   if (cr->window != client.window || flags.iconic)
     return;
 
-  int cx = frame.rect.x(), cy = frame.rect.y();
-  unsigned int cw = frame.rect.width(), ch = frame.rect.height();
-
   if (cr->value_mask & CWBorderWidth)
     client.old_bw = cr->border_width;
 
-  if (cr->value_mask & CWX)
-    cx = cr->x - frame.margin.left;
+  if (cr->value_mask & (CWX | CWY | CWWidth | CWHeight)) {
+    Rect req = frame.rect;
 
-  if (cr->value_mask & CWY)
-    cy = cr->y - frame.margin.top;
+    if (cr->value_mask & (CWX | CWY)) {
+      if (cr->value_mask & CWX)
+        client.rect.setX(cr->x);
+      if (cr->value_mask & CWY)
+        client.rect.setY(cr->y);
 
-  if (cr->value_mask & CWWidth)
-    cw = cr->width + frame.margin.left + frame.margin.right;
+      applyGravity(req);
+    }
 
-  if (cr->value_mask & CWHeight)
-    ch = cr->height + frame.margin.top + frame.margin.bottom;
+    if (cr->value_mask & CWWidth)
+      req.setWidth(cr->width + frame.margin.left + frame.margin.right);
 
-  if (frame.rect != Rect(cx, cy, cw, ch))
-    configure(cx, cy, cw, ch);
+    if (cr->value_mask & CWHeight)
+      req.setHeight(cr->height + frame.margin.top + frame.margin.bottom);
+
+    configure(req.x(), req.y(), req.width(), req.height());
+  }
 
   if (cr->value_mask & CWStackMode) {
     switch (cr->detail) {
@@ -3226,7 +3283,7 @@ void BlackboxWindow::restore(bool remap) {
   XSelectInput(blackbox->getXDisplay(), client.window, NoEventMask);
   XSelectInput(blackbox->getXDisplay(), frame.plate, NoEventMask);
 
-  restoreGravity();
+  restoreGravity(client.rect);
 
   XUnmapWindow(blackbox->getXDisplay(), frame.window);
   XUnmapWindow(blackbox->getXDisplay(), client.window);
@@ -3347,7 +3404,7 @@ void BlackboxWindow::changeBlackboxHints(BlackboxHints *net) {
     if (flags.shaded && ! (decorations & Decor_Titlebar))
       shade();
 
-    if (frame.window) {
+    if (flags.visible && frame.window) {
       XMapSubwindows(blackbox->getXDisplay(), frame.window);
       XMapWindow(blackbox->getXDisplay(), frame.window);
     }
@@ -3476,8 +3533,18 @@ void BlackboxWindow::constrain(Corner anchor, int *pw, int *ph) {
   dh -= base_height;
   dh /= client.height_inc;
 
-  if (pw) *pw = dw;
-  if (ph) *ph = dh;
+  if (pw) {
+    if (client.width_inc == 1)
+      *pw = dw + base_width;
+    else
+      *pw = dw;
+  }
+  if (ph) {
+    if (client.height_inc == 1)
+      *ph = dh + base_height;
+    else
+      *ph = dh;
+  }
 
   dw *= client.width_inc;
   dw += base_width;
index ea5c0d733c07f41a68655a1827b24faa2783ba92..eb5baefb862335a47992baf8ec4a153f08f32a00 100644 (file)
@@ -288,13 +288,14 @@ private:
   void destroyIconifyButton(void);
   void createMaximizeButton(void);
   void destroyMaximizeButton(void);
-  void redrawLabel(void);
-  void redrawAllButtons(void);
-  void redrawCloseButton(bool pressed);
-  void redrawIconifyButton(bool pressed);
-  void redrawMaximizeButton(bool pressed);
-  void restoreGravity(void);
-  void setGravityOffsets(void);
+  void redrawWindowFrame(void) const;
+  void redrawLabel(void) const;
+  void redrawAllButtons(void) const;
+  void redrawCloseButton(bool pressed) const;
+  void redrawIconifyButton(bool pressed) const;
+  void redrawMaximizeButton(bool pressed) const;
+  void applyGravity(Rect &r);
+  void restoreGravity(Rect &r);
   void setAllowedActions(void);
   void setState(unsigned long new_state);
   void upsize(void);
index bfe1a1e5461aac124498e7eb1a067d5a0392d8a9..374925be80259fa0049b4c84a72414818d3fbf5e 100644 (file)
@@ -92,7 +92,7 @@ void Windowmenu::show(void) {
 void Windowmenu::itemSelected(int button, unsigned int index) {
   if (button != 1)
     return;
-  
+
   BasemenuItem *item = find(index);
 
   hide();
@@ -114,13 +114,15 @@ void Windowmenu::itemSelected(int button, unsigned int index) {
     break;
 
   case BScreen::WindowRaise: {
-    Workspace *wkspc = getScreen()->getWorkspace(window->getWorkspaceNumber());
+    Workspace *wkspc =
+      getScreen()->getWorkspace(window->getWorkspaceNumber());
     wkspc->raiseWindow(window);
   }
     break;
 
   case BScreen::WindowLower: {
-    Workspace *wkspc = getScreen()->getWorkspace(window->getWorkspaceNumber());
+    Workspace *wkspc =
+      getScreen()->getWorkspace(window->getWorkspaceNumber());
     wkspc->lowerWindow(window);
   }
     break;
index 36828f7e5e3ce2927e24bebe5521c2a3731a0a49..00a640381530341f1974dacc5a92334ac9bb79fd 100644 (file)
@@ -1145,6 +1145,7 @@ void Blackbox::restart(const char *prog) {
   shutdown();
 
   if (prog) {
+    putenv(const_cast<char *>(screenList.front()->displayString().c_str()));
     execlp(prog, prog, NULL);
     perror(prog);
   }
This page took 0.046785 seconds and 4 git commands to generate.