*** empty log message ***
authorroot <root>
Sat, 11 Feb 2006 02:28:19 +0000 (02:28 +0000)
committerroot <root>
Sat, 11 Feb 2006 02:28:19 +0000 (02:28 +0000)
Changes
src/hookinc.h
src/main.C
src/perl/tabbed
src/rxvtperl.xs
src/urxvt.pm

diff --git a/Changes b/Changes
index c5bc377a059697d92c22089c43cc3f56a3bde716..90d624f12848ee3068163e585c063430963e24c0 100644 (file)
--- a/Changes
+++ b/Changes
@@ -13,6 +13,10 @@ WISH: anyevent mouse notification / manage MotionMask better.
 WISH: http://www120.pair.com/mccarthy/nextstep/intro.htmld/Workspace.html is the correct nextstep look.
 DUMB: support tex fonts
 
+       - improve property handling for -pe tabbed: avoid unneecssary property
+          changes (for kde's benefit) at the expense of extra round-trips,
+          improve size hint setting.
+
 7.6  Fri Feb 10 08:52:36 CET 2006
        - changed interpretation of [alpha] colour prefix.
         - +option now really sets the option to default, instead of using the
index 33e910f3cfc0f1afb15b7a59dccb25f9ecf04e4a..ae8815a4ea0bc578d3906ca9f01093f9e3cbf2da 100644 (file)
@@ -41,6 +41,7 @@
   def (WM_DELETE_WINDOW)
   def (WM_PROTOCOLS)
   def (PROPERTY_NOTIFY)
+  def (RESIZE_ALL_WINDOWS)
 
   def (XIM_PREEDIT_START)
   def (XIM_PREEDIT_DONE)
index 9575f5b8f1346f6cf32916690c6dd03a5a8d6b9a..e0adece7da7f3bcc17dc5b2700c25e1d15fb1807 100644 (file)
@@ -706,9 +706,9 @@ rxvt_term::window_calc (unsigned int newwidth, unsigned int newheight)
         window_vt_x += sb_w;
     }
 
-  szHint.width_inc = fwidth;
+  szHint.width_inc  = fwidth;
   szHint.height_inc = fheight;
-  szHint.min_width = szHint.base_width + szHint.width_inc;
+  szHint.min_width  = szHint.base_width + szHint.width_inc;
   szHint.min_height = szHint.base_height + szHint.height_inc;
 
   if (newwidth && newwidth - szHint.base_width < max_width)
@@ -1035,7 +1035,9 @@ rxvt_term::resize_all_windows (unsigned int newwidth, unsigned int newheight, in
   int old_height = szHint.height;
 
   window_calc (newwidth, newheight);
-  XSetWMNormalHints (dpy, parent[0], &szHint);
+
+  if (!HOOK_INVOKE ((this, HOOK_RESIZE_ALL_WINDOWS, DT_INT, newwidth, DT_INT, newheight, DT_END)))
+    XSetWMNormalHints (dpy, parent[0], &szHint);
 
   if (!ignoreparent)
     {
index 100b4b9ccdf4830186a2a9069ebfe4dc44aa97c8..179fa092b0a6298d2dfffc5e09b010a958dc9641 100644 (file)
@@ -86,6 +86,12 @@ sub configure {
    );
 }
 
+sub on_resize_all_windows {
+   my ($self, $width, $height) = @_;
+
+   1
+}
+
 sub copy_properties {
    my ($self) = @_;
    my $tab = $self->{cur};
@@ -105,12 +111,17 @@ sub copy_properties {
 
       if ($atom == $wm_normal_hints) {
          my (@hints) = unpack "l!*", $items;
-
+      
          $hints[$_] += $self->{tabheight} for (4, 6, 16);
-
+      
          $items = pack "l!*", @hints;
       }
-      $self->XChangeWindowProperty ($self->parent, $atom, $type, $format, $items);
+
+      my ($dtype, $dformat, $ditems) = $self->XGetWindowProperty ($self->parent, $atom);
+
+      if ($dtype != $type or $dformat != $format or $ditems ne $items) {
+         $self->XChangeWindowProperty ($self->parent, $atom, $type, $format, $items);
+      }
    }
 
    $self->XDeleteProperty ($self->parent, $_) for keys %our_props;
index b5e49ea96618d48e167c7be394b55f8e48dc28a2..aa481a7b0c170b2c573d92b9660cdc5330b6d9c7 100644 (file)
@@ -1814,7 +1814,6 @@ rxvt_term::XChangeWindowProperty (Window window, Atom property, Atom type, int f
        XChangeProperty (THIS->dpy, window, property,
                          type, format, PropModeReplace,
                          (unsigned char *)data_, len / elemsize);
-        XSync (THIS->dpy, 0);
 }
 
 Atom
index 8b11b78748b8126fb727ce0ebd5b01d07c11a876..df0eb0b58744bb6c64a407ebdbd7576e9080f9cc 100644 (file)
@@ -555,6 +555,12 @@ resource in the @@RXVT_NAME@@(1) manpage).
 The event is simply the action string. This interface is assumed to change
 slightly in the future.
 
+=item on_resize_all_windows $tern, $new_width, $new_height
+
+Called just after the new window size has been calculcated, but before
+windows are actually being resized or hints are being set. If this hook
+returns TRUE, setting of the window hints is being skipped.
+
 =item on_x_event $term, $event
 
 Called on every X event received on the vt window (and possibly other