зеркало из https://github.com/mozilla/gecko-dev.git
Bug #162507. Default icon should not be set for embedding applications. Not part of the default build.
This commit is contained in:
Родитель
9ee53c1fde
Коммит
4a957f1100
|
@ -145,7 +145,6 @@ static void drag_data_received_event_cb(GtkWidget *aWidget,
|
||||||
|
|
||||||
/* initialization static functions */
|
/* initialization static functions */
|
||||||
static nsresult initialize_prefs (void);
|
static nsresult initialize_prefs (void);
|
||||||
static nsresult initialize_default_icon (void);
|
|
||||||
|
|
||||||
// this is the last window that had a drag event happen on it.
|
// this is the last window that had a drag event happen on it.
|
||||||
nsWindow *nsWindow::mLastDragMotionWindow = NULL;
|
nsWindow *nsWindow::mLastDragMotionWindow = NULL;
|
||||||
|
@ -215,7 +214,6 @@ nsWindow::nsWindow()
|
||||||
|
|
||||||
// It's OK if either of these fail, but it may not be one day.
|
// It's OK if either of these fail, but it may not be one day.
|
||||||
initialize_prefs();
|
initialize_prefs();
|
||||||
initialize_default_icon();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mLastDragMotionWindow == this)
|
if (mLastDragMotionWindow == this)
|
||||||
|
@ -914,7 +912,7 @@ nsWindow::SetTitle(const nsString& aTitle)
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsWindow::SetIcon(const nsAString& anIconSpec)
|
nsWindow::SetIcon(const nsAString& aIconSpec)
|
||||||
{
|
{
|
||||||
if (!mShell)
|
if (!mShell)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
@ -931,7 +929,7 @@ nsWindow::SetIcon(const nsAString& anIconSpec)
|
||||||
chromeDir->GetPath(iconPath);
|
chromeDir->GetPath(iconPath);
|
||||||
|
|
||||||
// Now take input path...
|
// Now take input path...
|
||||||
nsAutoString iconSpec(anIconSpec);
|
nsAutoString iconSpec(aIconSpec);
|
||||||
// ...append ".xpm" to it
|
// ...append ".xpm" to it
|
||||||
iconSpec.Append(NS_LITERAL_STRING(".xpm"));
|
iconSpec.Append(NS_LITERAL_STRING(".xpm"));
|
||||||
|
|
||||||
|
@ -949,18 +947,10 @@ nsWindow::SetIcon(const nsAString& anIconSpec)
|
||||||
if (NS_FAILED(rv))
|
if (NS_FAILED(rv))
|
||||||
return rv;
|
return rv;
|
||||||
|
|
||||||
nsCAutoString aPath;
|
nsCAutoString path;
|
||||||
pathConverter->GetNativePath(aPath);
|
pathConverter->GetNativePath(path);
|
||||||
|
|
||||||
LOG(("nsWindow::SetIcon using path %s\n", aPath.get()));
|
return SetWindowIcon(path);
|
||||||
|
|
||||||
GdkPixbuf *iconPixbuf = gdk_pixbuf_new_from_file(aPath.get(), NULL);
|
|
||||||
if (!iconPixbuf)
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
|
|
||||||
gtk_window_set_icon(GTK_WINDOW(mShell), iconPixbuf);
|
|
||||||
g_object_unref(G_OBJECT(iconPixbuf));
|
|
||||||
return NS_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
|
@ -2033,6 +2023,7 @@ nsWindow::NativeCreate(nsIWidget *aParent,
|
||||||
mIsTopLevel = PR_TRUE;
|
mIsTopLevel = PR_TRUE;
|
||||||
if (mWindowType == eWindowType_dialog) {
|
if (mWindowType == eWindowType_dialog) {
|
||||||
mShell = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
mShell = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
|
SetDefaultIcon();
|
||||||
gtk_window_set_type_hint(GTK_WINDOW(mShell),
|
gtk_window_set_type_hint(GTK_WINDOW(mShell),
|
||||||
GDK_WINDOW_TYPE_HINT_DIALOG);
|
GDK_WINDOW_TYPE_HINT_DIALOG);
|
||||||
gtk_window_set_transient_for(GTK_WINDOW(mShell),
|
gtk_window_set_transient_for(GTK_WINDOW(mShell),
|
||||||
|
@ -2069,6 +2060,7 @@ nsWindow::NativeCreate(nsIWidget *aParent,
|
||||||
}
|
}
|
||||||
else { // must be eWindowType_toplevel
|
else { // must be eWindowType_toplevel
|
||||||
mShell = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
mShell = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
|
SetDefaultIcon();
|
||||||
// each toplevel window gets its own window group
|
// each toplevel window gets its own window group
|
||||||
mWindowGroup = gtk_window_group_new();
|
mWindowGroup = gtk_window_group_new();
|
||||||
// and add ourselves to the window group
|
// and add ourselves to the window group
|
||||||
|
@ -2471,6 +2463,52 @@ nsWindow::SetupPluginPort(void)
|
||||||
return (void *)GDK_WINDOW_XWINDOW(mDrawingarea->inner_window);
|
return (void *)GDK_WINDOW_XWINDOW(mDrawingarea->inner_window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsWindow::SetWindowIcon(nsCString &aPath)
|
||||||
|
{
|
||||||
|
LOG(("window [%p] Loading icon from %s\n", (void *)this, aPath.get()));
|
||||||
|
|
||||||
|
GdkPixbuf *icon = gdk_pixbuf_new_from_file(aPath.get(), NULL);
|
||||||
|
if (!icon)
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
|
||||||
|
GList *list = NULL;
|
||||||
|
list = g_list_append(list, icon);
|
||||||
|
gtk_window_set_icon_list(GTK_WINDOW(mShell), list);
|
||||||
|
g_object_unref(G_OBJECT(icon));
|
||||||
|
g_list_free(list);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
nsWindow::SetDefaultIcon(void)
|
||||||
|
{
|
||||||
|
// Set up the default window icon
|
||||||
|
nsresult rv;
|
||||||
|
nsCOMPtr<nsIFile> chromeDir;
|
||||||
|
rv = NS_GetSpecialDirectory(NS_APP_CHROME_DIR,
|
||||||
|
getter_AddRefs(chromeDir));
|
||||||
|
if (NS_FAILED(rv))
|
||||||
|
return;
|
||||||
|
|
||||||
|
nsAutoString defaultPath;
|
||||||
|
chromeDir->GetPath(defaultPath);
|
||||||
|
|
||||||
|
defaultPath.Append(NS_LITERAL_STRING("/icons/default/default.xpm"));
|
||||||
|
|
||||||
|
nsCOMPtr<nsILocalFile> defaultPathConverter;
|
||||||
|
rv = NS_NewLocalFile(defaultPath, PR_TRUE,
|
||||||
|
getter_AddRefs(defaultPathConverter));
|
||||||
|
if (NS_FAILED(rv))
|
||||||
|
return;
|
||||||
|
|
||||||
|
nsCAutoString path;
|
||||||
|
defaultPathConverter->GetNativePath(path);
|
||||||
|
|
||||||
|
SetWindowIcon(path);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nsWindow::SetPluginType(PRBool aIsXembed)
|
nsWindow::SetPluginType(PRBool aIsXembed)
|
||||||
{
|
{
|
||||||
|
@ -3191,47 +3229,6 @@ initialize_prefs(void)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* static */
|
|
||||||
nsresult
|
|
||||||
initialize_default_icon(void)
|
|
||||||
{
|
|
||||||
// Set up the default icon for all windows
|
|
||||||
nsresult rv;
|
|
||||||
nsCOMPtr<nsIFile> chromeDir;
|
|
||||||
rv = NS_GetSpecialDirectory(NS_APP_CHROME_DIR,
|
|
||||||
getter_AddRefs(chromeDir));
|
|
||||||
if (NS_FAILED(rv))
|
|
||||||
return rv;
|
|
||||||
|
|
||||||
nsAutoString defaultPath;
|
|
||||||
chromeDir->GetPath(defaultPath);
|
|
||||||
|
|
||||||
defaultPath.Append(NS_LITERAL_STRING("/icons/default/default.xpm"));
|
|
||||||
|
|
||||||
nsCOMPtr<nsILocalFile> defaultPathConverter;
|
|
||||||
rv = NS_NewLocalFile(defaultPath, PR_TRUE,
|
|
||||||
getter_AddRefs(defaultPathConverter));
|
|
||||||
if (NS_FAILED(rv))
|
|
||||||
return rv;
|
|
||||||
|
|
||||||
nsCAutoString aPath;
|
|
||||||
defaultPathConverter->GetNativePath(aPath);
|
|
||||||
|
|
||||||
LOG(("Loading default icon from %s\n", aPath.get()));
|
|
||||||
|
|
||||||
GdkPixbuf *defaultIcon = gdk_pixbuf_new_from_file(aPath.get(), NULL);
|
|
||||||
if (!defaultIcon)
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
|
|
||||||
GList *list = NULL;
|
|
||||||
list = g_list_append(list, defaultIcon);
|
|
||||||
gtk_window_set_default_icon_list(list);
|
|
||||||
g_object_unref(G_OBJECT(defaultIcon));
|
|
||||||
g_list_free(list);
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
nsWindow::ResetDragMotionTimer(GtkWidget *aWidget,
|
nsWindow::ResetDragMotionTimer(GtkWidget *aWidget,
|
||||||
GdkDragContext *aDragContext,
|
GdkDragContext *aDragContext,
|
||||||
|
|
|
@ -121,7 +121,7 @@ public:
|
||||||
virtual void* GetNativeData(PRUint32 aDataType);
|
virtual void* GetNativeData(PRUint32 aDataType);
|
||||||
NS_IMETHOD SetBorderStyle(nsBorderStyle aBorderStyle);
|
NS_IMETHOD SetBorderStyle(nsBorderStyle aBorderStyle);
|
||||||
NS_IMETHOD SetTitle(const nsString& aTitle);
|
NS_IMETHOD SetTitle(const nsString& aTitle);
|
||||||
NS_IMETHOD SetIcon(const nsAString& anIconSpec);
|
NS_IMETHOD SetIcon(const nsAString& aIconSpec);
|
||||||
NS_IMETHOD SetMenuBar(nsIMenuBar * aMenuBar);
|
NS_IMETHOD SetMenuBar(nsIMenuBar * aMenuBar);
|
||||||
NS_IMETHOD ShowMenuBar(PRBool aShow);
|
NS_IMETHOD ShowMenuBar(PRBool aShow);
|
||||||
NS_IMETHOD WidgetToScreen(const nsRect& aOldRect,
|
NS_IMETHOD WidgetToScreen(const nsRect& aOldRect,
|
||||||
|
@ -253,6 +253,8 @@ private:
|
||||||
void GetToplevelWidget(GtkWidget **aWidget);
|
void GetToplevelWidget(GtkWidget **aWidget);
|
||||||
void GetContainerWindow(nsWindow **aWindow);
|
void GetContainerWindow(nsWindow **aWindow);
|
||||||
void *SetupPluginPort(void);
|
void *SetupPluginPort(void);
|
||||||
|
nsresult SetWindowIcon(nsCString &aPath);
|
||||||
|
void SetDefaultIcon(void);
|
||||||
|
|
||||||
GtkWidget *mShell;
|
GtkWidget *mShell;
|
||||||
MozContainer *mContainer;
|
MozContainer *mContainer;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче