On 05.09.14 18:28, Dominik Vogt wrote:
> On Fri, Sep 05, 2014 at 02:03:16PM +0300, Nikos Leonardos wrote:
> > Thank you Thomas for the quick response.
> > 
> > On 05.09.14 11:53, Thomas Adam wrote:
> > > On Fri, Sep 05, 2014 at 12:37:41PM +0300, Nikos Leonardos wrote:
> > > It will do, because those won't be applied necessarily in the order you
> > > think they will.  What I would do is to use State instead to achieve this.
> > 
> > Could you explain why they are not applied in this order? In
> > particular, why should they be applied in order for your
> > ApplyWindow function below, but not for my FuncToggleTitle
> > function above?
> 
> Fvwm is lazy about applying styles to windows to reduce the number
> of useless updates.  For example, if you read in a file that
> defines twenty new styles, you wouldn't want the windows to be
> updated twenty times.  So, fvwm waits until no more commands are
> coming in and then updates all windows that need updates at the
> same time.

Thank you Diminik for the explanation. I understand now.

> The one situation where this is confusing is in complex functions.
> Styles will only be applied when the outermost function has
> completed.  In your case, use the UpdateStyles command to apply
> style updates immediately.  From the man page:
> 
> > To force that all pending changes are applied immediately, use
> > the UpdateStyles, Refresh or RefreshWindow commands.

DestroyWindowStyle in the beginning and UpdateStyles before
maximizing did the trick for me! I ended up with the
following:


  DestroyFunc ToggleTitleMaximize
  AddToFunc   ToggleTitleMaximize
  + I DestroyWindowStyle
  + I PipeRead \
    'if xprop -id $[w.id]|grep WM_FRAME|grep -q 19; \
      then echo "WindowStyle !Title"; \
      else echo "WindowStyle Title"; fi'
  + I UpdateStyles
  + I Maximize True 0 100


Thomas and Dominik, thank you.
--Nikos
 
> (I'm not sure that the refresh commands would really do that.)
> 
> Ciao
> 
> Dominik ^_^  ^_^
> 
> -- 
> 
> Dominik Vogt
> 

Reply via email to