Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • Files Files
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 381
    • Issues 381
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 55
    • Merge requests 55
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GNOMEGNOME
  • FilesFiles
  • Issues
  • #1992
Closed
Open
Issue created Oct 03, 2021 by António Fernandes@antoniof🐚Maintainer4 of 8 checklist items completed4/8 checklist items

Stop using blocking dialog functions

In preparation for the GTK 4 port, we should stop using gtk_dialog_run(), as explained in the porting guide:

GtkDialog, GtkNativeDialog, and GtkPrintOperation removed their blocking API using nested main loops. Nested main loops present re-entrancy issues and other hard to debug issues when coupled with other event sources (IPC, accessibility, network operations) that are not under the toolkit or the application developer’s control. Additionally, “stop-the-world” functions do not fit the event-driven programming model of GTK.

You can replace calls to gtk_dialog_run by specifying that the GtkDialog must be modal using gtk_window_set_modal() or the GTK_DIALOG_MODAL flag, and connecting to the GtkDialog::response signal.

In this project, gtk_dialog_run().

  • eel/eel-stock-dialogs.c !746 (merged)
  • src/nautilus-autorun-software.c !742 (merged)
  • src/nautilus-file-operations.c !746 (merged)
  • src/nautilus-files-view.c !739 (closed)
  • src/nautilus-mime-actions.c !746 (merged)
  • src/nautilus-operations-ui-manager.c !719 (merged)
  • src/nautilus-places-view.c !742 (merged)
  • src/nautilus-search-popover.c !737 (merged)

Additionally, we have a a few functions which rely on its blocking behavior. So, this may need a little refactoring.

Edited Dec 21, 2021 by António Fernandes
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking