1. 06 Feb, 2018 1 commit
    • Matthias Clasen's avatar
      The big versioning cleanup · 4c150d8e
      Matthias Clasen authored
      Remove all the old 2.x and 3.x version annotations.
      GTK+ 4 is a new start, and from the perspective of a
      GTK+ 4 developer all these APIs have been around since
      the beginning.
      4c150d8e
  2. 05 Feb, 2018 1 commit
  3. 04 Feb, 2018 7 commits
  4. 03 Feb, 2018 9 commits
    • Benjamin Otte's avatar
      rbtree: Privatize header · cf030e9f
      Benjamin Otte authored
      According to meson it's the only private header that doesn't conform to
      the *private.h naming.
      
      Fix that.
      cf030e9f
    • Emmanuele Bassi's avatar
      Allow binding GdkContentFormatsBuilder · 2cbe094b
      Emmanuele Bassi authored
      GdkContentFormatsBuilder is currently not introspectable, as it does not
      have a GType. We can turn it into a boxed type, but we need to implement
      memory management for it.
      
      The current gdk_content_formats_builder_free() function returns a newly
      constructed value, so we cannot use it as a GBoxedFreeFunc; additionally
      copying a GdkContentFormatsBuilder contents would make it a bit odd, as
      you could get multiple identical GdkContentFormats out of the copies.
      
      A simple approach is to model the GdkContentFormatsBuilder API to follow
      the GBytes one: use reference counting for memory management, and have
      a function to release a reference, return a GdkContentFormats, and reset
      the GdkContentFormatsBuilder state.
      
      For language bindings, we can provide a get_formats() function that
      returns the GdkContentFormats instance and resets the builder instance,
      leaving the reference count untouched.
      
      For C convenience we can keep gdk_content_formats_builder_free(), and
      make it a wrapper around gdk_content_formats_builder_get_formats(), with
      the guarantee that it'll free the builder instance regardless of its
      current reference count.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=793097
      https://blogs.gnome.org/otte/2018/02/03/builders/
      2cbe094b
    • Timm Bäder's avatar
      notebook: Handle touch events for tabs · 3d65019e
      Timm Bäder authored
      No need to check for the event type here.
      3d65019e
    • Timm Bäder's avatar
      widget: Remove realized checks from _translate_coordinates · 98e30f82
      Timm Bäder authored
      As discussed.
      98e30f82
    • Timm Bäder's avatar
      widget: Don't call snapshot vfunc if width or height are 0 · 8f7a8ada
      Timm Bäder authored
      The result won't be visible anyway. This also prevents problems with
      widgets that create some resource the size of the widget, like
      GtkGLArea. It also keeps us from snapshotting revealers with
      size 0.
      8f7a8ada
    • Emmanuele Bassi's avatar
      Drop the Big GDK Lock · 888dfe49
      Emmanuele Bassi authored
      GDK has a lock to mark critical sections inside the backends.
      Additionally, code that would re-enter into the GTK main loop was
      supposed to hold the lock.
      
      Back in the Good Old Days™ this was guaranteed to kind of work only on
      the X11 backend, and would cause a neat explosion on any other GDK
      backend.
      
      During GTK+ 3.x we deprecated the API to enter and leave the critical
      sections, and now we can remove all the internal uses of the lock, since
      external API that uses GTK+ 4.x won't be able to hold the GDK lock.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=793124
      888dfe49
    • Emmanuele Bassi's avatar
      Replace gdk_threads_add_timeout* with g_timeout_add() · c655759c
      Emmanuele Bassi authored
      The main GDK thread lock is not portable and deprecated.
      
      The only reason why gdk_threads_add_timeout() and
      gdk_threads_add_timeout_full() exist is to allow invoking a callback
      with the GDK lock held, in case 3rd party libraries still use the
      deprecated gdk_threads_enter()/gdk_threads_leave() API.
      
      Since we're removing the GDK lock, and we're releasing a new major API,
      such code cannot exist any more; this means we can use the GLib API for
      installing timeout callbacks.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=793124
      c655759c
    • Emmanuele Bassi's avatar
      Replace gdk_threads_add_idle* with g_idle_add() · 334acbfc
      Emmanuele Bassi authored
      The main GDK thread lock is not portable and deprecated.
      
      The only reason why gdk_threads_add_idle() and
      gdk_threads_add_idle_full() exist is to allow invoking a callback with
      the GDK lock held, in case 3rd party libraries still use the deprecated
      gdk_threads_enter()/gdk_threads_leave() API.
      
      Since we're removing the GDK lock, and we're releasing a new major API,
      such code cannot exist any more; this means we can use the GLib API for
      installing idle callbacks.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=793124
      334acbfc
    • Benjamin Otte's avatar
      toolpalette: Remove · dfc131c7
      Benjamin Otte authored
      The widget was basically unmaintained since GTK 3.0 and the only known
      user was Glade.
      dfc131c7
  5. 02 Feb, 2018 4 commits
  6. 01 Feb, 2018 5 commits
  7. 31 Jan, 2018 1 commit
  8. 30 Jan, 2018 2 commits
  9. 28 Jan, 2018 1 commit
  10. 26 Jan, 2018 3 commits
  11. 24 Jan, 2018 1 commit
  12. 22 Jan, 2018 2 commits
    • Daniel Boles's avatar
      Widget: Don’t call reset() on NULL EventController · b91fc17a
      Daniel Boles authored
      GtkGesture is a GtkEventController. gtk_event_controller_dispose() calls
      _gtk_widget_remove_controller(). That NULLs the pointer-to-Controller in
      our EventControllerData but does not delete said ECData from our GList.
      
      Subsequently, if that same Widget gets unparent()ed, that method calls
      unset_state_flags(), which leads to doing reset_controllers() if we are
      insensitive. Now, unlike most most other loops over the GList of ECData,
      reset_controllers() does not skip nodes whose pointer-to-Controller is
      NULL. So, we call gtk_event_controller_reset(NULL) and get a CRITICAL.
      
      This surfaced in a gtkmm program. The Gesture is destroyed before the
      Widget. The Widget then gets dispose()d, which calls unparent()… boom.
      I didn’t find an MCVE yet but would hope this logic is correct anyway:
      
      The simplest fix is to make the loop in gtk_widget_reset_controllers()
      skip GList nodes with a NULL Controller pointer, like most other such
      loops, so we avoid passing the NULL to gtk_event_controller_reset().
      
      In other, live cases, _gtk_widget_run_controllers() loops over the GList
      and removes/frees nodes having NULL Controllers, so that should suffice.
      But this clearly was not getting a chance to happen in the failing case.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=792624
      b91fc17a
    • Juan Pablo Ugarte's avatar
      GtkGestureMultiPress: check event state before emiting released signal · f2019e61
      Juan Pablo Ugarte authored and Carlos Garnacho's avatar Carlos Garnacho committed
      Fix bug 771986 "Inconsistent 'row-activated' signal emission before \
      drag'n'drop, 'activate-on-single-click'=TRUE, 'reorderable'=TRUE"
      f2019e61
  13. 21 Jan, 2018 2 commits
  14. 19 Jan, 2018 1 commit