Ticket #267 (closed enhancement: fixed)

Opened 2 years ago

Last modified 22 months ago

Reimplement windows with DIVs

Reported by: Joonas Lehtinen Owned by: Matti Tahvonen
Priority: critical Milestone: 4.0.0
Component: TK4 base theme Version: 4.0.0-alpha
Keywords: Cc: joonas.lehtinen@…
Known Issue description:
Hours estimate: 0 Deadline (dd.mm.yyyy):
Known Issue version (since): Known Issue title:
Hours done: Depends to:
Affects documentation: yes
Known Issue workaround:
Affects release notes: Contract:

Description (last modified by Joonas Lehtinen) (diff)

Trying to support "real" windows is just plain silly, because:

  • It is guaranteed to be unrealiable
    • Many of us have popups blocked
    • Or "open windows to new tab" selected
    • There are countless number of browser security related bugs in different browsers
    • Sometimes new windows are opened behind other windows. There is nothing we could do about it (reliable)
  • MDI is just what people want
    • People use browsers to get everything on one page
  • DIVs are lightweight
  • Window close button should work - it is easy to do in div-based impl, but hard with real browser windows

My conclusions:

  • Do not try to support real browser windows in AJAX
  • Do not try to support real frames in AJAX

What could we do in HTML-mode? Either

  • Nothing, current implementation works. Usually.
    • HTML mode rendering must be reworked anyhow to get everything working reliably..
  • Reimplement windows with IFRAMES

Change History

Changed 2 years ago by Joonas Lehtinen

  • description modified (diff)
  • affects_documentation set
  • summary changed from Windowing is broken to Windowing is broken in AJAX - Reimplement windows with DIVs
  • hours_left changed from 30 to 50
  • known_issue_title set to Multiple windows are broken
  • type changed from defect to enhancement

Changed 2 years ago by Joonas Lehtinen

  • priority changed from blocker to major
  • summary changed from Windowing is broken in AJAX - Reimplement windows with DIVs to Reimplement windows with DIVs

Now "real" windows work, as well as they will...

Changed 23 months ago by Joonas Lehtinen

  • owner changed from Joonas Lehtinen to Matti Tahvonen
  • milestone changed from Candidates for next release to 4.0.0-rc

Windowing

createWindow(

z-index

  • Z-Index regions
    • 0-11999 Free main window
    • 12000-19999 Windows: 100 indexes / window
      • 12000 Window shadow
      • 12001 Iframe (blocker)
      • 12002 Window border and content divs (content overflow: auto|hidden)
      • 12050- Reserved
    • 20000 Modality curtain
    • 20001 Modal window
    • 30000 Popuping thingys (descriptions, contextual menus, ...),

Modality

  • What about dual modals? Not supported.
  • Server side api needed for window

Native window support

  • Native windows are kept, but not as default

Frames

  • Div frames

Borders

  • BORDER_DEFAULT "Div" window with controls (titlebar, move, close, resize,...)
  • BORDER_MINIMAL == BORDER_DEFAULT
  • BORDER_NONE "Div" window with no titlebar, small border (closable, resize, move?)
  • BORDER_NATIVE Browser native windows as well as we can

Events

Add listeners, getters and setters for:

  • Resize
  • Close
  • Position
  • Positioning base
  • Z-index changes listener

Both server and javascript sides

Changed 23 months ago by Jani Laakso

  • milestone changed from 4.0.0-rc to 4.0.1

Postponed 4.0.1.

Changed 23 months ago by Jani Laakso

  • milestone changed from 4.0.1 to 4.0.0-rc

Decided to push release date for rc two days ahead in order to try getting this ticket into rc too.

Changed 23 months ago by Jani Laakso

  • priority changed from major to critical

Changed 23 months ago by Matti Tahvonen

  • cc joonas.lehtinen@… added
  • hours_left changed from 50 to 30
  • status changed from new to assigned

in [] a first commit. Lots of bugs still though.

Joonas, one request for you:Could you make repaintAll send uidl all windows, unless they have "native" style set.

Changed 23 months ago by Matti Tahvonen

changeset for last command was [780]

Changed 23 months ago by Joonas Lehtinen

Matti, added [781] to repaint all non-native windows on repaintAll.

Changed 22 months ago by Matti Tahvonen

  • hours_left changed from 30 to 20

quite a lot of improvements done between [781]-[806]. Default (div) and "native" style windows now work side by side.

Known issues left atm:

  • API (at least closing window from client side)
  • DIV windows with external URI or resource (via window.open(blaah, ...) calls) don't work (need yet another iframe)
  • bit rude window colors

Changed 22 months ago by Matti Tahvonen

  • status changed from assigned to closed
  • hours_left changed from 20 to 0
  • resolution set to fixed

Status at [848] :

  • themes ok (Base, Corporate)
  • closing mechanism on both server and client implemented
  • at least URL opens work and most likely others too
  • fixed first bugs

I'd consider that DIV windows are already more stable than old "native". I'm closing this now. Remaining issues can be put (like feeding x,y coordinates to server) to separate tickets.

Changed 22 months ago by Jani Laakso

  • known_issue_title deleted
Note: See TracTickets for help on using tickets.