diff options
author | Owen Taylor <otaylor@redhat.com> | 1998-11-13 21:28:36 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 1998-11-13 21:28:36 +0000 |
commit | a0ca2a7b0d905c7aa4eba64d213853afa3e87e33 (patch) | |
tree | 9537aa88ace45d6d1172aa58e720568b7e8e2547 | |
parent | 8b621ad059cf6727c5a23942beed1ad180cc7b84 (diff) | |
download | gdk-pixbuf-a0ca2a7b0d905c7aa4eba64d213853afa3e87e33.tar.gz |
New function gdk_pixmap_foreign_new(). (gtk-blizzard-981005-0. Christopher
Fri Nov 13 11:22:38 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkpixmap.c: New function gdk_pixmap_foreign_new().
(gtk-blizzard-981005-0.
Christopher Blizzard <blizzard@applied-theory.com)
* gdk/gdk.h gdk/gdkx.h: Moved gdk_window_foreign_new and
gdk_pixmap_foreign_new to gdkx.h.
Fri Nov 13 16:06:48 1998 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am: Added rules to generate an empty
GTK+ theme called "Default" upon installation.
* gtk/gtkrc.c (gtk_rc_parse_style): Fix inheritance
of fonts and fontsets.
(gtk-matsu-980924. Takashi Matsuda matsu@arch.comp.kyutech.ac.jp)
* gtk/gtkmain.c: Change test to detect glibc's
utf8 based mb* functions to be more specific.
* gtk/gtkwindow.[ch] gtk/gtkfixed.c: Indentation
cleanups.
-rw-r--r-- | ChangeLog | 24 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 24 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 24 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 24 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 24 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 24 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 24 | ||||
-rw-r--r-- | gdk/gdk.h | 1 | ||||
-rw-r--r-- | gdk/gdkpixmap.c | 47 | ||||
-rw-r--r-- | gdk/gdktypes.h | 1 | ||||
-rw-r--r-- | gdk/gdkx.h | 3 | ||||
-rw-r--r-- | gdk/x11/gdkpixmap-x11.c | 47 | ||||
-rw-r--r-- | gdk/x11/gdkx.h | 3 | ||||
-rw-r--r-- | gtk/Makefile.am | 10 | ||||
-rw-r--r-- | gtk/gtkmain.c | 27 | ||||
-rw-r--r-- | gtk/gtkrc.c | 10 | ||||
-rw-r--r-- | gtk/testgtkrc | 4 | ||||
-rw-r--r-- | tests/testgtkrc | 4 |
18 files changed, 308 insertions, 17 deletions
@@ -1,3 +1,27 @@ +Fri Nov 13 11:22:38 1998 Owen Taylor <otaylor@redhat.com> + + * gdk/gdkpixmap.c: New function gdk_pixmap_foreign_new(). + (gtk-blizzard-981005-0. + Christopher Blizzard <blizzard@applied-theory.com) + + * gdk/gdk.h gdk/gdkx.h: Moved gdk_window_foreign_new and + gdk_pixmap_foreign_new to gdkx.h. + +Fri Nov 13 16:06:48 1998 Owen Taylor <otaylor@redhat.com> + + * gtk/Makefile.am: Added rules to generate an empty + GTK+ theme called "Default" upon installation. + + * gtk/gtkrc.c (gtk_rc_parse_style): Fix inheritance + of fonts and fontsets. + (gtk-matsu-980924. Takashi Matsuda matsu@arch.comp.kyutech.ac.jp) + + * gtk/gtkmain.c: Change test to detect glibc's + utf8 based mb* functions to be more specific. + + * gtk/gtkwindow.[ch] gtk/gtkfixed.c: Indentation + cleanups. + Fri Nov 13 16:43:36 1998 Lars Hamann <lars@gtk.org> * gtk/gtktogglebutton.c (gtk_toggle_button_realize): don't diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index e918ae30e..4e6e0e9b7 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,27 @@ +Fri Nov 13 11:22:38 1998 Owen Taylor <otaylor@redhat.com> + + * gdk/gdkpixmap.c: New function gdk_pixmap_foreign_new(). + (gtk-blizzard-981005-0. + Christopher Blizzard <blizzard@applied-theory.com) + + * gdk/gdk.h gdk/gdkx.h: Moved gdk_window_foreign_new and + gdk_pixmap_foreign_new to gdkx.h. + +Fri Nov 13 16:06:48 1998 Owen Taylor <otaylor@redhat.com> + + * gtk/Makefile.am: Added rules to generate an empty + GTK+ theme called "Default" upon installation. + + * gtk/gtkrc.c (gtk_rc_parse_style): Fix inheritance + of fonts and fontsets. + (gtk-matsu-980924. Takashi Matsuda matsu@arch.comp.kyutech.ac.jp) + + * gtk/gtkmain.c: Change test to detect glibc's + utf8 based mb* functions to be more specific. + + * gtk/gtkwindow.[ch] gtk/gtkfixed.c: Indentation + cleanups. + Fri Nov 13 16:43:36 1998 Lars Hamann <lars@gtk.org> * gtk/gtktogglebutton.c (gtk_toggle_button_realize): don't diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index e918ae30e..4e6e0e9b7 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,27 @@ +Fri Nov 13 11:22:38 1998 Owen Taylor <otaylor@redhat.com> + + * gdk/gdkpixmap.c: New function gdk_pixmap_foreign_new(). + (gtk-blizzard-981005-0. + Christopher Blizzard <blizzard@applied-theory.com) + + * gdk/gdk.h gdk/gdkx.h: Moved gdk_window_foreign_new and + gdk_pixmap_foreign_new to gdkx.h. + +Fri Nov 13 16:06:48 1998 Owen Taylor <otaylor@redhat.com> + + * gtk/Makefile.am: Added rules to generate an empty + GTK+ theme called "Default" upon installation. + + * gtk/gtkrc.c (gtk_rc_parse_style): Fix inheritance + of fonts and fontsets. + (gtk-matsu-980924. Takashi Matsuda matsu@arch.comp.kyutech.ac.jp) + + * gtk/gtkmain.c: Change test to detect glibc's + utf8 based mb* functions to be more specific. + + * gtk/gtkwindow.[ch] gtk/gtkfixed.c: Indentation + cleanups. + Fri Nov 13 16:43:36 1998 Lars Hamann <lars@gtk.org> * gtk/gtktogglebutton.c (gtk_toggle_button_realize): don't diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index e918ae30e..4e6e0e9b7 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,27 @@ +Fri Nov 13 11:22:38 1998 Owen Taylor <otaylor@redhat.com> + + * gdk/gdkpixmap.c: New function gdk_pixmap_foreign_new(). + (gtk-blizzard-981005-0. + Christopher Blizzard <blizzard@applied-theory.com) + + * gdk/gdk.h gdk/gdkx.h: Moved gdk_window_foreign_new and + gdk_pixmap_foreign_new to gdkx.h. + +Fri Nov 13 16:06:48 1998 Owen Taylor <otaylor@redhat.com> + + * gtk/Makefile.am: Added rules to generate an empty + GTK+ theme called "Default" upon installation. + + * gtk/gtkrc.c (gtk_rc_parse_style): Fix inheritance + of fonts and fontsets. + (gtk-matsu-980924. Takashi Matsuda matsu@arch.comp.kyutech.ac.jp) + + * gtk/gtkmain.c: Change test to detect glibc's + utf8 based mb* functions to be more specific. + + * gtk/gtkwindow.[ch] gtk/gtkfixed.c: Indentation + cleanups. + Fri Nov 13 16:43:36 1998 Lars Hamann <lars@gtk.org> * gtk/gtktogglebutton.c (gtk_toggle_button_realize): don't diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index e918ae30e..4e6e0e9b7 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,27 @@ +Fri Nov 13 11:22:38 1998 Owen Taylor <otaylor@redhat.com> + + * gdk/gdkpixmap.c: New function gdk_pixmap_foreign_new(). + (gtk-blizzard-981005-0. + Christopher Blizzard <blizzard@applied-theory.com) + + * gdk/gdk.h gdk/gdkx.h: Moved gdk_window_foreign_new and + gdk_pixmap_foreign_new to gdkx.h. + +Fri Nov 13 16:06:48 1998 Owen Taylor <otaylor@redhat.com> + + * gtk/Makefile.am: Added rules to generate an empty + GTK+ theme called "Default" upon installation. + + * gtk/gtkrc.c (gtk_rc_parse_style): Fix inheritance + of fonts and fontsets. + (gtk-matsu-980924. Takashi Matsuda matsu@arch.comp.kyutech.ac.jp) + + * gtk/gtkmain.c: Change test to detect glibc's + utf8 based mb* functions to be more specific. + + * gtk/gtkwindow.[ch] gtk/gtkfixed.c: Indentation + cleanups. + Fri Nov 13 16:43:36 1998 Lars Hamann <lars@gtk.org> * gtk/gtktogglebutton.c (gtk_toggle_button_realize): don't diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index e918ae30e..4e6e0e9b7 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,27 @@ +Fri Nov 13 11:22:38 1998 Owen Taylor <otaylor@redhat.com> + + * gdk/gdkpixmap.c: New function gdk_pixmap_foreign_new(). + (gtk-blizzard-981005-0. + Christopher Blizzard <blizzard@applied-theory.com) + + * gdk/gdk.h gdk/gdkx.h: Moved gdk_window_foreign_new and + gdk_pixmap_foreign_new to gdkx.h. + +Fri Nov 13 16:06:48 1998 Owen Taylor <otaylor@redhat.com> + + * gtk/Makefile.am: Added rules to generate an empty + GTK+ theme called "Default" upon installation. + + * gtk/gtkrc.c (gtk_rc_parse_style): Fix inheritance + of fonts and fontsets. + (gtk-matsu-980924. Takashi Matsuda matsu@arch.comp.kyutech.ac.jp) + + * gtk/gtkmain.c: Change test to detect glibc's + utf8 based mb* functions to be more specific. + + * gtk/gtkwindow.[ch] gtk/gtkfixed.c: Indentation + cleanups. + Fri Nov 13 16:43:36 1998 Lars Hamann <lars@gtk.org> * gtk/gtktogglebutton.c (gtk_toggle_button_realize): don't diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index e918ae30e..4e6e0e9b7 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,27 @@ +Fri Nov 13 11:22:38 1998 Owen Taylor <otaylor@redhat.com> + + * gdk/gdkpixmap.c: New function gdk_pixmap_foreign_new(). + (gtk-blizzard-981005-0. + Christopher Blizzard <blizzard@applied-theory.com) + + * gdk/gdk.h gdk/gdkx.h: Moved gdk_window_foreign_new and + gdk_pixmap_foreign_new to gdkx.h. + +Fri Nov 13 16:06:48 1998 Owen Taylor <otaylor@redhat.com> + + * gtk/Makefile.am: Added rules to generate an empty + GTK+ theme called "Default" upon installation. + + * gtk/gtkrc.c (gtk_rc_parse_style): Fix inheritance + of fonts and fontsets. + (gtk-matsu-980924. Takashi Matsuda matsu@arch.comp.kyutech.ac.jp) + + * gtk/gtkmain.c: Change test to detect glibc's + utf8 based mb* functions to be more specific. + + * gtk/gtkwindow.[ch] gtk/gtkfixed.c: Indentation + cleanups. + Fri Nov 13 16:43:36 1998 Lars Hamann <lars@gtk.org> * gtk/gtktogglebutton.c (gtk_toggle_button_realize): don't @@ -126,7 +126,6 @@ GdkWindow* gdk_window_new (GdkWindow *parent, GdkWindowAttr *attributes, gint attributes_mask); -GdkWindow* gdk_window_foreign_new (guint32 anid); void gdk_window_destroy (GdkWindow *window); GdkWindow* gdk_window_ref (GdkWindow *window); void gdk_window_unref (GdkWindow *window); diff --git a/gdk/gdkpixmap.c b/gdk/gdkpixmap.c index dfaf4822c..291c8d774 100644 --- a/gdk/gdkpixmap.c +++ b/gdk/gdkpixmap.c @@ -749,6 +749,53 @@ gdk_pixmap_create_from_xpm_d (GdkWindow *window, } GdkPixmap* +gdk_pixmap_foreign_new (guint32 anid) +{ + GdkPixmap *pixmap; + GdkWindowPrivate *window_private; + GdkWindowPrivate *private; + Pixmap xpixmap; + Window root_return; + unsigned int x_ret, y_ret, w_ret, h_ret, bw_ret, depth_ret; + + /* check to make sure we were passed something at + least a little sane */ + g_return_val_if_fail((anid != 0), NULL); + + /* set the pixmap to the passed in value */ + xpixmap = anid; + /* get the root window */ + window_private = &gdk_root_parent; + + /* get information about the Pixmap to fill in the structure for + the gdk window */ + if (!XGetGeometry(window_private->xdisplay, xpixmap, &root_return, + &x_ret, &y_ret, &w_ret, &h_ret, &bw_ret, &depth_ret)) + return NULL; + + /* allocate a new gdk pixmap */ + private = g_new(GdkWindowPrivate, 1); + pixmap = (GdkPixmap *)private; + + private->xdisplay = window_private->xdisplay; + private->window_type = GDK_WINDOW_PIXMAP; + private->xwindow = xpixmap; + private->colormap = NULL; + private->parent = NULL; + private->x = 0; + private->y = 0; + private->width = w_ret; + private->height = h_ret; + private->resize_count = 0; + private->ref_count = 1; + private->destroyed = 0; + + gdk_xid_table_insert(&private->xwindow, pixmap); + + return pixmap; +} + +GdkPixmap* gdk_pixmap_ref (GdkPixmap *pixmap) { GdkWindowPrivate *private = (GdkWindowPrivate *)pixmap; diff --git a/gdk/gdktypes.h b/gdk/gdktypes.h index 964095b4c..26527b45f 100644 --- a/gdk/gdktypes.h +++ b/gdk/gdktypes.h @@ -847,6 +847,7 @@ struct _GdkCursor GdkCursorType type; }; + struct _GdkColorContextDither { gint fast_rgb[32][32][32]; /* quick look-up table for faster rendering */ diff --git a/gdk/gdkx.h b/gdk/gdkx.h index fbe655d2e..306f03d09 100644 --- a/gdk/gdkx.h +++ b/gdk/gdkx.h @@ -47,5 +47,8 @@ GdkColormap* gdkx_colormap_get (Colormap xcolormap); Window gdk_get_client_window (Display *dpy, Window win); +/* Functions to create pixmaps and windows from their X equivalents */ +GdkPixmap *gdk_pixmap_foreign_new (guint32 anid); +GdkWindow *gdk_window_foreign_new (guint32 anid); #endif /* __GDK_X_H__ */ diff --git a/gdk/x11/gdkpixmap-x11.c b/gdk/x11/gdkpixmap-x11.c index dfaf4822c..291c8d774 100644 --- a/gdk/x11/gdkpixmap-x11.c +++ b/gdk/x11/gdkpixmap-x11.c @@ -749,6 +749,53 @@ gdk_pixmap_create_from_xpm_d (GdkWindow *window, } GdkPixmap* +gdk_pixmap_foreign_new (guint32 anid) +{ + GdkPixmap *pixmap; + GdkWindowPrivate *window_private; + GdkWindowPrivate *private; + Pixmap xpixmap; + Window root_return; + unsigned int x_ret, y_ret, w_ret, h_ret, bw_ret, depth_ret; + + /* check to make sure we were passed something at + least a little sane */ + g_return_val_if_fail((anid != 0), NULL); + + /* set the pixmap to the passed in value */ + xpixmap = anid; + /* get the root window */ + window_private = &gdk_root_parent; + + /* get information about the Pixmap to fill in the structure for + the gdk window */ + if (!XGetGeometry(window_private->xdisplay, xpixmap, &root_return, + &x_ret, &y_ret, &w_ret, &h_ret, &bw_ret, &depth_ret)) + return NULL; + + /* allocate a new gdk pixmap */ + private = g_new(GdkWindowPrivate, 1); + pixmap = (GdkPixmap *)private; + + private->xdisplay = window_private->xdisplay; + private->window_type = GDK_WINDOW_PIXMAP; + private->xwindow = xpixmap; + private->colormap = NULL; + private->parent = NULL; + private->x = 0; + private->y = 0; + private->width = w_ret; + private->height = h_ret; + private->resize_count = 0; + private->ref_count = 1; + private->destroyed = 0; + + gdk_xid_table_insert(&private->xwindow, pixmap); + + return pixmap; +} + +GdkPixmap* gdk_pixmap_ref (GdkPixmap *pixmap) { GdkWindowPrivate *private = (GdkWindowPrivate *)pixmap; diff --git a/gdk/x11/gdkx.h b/gdk/x11/gdkx.h index fbe655d2e..306f03d09 100644 --- a/gdk/x11/gdkx.h +++ b/gdk/x11/gdkx.h @@ -47,5 +47,8 @@ GdkColormap* gdkx_colormap_get (Colormap xcolormap); Window gdk_get_client_window (Display *dpy, Window win); +/* Functions to create pixmaps and windows from their X equivalents */ +GdkPixmap *gdk_pixmap_foreign_new (guint32 anid); +GdkWindow *gdk_window_foreign_new (guint32 anid); #endif /* __GDK_X_H__ */ diff --git a/gtk/Makefile.am b/gtk/Makefile.am index d2802d55e..ddada2835 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -284,6 +284,16 @@ gtkmarshal.c gtkmarshal.h: @REBUILD@ gtkmarshal.list genmarshal.pl libgtk_la_LDFLAGS = \ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -release $(LT_RELEASE) +# We create a dummy theme for the default GTK+ theme + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Default/gtk + echo "# Empty gtkrc for default theme" > \ + $(DESTDIR)$(datadir)/themes/Default/gtk/gtkrc + +uninstall-local: + rm -f $(DESTDIR)$(datadir)/themes/Default/gtkrc + EXTRA_DIST = \ line-arrow.xbm \ line-wrap.xbm \ diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c index e362c5874..f78d2beef 100644 --- a/gtk/gtkmain.c +++ b/gtk/gtkmain.c @@ -401,22 +401,33 @@ gtk_init (int *argc, * correctly - set if either mblen("\xc0", MB_CUR_MAX) == 1 in the * C locale, or we're using X's mb functions. (-DX_LOCALE && locale != C) */ - - current_locale = g_strdup (setlocale (LC_CTYPE, NULL)); + + current_locale = setlocale (LC_CTYPE, NULL); #ifdef X_LOCALE if ((strcmp (current_locale, "C")) && (strcmp (current_locale, "POSIX"))) gtk_use_mb = TRUE; else -#endif +#endif /* X_LOCALE */ { - setlocale (LC_CTYPE, "C"); - gtk_use_mb = (mblen ("\xc0", MB_CUR_MAX) == 1); - setlocale (LC_CTYPE, current_locale); + /* Detect GNU libc, where mb == UTF8. Not useful unless it's + * really a UTF8 locale. The below still probably will + * screw up on Greek, Cyrillic, etc, encoded as UTF8. + */ + + wchar_t result; + gtk_use_mb = TRUE; + + if ((MB_CUR_MAX == 2) && + (mbstowcs (&result, "\xdd\xa5", 1) > 0) && + result == 0x765) + { + if ((strlen (current_locale) < 4) || + g_strcasecmp (current_locale + strlen(current_locale) - 4, "utf8")) + gtk_use_mb = FALSE; + } } - g_free (current_locale); - GTK_NOTE (MISC, g_message ("%s multi-byte string functions.", gtk_use_mb ? "Using" : "Not using")); diff --git a/gtk/gtkrc.c b/gtk/gtkrc.c index fb006fb24..59dc6f481 100644 --- a/gtk/gtkrc.c +++ b/gtk/gtkrc.c @@ -1117,14 +1117,16 @@ gtk_rc_parse_style (GScanner *scanner) rc_style->base[i] = parent_style->base[i]; } - if (rc_style->fontset_name) + if (parent_style->fontset_name) { - g_free (rc_style->fontset_name); + if (rc_style->fontset_name) + g_free (rc_style->fontset_name); rc_style->fontset_name = g_strdup (parent_style->fontset_name); } - else if (rc_style->font_name) + else if (parent_style->font_name) { - g_free (rc_style->font_name); + if (rc_style->font_name) + g_free (rc_style->font_name); rc_style->font_name = g_strdup (parent_style->font_name); } diff --git a/gtk/testgtkrc b/gtk/testgtkrc index 36bb12464..da81deb22 100644 --- a/gtk/testgtkrc +++ b/gtk/testgtkrc @@ -10,11 +10,11 @@ # widget <widget_set> style <style_name> # widget_class <widget_class_set> style <style_name> -include "/opt/themes/share/themes/Metal/gtk/gtkrc" +#include "/opt/themes/share/themes/W/gtk/gtkrc" #include "/home/otaylor/.themes/Ignorant/gtk/gtkrc" style "defaultfont" { -# font = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*" + font = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*" # fontset = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*" } diff --git a/tests/testgtkrc b/tests/testgtkrc index 36bb12464..da81deb22 100644 --- a/tests/testgtkrc +++ b/tests/testgtkrc @@ -10,11 +10,11 @@ # widget <widget_set> style <style_name> # widget_class <widget_class_set> style <style_name> -include "/opt/themes/share/themes/Metal/gtk/gtkrc" +#include "/opt/themes/share/themes/W/gtk/gtkrc" #include "/home/otaylor/.themes/Ignorant/gtk/gtkrc" style "defaultfont" { -# font = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*" + font = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*" # fontset = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*" } |