rehack of patch for openbox

Matthias Huber matthias.huber at wollishausen.de
Wed Nov 11 11:30:45 CET 2009


Because of the discussion "optimal rotation" i rewrote the hack for openbox.

* it is now using the real screen size and recognizes therefore the 
rotation.
* popups are now not more fullscreen
* the before patched file prompt.c is now again original.

is there someone willing to re-test my patch before giving this into the 
repo ?

here we go:

*** openbox-3.4.7.2.original/openbox/client.c    2009-11-10 
17:45:17.000000000 +0100
--- openbox-3.4.7.2.patched/openbox/client.c    2009-11-11 
11:22:30.000000000 +0100
***************
*** 451,456 ****
--- 451,460 ----
            !(self->decorations == 0 && RECT_EQUAL(place, *monitor)))))
      {
          Rect *a = screen_area(self->desktop, SCREEN_AREA_ONE_MONITOR, 
&place);
+ /* matz added */
+         ob_debug("screen aread: %d x %d\n", a->width, a->height);
+     ob_debug("matzhack file %s line %d\n", __FILE__, __LINE__ );
+ /* end matz added */
 
          /* get the size of the frame */
          place.width += self->frame->size.left + self->frame->size.right;
***************
*** 1205,1210 ****
--- 1209,1222 ----
      ret = XGetWindowAttributes(ob_display, self->window, &wattrib);
      g_assert(ret != BadWindow);
 
+ /* matz changed */
+     if ( self->type == 7 ) {
+         ob_debug("matzhack file %s line %d\n", __FILE__, __LINE__ );
+         wattrib.width = WidthOfScreen(DefaultScreenOfDisplay(ob_display));
+         wattrib.height = 
HeightOfScreen(DefaultScreenOfDisplay(ob_display));
+     }
+ /* end matz changed */
+
      RECT_SET(self->area, wattrib.x, wattrib.y, wattrib.width, 
wattrib.height);
      POINT_SET(self->root_pos, wattrib.x, wattrib.y);
      self->border_width = wattrib.border_width;
***************
*** 1625,1638 ****
  {
      XSizeHints size;
      glong ret;
 
      /* defaults */
      self->min_ratio = 0.0f;
      self->max_ratio = 0.0f;
      SIZE_SET(self->size_inc, 1, 1);
!     SIZE_SET(self->base_size, -1, -1);
!     SIZE_SET(self->min_size, 0, 0);
!     SIZE_SET(self->max_size, G_MAXINT, G_MAXINT);
 
      /* get the hints from the window */
      if (XGetWMNormalHints(ob_display, self->window, &size, &ret)) {
--- 1637,1666 ----
  {
      XSizeHints size;
      glong ret;
+ /* matz hacked */
+ int w, h;
+ /* end matz hacked */
 
      /* defaults */
      self->min_ratio = 0.0f;
      self->max_ratio = 0.0f;
+
+ /* matz hacked */
+     ob_debug("matzhack file %s line %d\n", __FILE__, __LINE__ );
+     w = WidthOfScreen(DefaultScreenOfDisplay(ob_display));
+     h = HeightOfScreen(DefaultScreenOfDisplay(ob_display));
+     if ( self->type != 7 ) {
+         SIZE_SET(self->base_size, -1, -1);
+         SIZE_SET(self->min_size, 0, 0);
+         SIZE_SET(self->max_size, G_MAXINT, G_MAXINT);
+     }
+     else {
+         SIZE_SET(self->base_size, w, h);
+         SIZE_SET(self->min_size, w, h);
+         SIZE_SET(self->max_size, w, h);
+     }
      SIZE_SET(self->size_inc, 1, 1);
! /* end matz hacked */
 
      /* get the hints from the window */
      if (XGetWMNormalHints(ob_display, self->window, &size, &ret)) {
***************
*** 1655,1667 ****
          }
 
          if (size.flags & PMinSize)
!             SIZE_SET(self->min_size, size.min_width, size.min_height);
 
          if (size.flags & PMaxSize)
!             SIZE_SET(self->max_size, size.max_width, size.max_height);
 
          if (size.flags & PBaseSize)
              SIZE_SET(self->base_size, size.base_width, size.base_height);
 
          if (size.flags & PResizeInc && size.width_inc && size.height_inc)
              SIZE_SET(self->size_inc, size.width_inc, size.height_inc);
--- 1683,1698 ----
          }
 
          if (size.flags & PMinSize)
!               SIZE_SET(self->min_size, size.min_width, size.min_height);
! /*            SIZE_SET(self->min_size, 480, 550); */
 
          if (size.flags & PMaxSize)
!               SIZE_SET(self->max_size, size.max_width, size.max_height);
! /*            SIZE_SET(self->max_size, 480, 640); */
 
          if (size.flags & PBaseSize)
              SIZE_SET(self->base_size, size.base_width, size.base_height);
+ /*          SIZE_SET(self->base_size, 480, 550); */
 
          if (size.flags & PResizeInc && size.width_inc && size.height_inc)
              SIZE_SET(self->size_inc, size.width_inc, size.height_inc);
***************
*** 2986,2991 ****
--- 3017,3033 ----
          }
      }
 
+ /* matz hacked */
+     if ( self->type == 7 ) {
+     ob_debug("matzhack x,y,w,h: %d,%d %dx%d  file %s line %d\n", *x, 
*y, *w, *h, __FILE__, __LINE__ );
+         *x = *y = 0;
+         *w = WidthOfScreen(DefaultScreenOfDisplay(ob_display));
+     *h = HeightOfScreen(DefaultScreenOfDisplay(ob_display)) - 
ob_rr_theme->title_height;
+     ob_debug("matzhack x,y,w,h: %d,%d %dx%d  file %s line %d\n", *x, 
*y, *w, *h, __FILE__, __LINE__ );
+     }
+ /* end matz hacked */
+
+
      g_assert(*w > 0);
      g_assert(*h > 0);
  }
***************
*** 3098,3103 ****
--- 3140,3157 ----
          event.xconfigure.event = self->window;
          event.xconfigure.window = self->window;
 
+ /* matz hacked */
+         if ( self->type == 7 ) {
+             ob_debug("matzhack file %s line %d\n", __FILE__, __LINE__ );
+             self->root_pos.x = self->root_pos.y = 0;
+ /*
+             if ( self->root_pos.y == 0 ) { // FIXME: can not be, we 
have always a decoration ?
+                 self->root_pos.y = 58; // FIXME: determine real size 
of decoration
+                 h = h - self->root_pos.y;
+             }
+ */
+         }
+ /* end matz hacked */
          ob_debug("Sending ConfigureNotify to %s for %d,%d %dx%d\n",
                   self->title, self->root_pos.x, self->root_pos.y, w, h);
 




More information about the devel mailing list