| Index: chrome/browser/platform_util_common_linux.cc
|
| ===================================================================
|
| --- chrome/browser/platform_util_common_linux.cc (revision 0)
|
| +++ chrome/browser/platform_util_common_linux.cc (revision 0)
|
| @@ -0,0 +1,83 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/platform_util.h"
|
| +
|
| +#include <gtk/gtk.h>
|
| +
|
| +#include "app/gtk_util.h"
|
| +#include "base/file_util.h"
|
| +#include "base/process_util.h"
|
| +#include "base/utf_string_conversions.h"
|
| +#include "chrome/common/process_watcher.h"
|
| +#include "gfx/native_widget_types.h"
|
| +#include "googleurl/src/gurl.h"
|
| +
|
| +namespace platform_util {
|
| +
|
| +gfx::NativeWindow GetTopLevel(gfx::NativeView view) {
|
| + // A detached widget won't have a toplevel window as an ancestor, so we can't
|
| + // assume that the query for toplevel will return a window.
|
| + GtkWidget* toplevel = gtk_widget_get_ancestor(view, GTK_TYPE_WINDOW);
|
| + return GTK_IS_WINDOW(toplevel) ? GTK_WINDOW(toplevel) : NULL;
|
| +}
|
| +
|
| +bool IsWindowActive(gfx::NativeWindow window) {
|
| + return gtk_window_is_active(window);
|
| +}
|
| +
|
| +bool IsVisible(gfx::NativeView view) {
|
| + return GTK_WIDGET_VISIBLE(view);
|
| +}
|
| +
|
| +void SimpleErrorBox(gfx::NativeWindow parent,
|
| + const string16& title,
|
| + const string16& message) {
|
| + GtkWidget* dialog = gtk_message_dialog_new(parent, GTK_DIALOG_MODAL,
|
| + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", UTF16ToUTF8(message).c_str());
|
| + gtk_util::ApplyMessageDialogQuirks(dialog);
|
| + gtk_window_set_title(GTK_WINDOW(dialog), UTF16ToUTF8(title).c_str());
|
| +
|
| + g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL);
|
| + gtk_widget_show_all(dialog);
|
| +
|
| + // Make sure it's big enough to show the title.
|
| + GtkRequisition req;
|
| + gtk_widget_size_request(dialog, &req);
|
| + int width;
|
| + gtk_util::GetWidgetSizeFromCharacters(dialog, title.length(), 0,
|
| + &width, NULL);
|
| + // The fudge factor accounts for extra space needed by the frame
|
| + // decorations as well as width differences between average text and the
|
| + // actual title text.
|
| + width = width * 1.2 + 50;
|
| +
|
| + if (width > req.width)
|
| + gtk_widget_set_size_request(dialog, width, -1);
|
| +}
|
| +
|
| +/* Warning: this may be either Linux or ChromeOS */
|
| +string16 GetVersionStringModifier() {
|
| + char* env = getenv("CHROME_VERSION_EXTRA");
|
| + if (!env)
|
| + return string16();
|
| + std::string modifier(env);
|
| +
|
| +#if defined(GOOGLE_CHROME_BUILD)
|
| + // Only ever return "", "unknown", "dev" or "beta" in a branded build.
|
| + if (modifier == "unstable") // linux version of "dev"
|
| + modifier = "dev";
|
| + if (modifier == "stable") {
|
| + modifier = "";
|
| + } else if ((modifier == "dev") || (modifier == "beta")) {
|
| + // do nothing.
|
| + } else {
|
| + modifier = "unknown";
|
| + }
|
| +#endif
|
| +
|
| + return ASCIIToUTF16(modifier);
|
| +}
|
| +
|
| +} // namespace platform_util
|
|
|
| Property changes on: chrome/browser/platform_util_common_linux.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|