For the events this works just fine for me .. maybe some errors haven encounter much ... feel free to feedback to me ..
now working on how to make the right click popup and for double click query ... gif me some ideas grin

Code:
on *:join:#: { 
  if ($nick == $me) {
    nicklist
  }
  elseif ($dialog(nick $+ $chan) != $null) .timer 1 3 getnicks $chan
}

on *:part:#: { if ($dialog(nick $+ $chan) != $null) && ($nick != $me) .timer 1 1 getnicks $chan }
on *:kick:#: { if ($dialog(nick $+ $chan) != $null) .timer 1 1 getnicks $chan }
on *:op:#: { if ($dialog(nick $+ $chan) != $null) .timer 1 1 getnicks $chan }
on *:deop:#: { if ($dialog(nick $+ $chan) != $null) .timer 1 1 getnicks $chan }
on *:voice:#: { if ($dialog(nick $+ $chan) != $null) .timer 1 1 getnicks $chan }
on *:devoice:#: { if ($dialog(nick $+ $chan) != $null) .timer 1 1 getnicks $chan }
on ^*:QUIT:{
  var %i = 1
  var %comchan $comchan($nick,0)
  while (%i <= %comchan) { 
    if ($dialog(nick $+ $comchan($nick,%i)) != $null) .timer 1 1 getnicks $comchan($nick,%i) 
    inc %i
  }
} 

on *:nick: {  
  var %samechan = 1
  while (%samechan <= $comchan($newnick,0)) {
    if ($dialog(nick $+ $comchan($newnick, %samechan)) != $null) .timer 1 1 getnicks $comchan($newnick,%samechan) 
    inc %samechan
  } 
}

 

the getnicks method rethrives the nicklist and populate it into the dialog ...
Hope this helps a little