mart added a comment.

  In https://phabricator.kde.org/D2218#41550, @davidedmundson wrote:
  
  > When adding a new design can you describe the design in words. i.e what 
roles a class has
  >  It'd make things a lot easier.
  >
  > ScreenPool: 
  >  It seems to have two jobs:
  >
  > - you've got the converting screen "names" to IDs.
  > - "Tracking" DesktopViews
  >
  >   Why do we have m_idsForConnector and m_idsForDesktopView
  >
  >   m_idsForDesktopView  is bound to be the same as 
m_idsForConnector(view->screenToFollow()->name())   right?
  >
  >   at which point we can kill the second one, and that simplifies a lot of 
the code and avoid something that can go out of sync.
  
  
  I don't think I can drop idsForConnector, because (as connectorsForId) it 
contains associations also of screens that it remembers but may be disabled 
right now (it saves and loads to/from configuration file)
  
  i may be able to kill idsfordesktopview tough, will update the rr
  
  > Panels are now a bit of a mix:
  > 
  > In createWaitingPanels we base the panel screen based on where the 
DesktopView is
  >  in primaryChanged - we don't and use screens API directly (BUG: and 
setting screenToFollow)
  
  views gets switched in screens only in the case the primary screen changes, 
that's the one moment you want to see panels and desktops moving to a different 
screen
  
  do you think if panels would be completely managed in screenpool as well 
logic would be more readable?
  
  > in removeView we're using the View as the indicator of what screen is which.
  >  screenForContainment is also going via View.
  > 
  > Is it meant to be going via a View or not?
  > 
  > Personally I think it's a bit weird as we can generate the index directly 
from the screen, but whatever it should be it should be consistent
  
  what we know there is that a desktopview must be removed due to a screen 
death, so the panels with that screen should be killed as well.
  perhaps would be more clear if the logic for that is completely moved in 
screenpool?
  
  > bugs:
  >  I think you also have a potential crash if you switch primary on a panel 
and then disconnect the first screen
  
  hmm, i tried to brutally disconnect the primary screen, but doesn't seem to 
crash?
  
  > This code will have a bug if you drag a panelview to another screen - then 
resize the first screen.
  
  why? when dragging to another screen screentofollow of the panel would be 
changed as well.
  
  > Same for if you have a panel on a primary screen then switch primary then 
alter the screen.
  > 
  > You have a crash if:
  > 
  > - you have previously inserted a containment on screen A
  > - you reboot with screen B, C
  > - number of screens ==2, firstAvailableIndex=1
  > - the first containment will restore
  > - the second one will be a new containment  with an ID of 3
  > - createContainment checks number of ScreensAvailable and will return a 
null pointer.
  
  yes, there should be a new containment as the one of screen a should stay for 
when/if screen a is connected again (should be fine with latest libplasma)

REPOSITORY
  rPLASMAWORKSPACE Plasma Workspace

REVISION DETAIL
  https://phabricator.kde.org/D2218

EMAIL PREFERENCES
  https://phabricator.kde.org/settings/panel/emailpreferences/

To: mart, #plasma
Cc: davidedmundson, rwooninck, graesslin, plasma-devel, jensreuterberg, abetts, 
sebas
_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel

Reply via email to