Browse Source

refactor: use gdk_display_beep() on Linux (#44734)

* refactor: use gdk_display_beep() to beep on Linux

* chore: make a stub declaration for gdk_display_beep()

* chore: remove unused file electron_gtk.sigs

* chore: remove unused #includes to make gn check happy
Charles Kerr 4 months ago
parent
commit
85e2622b68

+ 4 - 1
BUILD.gn

@@ -84,7 +84,10 @@ if (is_linux) {
   # from the gtk library. Function signatures for which stubs are
   # required should be declared in the sig files.
   generate_stubs("electron_gtk_stubs") {
-    sigs = [ "shell/browser/ui/electron_gdk_pixbuf.sigs" ]
+    sigs = [
+      "shell/browser/ui/electron_gdk.sigs",
+      "shell/browser/ui/electron_gdk_pixbuf.sigs",
+    ]
     extra_header = "shell/browser/ui/electron_gtk.fragment"
     output_name = "electron_gtk_stubs"
     public_deps = [ "//ui/gtk:gtk_config" ]

+ 1 - 0
shell/browser/ui/electron_gdk.sigs

@@ -0,0 +1 @@
+void gdk_display_beep(GdkDisplay* display);

+ 0 - 7
shell/browser/ui/electron_gtk.sigs

@@ -1,7 +0,0 @@
-GtkFileChooserNative* gtk_file_chooser_native_new(const gchar* title, GtkWindow* parent, GtkFileChooserAction action, const gchar* accept_label, const gchar* cancel_label);
-void gtk_native_dialog_set_modal(GtkNativeDialog* self, gboolean modal);
-void gtk_native_dialog_show(GtkNativeDialog* self);
-void gtk_native_dialog_hide(GtkNativeDialog* self);
-gint gtk_native_dialog_run(GtkNativeDialog* self);
-void gtk_native_dialog_destroy(GtkNativeDialog* self);
-GType gtk_native_dialog_get_type(void);

+ 5 - 9
shell/common/platform_util_linux.cc

@@ -11,6 +11,8 @@
 #include <string>
 #include <vector>
 
+#include <gdk/gdk.h>
+
 #include "base/cancelable_callback.h"
 #include "base/containers/contains.h"
 #include "base/environment.h"
@@ -32,6 +34,7 @@
 #include "dbus/bus.h"
 #include "dbus/message.h"
 #include "dbus/object_proxy.h"
+
 #include "shell/common/platform_util_internal.h"
 #include "url/gurl.h"
 
@@ -408,15 +411,8 @@ bool PlatformTrashItem(const base::FilePath& full_path, std::string* error) {
 }  // namespace internal
 
 void Beep() {
-  // echo '\a' > /dev/console
-  FILE* fp = fopen("/dev/console", "a");
-  if (fp == nullptr) {
-    fp = fopen("/dev/tty", "a");
-  }
-  if (fp != nullptr) {
-    fprintf(fp, "\a");
-    fclose(fp);
-  }
+  auto* display = gdk_display_get_default();
+  gdk_display_beep(display);
 }
 
 bool GetDesktopName(std::string* setme) {