summaryrefslogtreecommitdiff
path: root/gdk/win32
diff options
context:
space:
mode:
authorHans Breuer <hans@breuer.org>2001-09-21 19:58:35 +0000
committerHans Breuer <hans@src.gnome.org>2001-09-21 19:58:35 +0000
commit293d78778377b034b9806d79cc060193fd890ee4 (patch)
treee6805ef4bee29896fcb80d3782522db870324bb0 /gdk/win32
parent35953cae924726cc248e962a9b1b67392631b7e1 (diff)
downloadgdk-pixbuf-293d78778377b034b9806d79cc060193fd890ee4.tar.gz
updated externals
2001-09-21 Hans Breuer <hans@breuer.org> * gdk/gdk.def : * gtk/gtk.def : updated externals * gtk/gtkmain.h : define get_gtk_win32_directoty () * gtk/gtkmain.c (find_module) : don't use module_name after freeing it. Also handle that Win32 pathes cann't be hard-coded * gtk/gtkrc.c : use get_gtk_win32_directoty () to cleanup the various module, themes etc directory calculations * gdk/win32/gdkgeometry-win32.c : some more hacking to get coordinates >16 bit right. The size limit within Win9x appears _not_ to be 32767 but slightly smaller ... * gdk/win32/gdkwindow-win32.c : use impl->position_info to avoid >16 bit clipping. Added dummy body for gdk_window_set_icon_list () * gdk/win32/gdkdrawable-win32.c : implement gdk_win32_drawable_get_handle () * gdk/win32/gdkevents-win32.c : some tweaking to get better expose handling. I'm not sure if it is better now, but at least not worse * gdk/win32/makefile.msc : define INSIDE_GDK_WIN32, some cleanup * gdk/win32/gdkwin32.h : reflect recent API restrictions
Diffstat (limited to 'gdk/win32')
-rw-r--r--gdk/win32/gdkdrawable-win32.c6
-rw-r--r--gdk/win32/gdkevents-win32.c42
-rw-r--r--gdk/win32/gdkgeometry-win32.c36
-rw-r--r--gdk/win32/gdkwin32.h18
-rw-r--r--gdk/win32/gdkwindow-win32.c26
-rw-r--r--gdk/win32/makefile.msc17
6 files changed, 106 insertions, 39 deletions
diff --git a/gdk/win32/gdkdrawable-win32.c b/gdk/win32/gdkdrawable-win32.c
index 8910965fd..44b71f44c 100644
--- a/gdk/win32/gdkdrawable-win32.c
+++ b/gdk/win32/gdkdrawable-win32.c
@@ -1087,3 +1087,9 @@ gdk_win32_get_visual (GdkDrawable *drawable)
{
return gdk_drawable_get_visual (GDK_DRAWABLE_IMPL_WIN32 (drawable)->wrapper);
}
+
+HWND
+gdk_win32_drawable_get_handle (GdkDrawable *drawable)
+{
+ return GDK_DRAWABLE_HANDLE(drawable);
+}
diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c
index ccce2174a..d407f4fac 100644
--- a/gdk/win32/gdkevents-win32.c
+++ b/gdk/win32/gdkevents-win32.c
@@ -233,7 +233,7 @@ real_window_procedure (HWND hwnd,
* GDK_EVENT_FUNC_FROM_WINDOW_PROC env var to get this
* behaviour.
*/
- if (gdk_event_func_from_window_proc && gdk_event_func)
+ if (gdk_event_func_from_window_proc && _gdk_event_func)
{
GDK_THREADS_ENTER ();
@@ -2758,6 +2758,12 @@ gdk_event_translate (GdkEvent *event,
}
break;
+ case WM_GETICON:
+ GDK_NOTE (EVENTS, g_print ("WM_GETICON: %#lx %s\n",
+ (gulong) msg->hwnd,
+ (ICON_BIG == msg->wParam ? "big" : "small")));
+ break;
+
case WM_SETCURSOR:
GDK_NOTE (EVENTS, g_print ("WM_SETCURSOR: %#lx %#x %#x\n",
(gulong) msg->hwnd,
@@ -2864,7 +2870,39 @@ gdk_event_translate (GdkEvent *event,
_gdk_input_configure_event (&event->configure, window);
}
break;
+#if 0
+ case WM_SIZING :
+ {
+ LPRECT lpr = (LPRECT) msg->lParam;
+ NONCLIENTMETRICS ncm;
+ ncm.cbSize = sizeof (NONCLIENTMETRICS);
+
+ SystemParametersInfo (SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, 0);
+
+ g_print ("WM_SIZING borderWidth %d captionHeight %d\n",
+ ncm.iBorderWidth, ncm.iCaptionHeight);
+ event->configure.type = GDK_CONFIGURE;
+ event->configure.window = window;
+
+ event->configure.x = lpr->left + ncm.iBorderWidth;
+ event->configure.y = lpr->top + ncm.iCaptionHeight;
+ event->configure.width = lpr->right - lpr->left - 2 * ncm.iBorderWidth;
+ event->configure.height = lpr->bottom - lpr->top - ncm.iCaptionHeight;
+ GDK_WINDOW_OBJECT (window)->x = event->configure.x;
+ GDK_WINDOW_OBJECT (window)->y = event->configure.y;
+ window_impl->width = event->configure.width;
+ window_impl->height = event->configure.height;
+
+ if (GDK_WINDOW_OBJECT (window)->resize_count > 1)
+ GDK_WINDOW_OBJECT (window)->resize_count -= 1;
+ return_val = !GDK_WINDOW_DESTROYED (window);
+ if (return_val
+ && GDK_WINDOW_OBJECT (window)->extension_events != 0)
+ _gdk_input_configure_event (&event->configure, window);
+ }
+ break;
+#endif
case WM_GETMINMAXINFO:
GDK_NOTE (EVENTS, g_print ("WM_GETMINMAXINFO: %#lx\n", (gulong) msg->hwnd));
@@ -3234,12 +3272,14 @@ gdk_flush (void)
{
MSG msg;
+#if 0
/* Process all messages currently available */
while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage (&msg); /* Translate virt. key codes */
DispatchMessage (&msg); /* Dispatch msg. to window */
}
+#endif
GdiFlush ();
}
diff --git a/gdk/win32/gdkgeometry-win32.c b/gdk/win32/gdkgeometry-win32.c
index 373d6b596..8d75953ef 100644
--- a/gdk/win32/gdkgeometry-win32.c
+++ b/gdk/win32/gdkgeometry-win32.c
@@ -36,6 +36,8 @@
#include "gdkdrawable-win32.h"
#include "gdkwindow-win32.h"
+#define SIZE_LIMIT 32000
+
typedef struct _GdkWindowQueueItem GdkWindowQueueItem;
typedef struct _GdkWindowParentPos GdkWindowParentPos;
@@ -360,13 +362,13 @@ _gdk_window_move_resize_child (GdkWindow *window,
if (d_xoffset > 0 || d_yoffset > 0)
gdk_window_queue_translation (window, MAX (d_xoffset, 0), MAX (d_yoffset, 0));
-
+
/* FIXME:
*/
- if (new_info.x + new_info.width > 32767)
- new_info.width = 32767 - new_info.x;
- if (new_info.y + new_info.height > 32767)
- new_info.height = 32767 - new_info.y;
+ if (new_info.x + new_info.width > SIZE_LIMIT)
+ new_info.width = SIZE_LIMIT - new_info.x;
+ if (new_info.y + new_info.height > SIZE_LIMIT)
+ new_info.height = SIZE_LIMIT - new_info.y;
if (!SetWindowPos (GDK_WINDOW_HWND (window), NULL,
new_info.x, new_info.y, new_info.width, new_info.height,
@@ -441,7 +443,7 @@ gdk_window_compute_position (GdkWindowImplWin32 *window,
info->big = FALSE;
- if (window->width <= 32768)
+ if (window->width <= SIZE_LIMIT)
{
info->width = window->width;
info->x = parent_pos->x + wrapper->x - parent_pos->win32_x;
@@ -449,19 +451,19 @@ gdk_window_compute_position (GdkWindowImplWin32 *window,
else
{
info->big = TRUE;
- info->width = 32768;
- if (parent_pos->x + wrapper->x < -16384)
+ info->width = SIZE_LIMIT;
+ if (parent_pos->x + wrapper->x < -(SIZE_LIMIT/2))
{
- if (parent_pos->x + wrapper->x + window->width < 16384)
- info->x = parent_pos->x + wrapper->x + window->width - 32768 - parent_pos->win32_x;
+ if (parent_pos->x + wrapper->x + window->width < (SIZE_LIMIT/2))
+ info->x = parent_pos->x + wrapper->x + window->width - SIZE_LIMIT - parent_pos->win32_x;
else
- info->x = -16384 - parent_pos->win32_y;
+ info->x = -(SIZE_LIMIT/2) - parent_pos->win32_y;
}
else
info->x = parent_pos->x + wrapper->x - parent_pos->win32_x;
}
- if (window->height <= 32768)
+ if (window->height <= SIZE_LIMIT)
{
info->height = window->height;
info->y = parent_pos->y + wrapper->y - parent_pos->win32_y;
@@ -469,13 +471,13 @@ gdk_window_compute_position (GdkWindowImplWin32 *window,
else
{
info->big = TRUE;
- info->height = 32768;
- if (parent_pos->y + wrapper->y < -16384)
+ info->height = SIZE_LIMIT;
+ if (parent_pos->y + wrapper->y < -(SIZE_LIMIT/2))
{
- if (parent_pos->y + wrapper->y + window->height < 16384)
- info->y = parent_pos->y + wrapper->y + window->height - 32768 - parent_pos->win32_y;
+ if (parent_pos->y + wrapper->y + window->height < (SIZE_LIMIT/2))
+ info->y = parent_pos->y + wrapper->y + window->height - SIZE_LIMIT - parent_pos->win32_y;
else
- info->y = -16384 - parent_pos->win32_y;
+ info->y = -(SIZE_LIMIT/2) - parent_pos->win32_y;
}
else
info->y = parent_pos->y + wrapper->y - parent_pos->win32_y;
diff --git a/gdk/win32/gdkwin32.h b/gdk/win32/gdkwin32.h
index 4e1d898f9..fc5af0b77 100644
--- a/gdk/win32/gdkwin32.h
+++ b/gdk/win32/gdkwin32.h
@@ -28,6 +28,7 @@
#define __GDK_WIN32_H__
#include <gdk/gdkprivate.h>
+#include <gdk/gdkinternals.h>
#include <gdk/gdkcursor.h>
#ifndef STRICT
@@ -196,6 +197,8 @@ extern "C" {
#define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur)))
#endif
+#ifdef INSIDE_GDK_WIN32
+
#include <gdk/gdkprivate.h>
/* Define corresponding Windows types for some X11 types, just for laziness. */
@@ -339,9 +342,8 @@ struct _GdkGCWin32Class
GType gdk_gc_win32_get_type (void);
-#define GDK_ROOT_WINDOW() ((guint32) HWND_DESKTOP)
+#undef GDK_ROOT_PARENT /* internal access is direct */
#define GDK_ROOT_PARENT() ((GdkWindow *) _gdk_parent_root)
-#define GDK_DISPLAY() NULL
#define GDK_WINDOW_HWND(win) (GDK_DRAWABLE_IMPL_WIN32(((GdkWindowObject *)win)->impl)->handle)
#define GDK_PIXMAP_HBITMAP(pixmap) (GDK_DRAWABLE_IMPL_WIN32(((GdkPixmapObject *)pixmap)->impl)->handle)
#define GDK_DRAWABLE_HANDLE(win) (GDK_IS_WINDOW (win) ? (GDK_WINDOW_HWND (win)) : (GDK_PIXMAP_HBITMAP (win)))
@@ -350,6 +352,15 @@ GType gdk_gc_win32_get_type (void);
#define GDK_COLORMAP_WIN32COLORMAP(cmap) (((GdkColormapPrivateWin32 *)GDK_COLORMAP (cmap)->windowing_data)->xcolormap)
#define GDK_VISUAL_XVISUAL(vis) (((GdkVisualPrivate *) vis)->xvisual)
+#else
+/* definition for exported 'internals' go here */
+#define GDK_WINDOW_HWND(d) (gdk_win32_drawable_get_handle (d))
+
+#endif
+
+#define GDK_ROOT_WINDOW() ((guint32) HWND_DESKTOP)
+#define GDK_DISPLAY() NULL
+
/* Functions to create GDK pixmaps and windows from their native equivalents */
GdkPixmap *gdk_pixmap_foreign_new (GdkNativeWindow anid);
GdkWindow *gdk_window_foreign_new (GdkNativeWindow anid);
@@ -357,6 +368,9 @@ GdkWindow *gdk_window_foreign_new (GdkNativeWindow anid);
/* Return the Gdk* for a particular HANDLE */
gpointer gdk_win32_handle_table_lookup (GdkNativeWindow handle);
+/* Translate from drawable to windows handle */
+HWND gdk_win32_drawable_get_handle (GdkDrawable *drawable);
+
#define gdk_window_lookup(hwnd) (GdkWindow*) gdk_win32_handle_table_lookup (hwnd)
#define gdk_pixmap_lookup(hbm) (GdkPixmap*) gdk_win32_handle_table_lookup (hbm)
diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c
index 630fa598c..aeaea1e0a 100644
--- a/gdk/win32/gdkwindow-win32.c
+++ b/gdk/win32/gdkwindow-win32.c
@@ -610,8 +610,8 @@ gdk_window_new (GdkWindow *parent,
MAKEINTRESOURCE(klass),
mbtitle,
dwStyle,
- x, y,
- width, height,
+ impl->position_info.x, impl->position_info.y,
+ impl->position_info.width, impl->position_info.height,
hparent,
NULL,
gdk_app_hmodule,
@@ -623,8 +623,8 @@ gdk_window_new (GdkWindow *parent,
MAKEINTRESOURCE(klass),
mbtitle,
dwStyle,
- x, y,
- width, height,
+ impl->position_info.x, impl->position_info.y,
+ impl->position_info.width, impl->position_info.height,
hparent,
NULL,
gdk_app_hmodule,
@@ -1303,7 +1303,7 @@ gdk_window_set_hints (GdkWindow *window,
impl->hint_min_width = rect.right - rect.left;
impl->hint_min_height = rect.bottom - rect.top;
- /* Also chek if he current size of the window is in bounds. */
+ /* Also check if he current size of the window is in bounds. */
GetClientRect (GDK_WINDOW_HWND (window), &rect);
if (rect.right < min_width && rect.bottom < min_height)
gdk_window_resize (window, min_width, min_height);
@@ -2006,6 +2006,22 @@ gdk_window_set_override_redirect (GdkWindow *window,
}
void
+gdk_window_set_icon_list (GdkWindow *window,
+ GList *pixbufs)
+{
+ g_return_if_fail (GDK_IS_WINDOW (window));
+
+ if (GDK_WINDOW_DESTROYED (window))
+ return;
+
+ /* We could convert it to a hIcon and DrawIcon () it when getting
+ * a WM_PAINT with IsIconic, but is it worth it ? Same probably
+ * goes for gdk_window_set_icon (). Patches accepted :-) --hb
+ * Or do we only need to deliver the Icon on WM_GETICON ?
+ */
+}
+
+void
gdk_window_set_icon (GdkWindow *window,
GdkWindow *icon_window,
GdkPixmap *pixmap,
diff --git a/gdk/win32/makefile.msc b/gdk/win32/makefile.msc
index 06f1bb308..3f350c7e0 100644
--- a/gdk/win32/makefile.msc
+++ b/gdk/win32/makefile.msc
@@ -11,22 +11,11 @@ WTKIT = ..\..\..\wtkit126
TOP = ../../..
!INCLUDE $(TOP)/build/win32/make.msc
-!IFNDEF DEBUG
-# Full optimization:
-OPTIMIZE = -Ox -MD
-!ELSE
-# Debugging:
-OPTIMIZE = -Zi -MDd
-!ENDIF
-
-# cl -? describes the options
-CC = cl -G5 -GF $(OPTIMIZE) -W3 -nologo
-
-LDFLAGS = /link /machine:ix86 $(LINKDEBUG)
-
GTK_VER=1.3
-CFLAGS = -I. -I.. -I..\.. $(GLIB_CFLAGS) $(PANGO_CFLAGS) -I$(WTKIT)\include -I$(GLIB) -DG_ENABLE_DEBUG -DHAVE_CONFIG_H -DGDK_VERSION=\"$(GTK_VER)\"
+CFLAGS = -I. -I.. -I..\.. $(GLIB_CFLAGS) $(PANGO_CFLAGS) \
+ -I$(WTKIT)\include -I$(GLIB) \
+ $(G_DEBUGGING) -DHAVE_CONFIG_H -DINSIDE_GDK_WIN32 -DGDK_VERSION=\"$(GTK_VER)\"
all: \
..\..\config.h \