Skip to content

RFC: Support vfunc overrides and interface implementations in user object types #110

@ghost

Description

This is becoming more important with GTK4. Should look something like this (rough sample code):

(use-modules (gi) (gi repository))
(require "Gtk" "4.0")
(load-by-name "Gtk" "Widget")
(load-by-name "Gtk" "BoxLayout")
(load-by-name "Gtk" "Scrollable")
(load-by-name "Gtk" "SizeRequestMode")

(register-type "MyWidget" <GtkWidget> #f #f
  ; class initializer
  #:class-init (lambda (class)
    (widget-class:set-layout-manager-type class <GtkBoxLayout>)
    (widget-class:set-template-from-resource class "/my-widget.ui"))

  ; interface implementation
  (implement-interface <GtkScrollable>
    #:get-border (lambda (self) (list #f #f)))

  ; instance initializer
  #:init (lambda (self)
    (widget:init-template self))

  ; vfunc overrides
  #vfunc-get-request-mode (lambda (self)
    (symbol->size-request-mode 'constant-size))
  #vfunc-measure (lambda (self orientation for-size)
    (list 200 200 #f #f)))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions