Skip to content

Releases: MorquinDevlar/mdw

v0.9.6

Choose a tag to compare

@MorquinDevlar MorquinDevlar released this 24 Sep 08:48
v0.9.6
aafea3d

Fixed

  • mdw.swapPackage no longer reports success for a swap Mudlet refused: while a
    profile save blocks the uninstall it retries for up to 15 seconds, and it
    returns "retrying" or "queued" as a second value while the swap is still
    pending.

v0.9.5

Choose a tag to compare

@MorquinDevlar MorquinDevlar released this 24 Sep 07:45
v0.9.5
0fee7e8

Changed

  • mdw.setWidgetRows and mdw.setPromptGaugeValue no longer reach Qt for a
    value, label or row position that has not changed, so repainting on every
    GMCP push costs nothing between changes.

v0.9.4

Choose a tag to compare

@MorquinDevlar MorquinDevlar released this 08 Sep 07:07
v0.9.4
85fb360

Added

  • Floats snap to each other and travel together; an edge-attached float leads.
  • Resizing a float snaps its dragged border to nearby floats and the area edges.

Changed

  • A joined float snaps only against the float it is joined to.
  • An attached float lights only the border on the side it is attached to.
  • mdw.config.floatSnapGap is 7 (was 2), matching the edge clearance.

v0.9.3

Choose a tag to compare

@MorquinDevlar MorquinDevlar released this 07 Sep 19:07
v0.9.3
e52e500

Added

  • mdw.addHeaderMenu(spec) / mdw.removeHeaderMenu(id) / mdw.headerMenus():
    a game package can hang a dropdown of its own in the header bar, beside Font
    Size and Theme, for choices that are a set rather than a single gear row.
    Rows take the context menu's shape (label, onClick, separator,
    checked, keepOpen), items may be a function re-evaluated on every open,
    and menus are owner-stamped and reaped with the package like widgets and gear
    rows. Game menus follow MDW's own buttons, so none of them move.
  • Header menus (mdw.addHeaderMenu) accept a type = "slider" row: dragged
    rather than clicked, taking the same fields as a widget slider row and
    going through the same gesture code, so a menu can carry a volume or
    brightness control. The menu stays open while the pointer is down.
  • A header-menu row can be built from SEGMENTS laid left to right - parts,
    each a label, a slider or a checkbox with its own click target, one of them
    flex to take the width the others leave. "Volume [====] [ ] Mute" is one
    row rather than three.
  • A header-menu row can carry TWO actions: onCheck runs when the checkbox
    itself is clicked, onClick when the rest of the row is. That makes a list
    row whose box and whose text mean different things - a playlist tick beside
    a title that plays - without listing the same items twice.
  • A header-menu row that declares neither onClick nor onCheck is inert:
    no pointer cursor, no hover highlight. A caption or a hint that lit up under
    the pointer read as a button that did nothing.

Changed

  • Two floats dragged against each other now snap mdw.config.floatSnapGap (2)
    pixels apart instead of edge to edge, so both panels keep a visible border
    instead of sharing one thick smeared line. Lining floats up (left-to-left,
    right-to-right) is unchanged.

Fixed

  • Clicking a checkbox or a keepOpen row in a header menu no longer throws a
    Lua error. Flipping one box rebuilt the whole card, which deletes the very
    label Mudlet is dispatching the click on; such a row now just re-reads its
    own getters and re-echoes itself, creating and destroying nothing. The same
    in-place refresh carries a re-declaration while the menu is open, so a
    checkbox the game confirms a moment later still catches up on its own.
  • Gauge and slider rows no longer error on their first paint. A fresh Geyser
    label carries no stylesheet, getLabelStyleSheet answers nil for one, and
    getLabelFormat indexes that - so the first thing to echo into a gauge's
    text label (setFgColor is an echo) threw a Lua error per repaint. Both the
    widget rows and the new menu sliders now style that label directly before
    anything writes to it, rather than through Geyser.Gauge:setStyleSheet,
    which would need a front and a back stylesheet it has no reason to set.
  • An open header menu now repaints when its owner re-declares it. items was
    read on open only, so a menu whose rows track live game state - a checkbox
    the server confirms a moment after the click - sat stale in front of the
    player until they closed and reopened it, making a tick look like it landed
    on the wrong row.

v0.9.2

Choose a tag to compare

@MorquinDevlar MorquinDevlar released this 06 Sep 14:31
v0.9.2
6489f82

Added

  • A float left sitting on an edge of the main console area is ATTACHED to it:
    it wears a lighter resize border, and it travels with that edge when the
    chrome moves - a sidebar dragged wider, a sidebar or the prompt bar toggled,
    a chrome bar appearing, the window resized. Each axis attaches on its own.
    Attachment is read off the float's position, so one restored from the layout
    on an edge is attached like a just-dragged one, and dragging it clear
    detaches it.

Changed

  • Snapping a float to the main console area's own edges leaves
    mdw.config.floatSnapInset (5) of clearance instead of landing flush, so a
    snapped panel sits a few pixels off the top bar and off the console's
    scrollbar rather than against them - the clearance the left edge already got
    from the dock gap. Snapping to another float is unchanged (still flush).

Fixed

  • Closing a floating panel with its tab x and opening it again brings it back
    where it was, instead of centring it. A sole member's x now closes its
    GROUP, the way the Widgets menu already did, so nothing destroys the record
    of where the panel was; a group closed as a whole also stays closed across a
    profile load, which it previously did not.

v0.9.1

Choose a tag to compare

@MorquinDevlar MorquinDevlar released this 05 Sep 18:58
v0.9.1
0fb28db

Added

  • mdw.createBar takes a reflow = function(bar) callback and calls it on
    every layout pass - window resize, sidebar toggle, splitter drag,
    font-family change - and once as the bar is created. A bar's text now
    follows a drag live, the way widget content does, instead of waiting for
    the package's own ticker to repaint it. Bars without a reflow are
    unchanged.

Fixed

  • A font-family change re-wraps and re-centers chrome bars instead of leaving
    them laid out for the previous font's glyph width.

v0.9.0

Choose a tag to compare

@MorquinDevlar MorquinDevlar released this 05 Sep 08:47
v0.9.0
8069691

Added

  • Floating groups snap while they are dragged: flush to the main console
    area's edges, and to the other floats' edges both ways round - lined up in a
    column, or sitting side by side and stacked. The right-hand edge stops short
    of the console's scrollbar, so a snapped float never covers it. The distance
    is mdw.config.floatSnapDistance (8); 0 restores pixel dragging. Each axis
    snaps on its own, so a float can catch the top edge and stay free sideways.
  • mdw.mainArea() returns the main console area as x, y, width, height - the
    rectangle mdw.floatPos and the snapping both measure against.
  • mdw.restoreMainFont() hands the main console back to the family MDW
    captured before it applied the game's own, falling back to Mudlet's bundled
    monospace if that family has gone too. A package that BUNDLES the font MDW
    renders in should call it from its sysUninstallPackage handler: Mudlet
    unloads a package's fonts while uninstalling it and then warns the player
    that the profile's font is missing, and that check runs after the handler.
    MDW's own full uninstall now uses the same function.

Fixed

  • A floating group came back at the default corner after a package update
    instead of where the player left it. saveLayout has always recorded a
    float's x/y, but rebuildStacksFromLayout restored a group's dock, row,
    size and active tab and never those - and for a float the position IS the
    whole placement.

v0.8.2

Choose a tag to compare

@MorquinDevlar MorquinDevlar released this 05 Sep 08:13
v0.8.2
bcd9766

Fixed

  • mdw.floatPos measured the main console area from a sidebar's bare width,
    where applyBorders reserves that width plus dockGap, and took no dock gap
    off the bottom either. An anchored float sat a dock gap short on those edges -
    visibly so at a corner, where the top gap was right and the side gap was not.
    Both now use the same arithmetic; a centred float moves by at most half a
    dock gap, onto the true centre.

v0.8.1

Choose a tag to compare

@MorquinDevlar MorquinDevlar released this 05 Sep 07:14
v0.8.1
fe62628

Fixed

  • A float anchored topright or bottomright landed underneath the main
    console's scrollbar, which Mudlet draws inside the console's own right edge.
    Right-hand anchors now keep mdw.config.mainScrollBarWidth (15) clear on top
    of the margin; set it lower on a profile whose scrollbar is narrower or
    hidden. Left anchors and centred floats are unchanged.

v0.8.0

Choose a tag to compare

@MorquinDevlar MorquinDevlar released this 04 Sep 19:17
v0.8.0
daeb8ce

Added

  • mdw.floatWidget(name, opts) takes opts.anchor - topleft, topright,
    bottomleft, bottomright or center - and an optional opts.margin, so a
    package can put a floating panel in a corner instead of the centre. The
    corner is a corner of the main console area, so it follows a sidebar being
    toggled or a chrome bar being added; mdw.floatPos exposes the positions on
    their own. Anchored placement is exact, where a centred float still cascades
    past any float already there. An anchor also repositions a group that is
    already floating, which a bare floatWidget reports as already.