[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

* Private IBase variables have moved/changed.  Reading them is illegal.
  Writing them is both illegal and dangerous.

* Poking IBase MaxMouse variables is now a no-op, but please stop poking
  when Intuition version is >35.

* If you are opening on the Workbench screen, be prepared to handle
  larger screens, new modes, new fonts, and overscan.  Also see Font
  compatibility information. o Screen TopEdge and LeftEdge may be negative.

* LeftAmiga-Select is used for dragging large screens.  Do not use
  LeftAmiga-key combinations for application command keys.  The LeftAmiga
  key is reserved for system use.

* For compatibility reasons, GetScreenData() lies if the Workbench
  screen is a mode only available after release 1.3.  It will try to
  return the most sensible mode that old OpenScreen() can open.  This was
  necessary to keep applications that cloned the Workbench screen from
  having problems.  To properly handle new modes, see LockPubScreen() and
  GetVPModeID(), and the SA_DisplayID tag for OpenScreenTags().

* Using combined RAWKEY and VANILLAKEY now gives VANILLAKEY messages for
  regular keys, and RAWKEY messages for special keys (fkeys, help, etc.)

* Moving a SIMPLE_REFRESH window does not necessarily cause a
  REFRESHWINDOW event because layers now preserves all the bits it can.

* Sizing a SIMPLE_REFRESH window will not clear it.

* MENUVERIFY/REQVERIFY/SIZEVERIFY can time out if you take too long to
  ReplyMsg().

* Menu-key equivalents are ignored while string gadgets are active.

* You can't type control characters into string gadgets by default.  Use
  CTRL-Amiga-char to type them in or use IControl Prefs to change the
  default behavior.

* Width and Height parameters of AutoRequest are ignored.

* New default colors, new gadget images.

* JAM1 rendering/text in border may be invisible gadgets over default
  colors.

* The cursor for string gadgets can no longer reside outside the cleared
  container area.  If your gadget is (for example) 32 pixels wide, with
  MaxChars of 4, then all 32 pixels will be cleared, instead of just 24,
  as was true in 1.3.

* Applications and requesters that fail to specify desired fonts will
  get user 2.0 Font Pref fonts that may be much larger or proportional in
  some cases.  Screen and window titlebars (and their gadgets) will be
  taller when accomodating a larger font.  Applications which open on the
  Workbench screen must adapt to variable size titlebars.  Any application
  which accepts system defaults for its screen, window, menu, Text or
  IntuiText fonts must adapt to different fonts and titlebar sizes.
  String gadgets whose height is too small for a font will revert to a
  smaller ROM font.  There are now 2 different user-specifiable default
  system fonts which affect different Intuition features.  This can lead
  to mismatches in mixed gadgets and text.  For more information on where
  various system fonts come from and how they can be controlled, see
  Intuition Fonts in the Additional Information section at the end of this
  document.

* Don't modify gadgets directly without first removing them from the
  gadget list, unless you are using a system function designed for that
  purpose, such as NewModifyProp() or SetGadgetAttrs().

* Don't rely on NewModifyProp() to fully refresh your prop gadget after
  you've changed values in the structure.  NewModifyProp() will only
  correctly refresh changes which were passed to it as parameters.  Use
  Remove/Add/RefreshGList() for other kinds of changes.

* Custom screens must be of type CUSTOMSCREEN or PUBLICSCREEN.  Other
  types are illegal.  One application opens their screen with
  NewScreen.Type = 0 (instead of CUSTOMSCREEN, 0x0F).  Then, when they
  open their windows, they specify NewWindow.Type of 0 and
  NewWindow.Screen of NULL, instead of Type=CUSTOMSCREEN and Screen=(their
  screen).  That happened to work before, but they are now broken.

* Referencing IntuiMessage->IAddress as a Gadget pointer on non-Gadget
  IDCMP messages, or as a Window pointer (rather than looking at the
  proper field IntuiMessage->IDCMPWindow) may now cause Enforcer hits or
  crashes.  The IAddress field used to always contain a pointer of some
  type even for IDCMP events for which no IAddress value is documented.
  Now, for some IDCMP events, IAddress may contain other data (a
  non-address, possibly an odd value which would crash a 68000 based
  system).

* Using Intuition flags in the wrong structure fields (for example,
  using ACTIVEWINDOW instead of ACTIVATE).  To alleviate this problem, 2.0
  has introduced modern synonyms that are less confusing than the old
  ones.  For example, IDCMP_ACTIVEWINDOW and WFLG_ACTIVATE.  This
  particular example of confusion (there are several) was the nastiest,
  since IDCMP_ACTIVEWINDOW, when stuffed into NewWindow.Flags, corresponds
  numerically to WFLG_NW_EXTENDED, which informs Intuition that the
  NewWindow structure is immediately followed by a TagList, which isn't
  there!  Intuition does some validation on the tag-list pointer, in order
  to partially compensate.  To make your compiler use the new synonyms
  only, add this line to your code before Intuition include files: #define
  INTUI_V36_NAMES_ONLY.

* Do not place spaces into the StringInfo->Buffer of a LONGINT string
  gadget. Under 1.3, it turned out that worked, but under 2.0, the
  validation routine that checks for illegal keystrokes looks at the
  contents for illegal (i.e. non-numeric) characters, and if any are found
  assumes that the user typed an illegal keystroke.  The user's only
  options may be shift-delete or Amiga-X. Use the correct justification
  instead.

* If you specify NULL for a font in an IntuiText, don't assume you'll
  get Topaz 8.  Either explicitly supply the font you you need or be
  prepared to size accordingly.  Otherwise, your rendering will be wrong,
  and the user will have to reset his Preferences just to make your
  software work right.

* Window borders are now drawn in the screen's DetailPen and BlockPen
  rather than the Window's pens.  For best appearance, you should pass a
  SA_Pens array to OpenScreen().  This can be done in a backwards
  compatible manner with the ExtNewScreen structure and the NS_EXTENDED
  flag.

* The system now renders into the full width of window borders, although
  the widths themselves are unchanged.

* Window borders are filled upon activation and inactivation.

* Window border rendering has changed significantly for 2.0.  Note that
  the border dimensions are unchanged from 1.x (Look at
  window->BorderLeft/Top/Width/Height if you don't believe us!).  If your
  gadget intersects the border area, although it may have looked OK under
  1.3, a visual conflict may occur under 2.0.  If Intuition notices a
  gadget which is substantially in the border but not declared as such, it
  treats it as though it were (this is called ``bordersniffing'').  Never
  rely on Intuition to sniff these out for you; always declare them
  explicitly (see the Gadget Activation flags GACT_RIGHTBORDER etc.).  See
  Intuition Gadgets and Window Borders in the Additional Information
  section at the end of this article.