implement maximize for linux-fb
Thu Oct 3 16:40:18 2002 Eric Warmenhoven <eric@warmenhoven.org> * gdk/gdkevents.c, gdk/linux-fb/gdkwindow-fb.c, gtk/gtkwindow-decorate.c: implement maximize for linux-fb * gdk/linux-fb/gdkkeyboard-fb.c: implement raw keyboard mode * gdk/linux-fb/Makefile.am, gdk/linux-fb/gdkdnd-fb.c, gdk/linux-fb/gdkmain-fb.c, gdk/linux-fb/gdkselection-fb.c, gdk/linux-fb/miarc.c, gdk/linux-fb/mifpolycon.c, gdk/linux-fb/miwideline.c, gdk/linux-fb/mizerclip.c, gdk/linux-fb/mizerline.c: small cleanups
This commit is contained in:
committed by
Eric Warmenhoven
parent
92fa223146
commit
ccc2ccf221
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
Thu Oct 3 16:40:18 2002 Eric Warmenhoven <eric@warmenhoven.org>
|
||||||
|
|
||||||
|
* gdk/gdkevents.c, gdk/linux-fb/gdkwindow-fb.c,
|
||||||
|
gtk/gtkwindow-decorate.c: implement maximize for linux-fb
|
||||||
|
|
||||||
|
* gdk/linux-fb/gdkkeyboard-fb.c: implement raw keyboard mode
|
||||||
|
|
||||||
|
* gdk/linux-fb/Makefile.am, gdk/linux-fb/gdkdnd-fb.c,
|
||||||
|
gdk/linux-fb/gdkmain-fb.c, gdk/linux-fb/gdkselection-fb.c,
|
||||||
|
gdk/linux-fb/miarc.c, gdk/linux-fb/mifpolycon.c,
|
||||||
|
gdk/linux-fb/miwideline.c, gdk/linux-fb/mizerclip.c,
|
||||||
|
gdk/linux-fb/mizerline.c: small cleanups
|
||||||
|
|
||||||
Thu Oct 3 19:00:55 2002 Owen Taylor <otaylor@redhat.com>
|
Thu Oct 3 19:00:55 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
|
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
|
||||||
|
|||||||
@ -1,3 +1,16 @@
|
|||||||
|
Thu Oct 3 16:40:18 2002 Eric Warmenhoven <eric@warmenhoven.org>
|
||||||
|
|
||||||
|
* gdk/gdkevents.c, gdk/linux-fb/gdkwindow-fb.c,
|
||||||
|
gtk/gtkwindow-decorate.c: implement maximize for linux-fb
|
||||||
|
|
||||||
|
* gdk/linux-fb/gdkkeyboard-fb.c: implement raw keyboard mode
|
||||||
|
|
||||||
|
* gdk/linux-fb/Makefile.am, gdk/linux-fb/gdkdnd-fb.c,
|
||||||
|
gdk/linux-fb/gdkmain-fb.c, gdk/linux-fb/gdkselection-fb.c,
|
||||||
|
gdk/linux-fb/miarc.c, gdk/linux-fb/mifpolycon.c,
|
||||||
|
gdk/linux-fb/miwideline.c, gdk/linux-fb/mizerclip.c,
|
||||||
|
gdk/linux-fb/mizerline.c: small cleanups
|
||||||
|
|
||||||
Thu Oct 3 19:00:55 2002 Owen Taylor <otaylor@redhat.com>
|
Thu Oct 3 19:00:55 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
|
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
|
||||||
|
|||||||
@ -1,3 +1,16 @@
|
|||||||
|
Thu Oct 3 16:40:18 2002 Eric Warmenhoven <eric@warmenhoven.org>
|
||||||
|
|
||||||
|
* gdk/gdkevents.c, gdk/linux-fb/gdkwindow-fb.c,
|
||||||
|
gtk/gtkwindow-decorate.c: implement maximize for linux-fb
|
||||||
|
|
||||||
|
* gdk/linux-fb/gdkkeyboard-fb.c: implement raw keyboard mode
|
||||||
|
|
||||||
|
* gdk/linux-fb/Makefile.am, gdk/linux-fb/gdkdnd-fb.c,
|
||||||
|
gdk/linux-fb/gdkmain-fb.c, gdk/linux-fb/gdkselection-fb.c,
|
||||||
|
gdk/linux-fb/miarc.c, gdk/linux-fb/mifpolycon.c,
|
||||||
|
gdk/linux-fb/miwideline.c, gdk/linux-fb/mizerclip.c,
|
||||||
|
gdk/linux-fb/mizerline.c: small cleanups
|
||||||
|
|
||||||
Thu Oct 3 19:00:55 2002 Owen Taylor <otaylor@redhat.com>
|
Thu Oct 3 19:00:55 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
|
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
|
||||||
|
|||||||
@ -1,3 +1,16 @@
|
|||||||
|
Thu Oct 3 16:40:18 2002 Eric Warmenhoven <eric@warmenhoven.org>
|
||||||
|
|
||||||
|
* gdk/gdkevents.c, gdk/linux-fb/gdkwindow-fb.c,
|
||||||
|
gtk/gtkwindow-decorate.c: implement maximize for linux-fb
|
||||||
|
|
||||||
|
* gdk/linux-fb/gdkkeyboard-fb.c: implement raw keyboard mode
|
||||||
|
|
||||||
|
* gdk/linux-fb/Makefile.am, gdk/linux-fb/gdkdnd-fb.c,
|
||||||
|
gdk/linux-fb/gdkmain-fb.c, gdk/linux-fb/gdkselection-fb.c,
|
||||||
|
gdk/linux-fb/miarc.c, gdk/linux-fb/mifpolycon.c,
|
||||||
|
gdk/linux-fb/miwideline.c, gdk/linux-fb/mizerclip.c,
|
||||||
|
gdk/linux-fb/mizerline.c: small cleanups
|
||||||
|
|
||||||
Thu Oct 3 19:00:55 2002 Owen Taylor <otaylor@redhat.com>
|
Thu Oct 3 19:00:55 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
|
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
|
||||||
|
|||||||
@ -1,3 +1,16 @@
|
|||||||
|
Thu Oct 3 16:40:18 2002 Eric Warmenhoven <eric@warmenhoven.org>
|
||||||
|
|
||||||
|
* gdk/gdkevents.c, gdk/linux-fb/gdkwindow-fb.c,
|
||||||
|
gtk/gtkwindow-decorate.c: implement maximize for linux-fb
|
||||||
|
|
||||||
|
* gdk/linux-fb/gdkkeyboard-fb.c: implement raw keyboard mode
|
||||||
|
|
||||||
|
* gdk/linux-fb/Makefile.am, gdk/linux-fb/gdkdnd-fb.c,
|
||||||
|
gdk/linux-fb/gdkmain-fb.c, gdk/linux-fb/gdkselection-fb.c,
|
||||||
|
gdk/linux-fb/miarc.c, gdk/linux-fb/mifpolycon.c,
|
||||||
|
gdk/linux-fb/miwideline.c, gdk/linux-fb/mizerclip.c,
|
||||||
|
gdk/linux-fb/mizerline.c: small cleanups
|
||||||
|
|
||||||
Thu Oct 3 19:00:55 2002 Owen Taylor <otaylor@redhat.com>
|
Thu Oct 3 19:00:55 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
|
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
|
||||||
|
|||||||
@ -1,3 +1,16 @@
|
|||||||
|
Thu Oct 3 16:40:18 2002 Eric Warmenhoven <eric@warmenhoven.org>
|
||||||
|
|
||||||
|
* gdk/gdkevents.c, gdk/linux-fb/gdkwindow-fb.c,
|
||||||
|
gtk/gtkwindow-decorate.c: implement maximize for linux-fb
|
||||||
|
|
||||||
|
* gdk/linux-fb/gdkkeyboard-fb.c: implement raw keyboard mode
|
||||||
|
|
||||||
|
* gdk/linux-fb/Makefile.am, gdk/linux-fb/gdkdnd-fb.c,
|
||||||
|
gdk/linux-fb/gdkmain-fb.c, gdk/linux-fb/gdkselection-fb.c,
|
||||||
|
gdk/linux-fb/miarc.c, gdk/linux-fb/mifpolycon.c,
|
||||||
|
gdk/linux-fb/miwideline.c, gdk/linux-fb/mizerclip.c,
|
||||||
|
gdk/linux-fb/mizerline.c: small cleanups
|
||||||
|
|
||||||
Thu Oct 3 19:00:55 2002 Owen Taylor <otaylor@redhat.com>
|
Thu Oct 3 19:00:55 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
|
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
|
||||||
|
|||||||
@ -1053,10 +1053,10 @@ gdk_synthesize_window_state (GdkWindow *window,
|
|||||||
|
|
||||||
old = ((GdkWindowObject*) temp_event.window_state.window)->state;
|
old = ((GdkWindowObject*) temp_event.window_state.window)->state;
|
||||||
|
|
||||||
temp_event.window_state.changed_mask = (unset_flags | set_flags) ^ old;
|
|
||||||
temp_event.window_state.new_window_state = old;
|
temp_event.window_state.new_window_state = old;
|
||||||
temp_event.window_state.new_window_state |= set_flags;
|
temp_event.window_state.new_window_state |= set_flags;
|
||||||
temp_event.window_state.new_window_state &= ~unset_flags;
|
temp_event.window_state.new_window_state &= ~unset_flags;
|
||||||
|
temp_event.window_state.changed_mask = temp_event.window_state.new_window_state ^ old;
|
||||||
|
|
||||||
if (temp_event.window_state.new_window_state == old)
|
if (temp_event.window_state.new_window_state == old)
|
||||||
return; /* No actual work to do, nothing changed. */
|
return; /* No actual work to do, nothing changed. */
|
||||||
|
|||||||
@ -29,9 +29,11 @@ libgdkinclude_HEADERS= \
|
|||||||
libgdk_linux_fb_la_SOURCES = \
|
libgdk_linux_fb_la_SOURCES = \
|
||||||
gdkcolor-fb.c \
|
gdkcolor-fb.c \
|
||||||
gdkcursor-fb.c \
|
gdkcursor-fb.c \
|
||||||
gdkdnd-fb.c \
|
|
||||||
gdkdisplay-fb.c \
|
gdkdisplay-fb.c \
|
||||||
|
gdkdnd-fb.c \
|
||||||
gdkdrawable-fb2.c \
|
gdkdrawable-fb2.c \
|
||||||
|
gdkevents-fb.c \
|
||||||
|
gdkfbmanager.h \
|
||||||
gdkfont-fb.c \
|
gdkfont-fb.c \
|
||||||
gdkgc-fb.c \
|
gdkgc-fb.c \
|
||||||
gdkgeometry-fb.c \
|
gdkgeometry-fb.c \
|
||||||
@ -39,19 +41,19 @@ libgdk_linux_fb_la_SOURCES = \
|
|||||||
gdkim-fb.c \
|
gdkim-fb.c \
|
||||||
gdkimage-fb.c \
|
gdkimage-fb.c \
|
||||||
gdkinput.c \
|
gdkinput.c \
|
||||||
gdkmain-fb.c \
|
|
||||||
gdkpixmap-fb.c \
|
|
||||||
gdkproperty-fb.c \
|
|
||||||
gdkselection-fb.c \
|
|
||||||
gdkscreen-fb.c \
|
|
||||||
gdkvisual-fb.c \
|
|
||||||
gdkwindow-fb.c \
|
|
||||||
gdkprivate-fb.h \
|
|
||||||
gdkinputprivate.h \
|
gdkinputprivate.h \
|
||||||
gdkkeyboard-fb.c \
|
gdkkeyboard-fb.c \
|
||||||
|
gdkmain-fb.c \
|
||||||
gdkmouse-fb.c \
|
gdkmouse-fb.c \
|
||||||
gdkevents-fb.c \
|
gdkpango-fb.c \
|
||||||
|
gdkpixmap-fb.c \
|
||||||
|
gdkprivate-fb.h \
|
||||||
|
gdkproperty-fb.c \
|
||||||
gdkrender-fb.c \
|
gdkrender-fb.c \
|
||||||
|
gdkscreen-fb.c \
|
||||||
|
gdkselection-fb.c \
|
||||||
|
gdkvisual-fb.c \
|
||||||
|
gdkwindow-fb.c \
|
||||||
mi.h \
|
mi.h \
|
||||||
miarc.c \
|
miarc.c \
|
||||||
midash.c \
|
midash.c \
|
||||||
@ -65,16 +67,14 @@ libgdk_linux_fb_la_SOURCES = \
|
|||||||
mipolygen.c \
|
mipolygen.c \
|
||||||
mipolyutil.c \
|
mipolyutil.c \
|
||||||
miscanfill.h \
|
miscanfill.h \
|
||||||
mispans.h \
|
|
||||||
mispans.c \
|
mispans.c \
|
||||||
|
mispans.h \
|
||||||
mistruct.h \
|
mistruct.h \
|
||||||
mitypes.h \
|
mitypes.h \
|
||||||
miwideline.c \
|
miwideline.c \
|
||||||
miwideline.h \
|
miwideline.h \
|
||||||
mizerclip.c \
|
mizerclip.c \
|
||||||
mizerline.c \
|
mizerline.c
|
||||||
gdkpango-fb.c \
|
|
||||||
gdkfbmanager.h
|
|
||||||
|
|
||||||
gdkfbmanager_sources = gdkfbmanager.c
|
gdkfbmanager_sources = gdkfbmanager.c
|
||||||
gdkfbmanager_LDFLAGS = $(GLIB_LIBS)
|
gdkfbmanager_LDFLAGS = $(GLIB_LIBS)
|
||||||
|
|||||||
@ -383,7 +383,7 @@ gdk_drag_get_protocol (guint32 xid,
|
|||||||
{
|
{
|
||||||
GdkWindow *window;
|
GdkWindow *window;
|
||||||
|
|
||||||
window = gdk_window_lookup (xid);
|
window = gdk_window_lookup ((GdkNativeWindow) xid);
|
||||||
|
|
||||||
if (GPOINTER_TO_INT (gdk_drawable_get_data (window, "gdk-dnd-registered")))
|
if (GPOINTER_TO_INT (gdk_drawable_get_data (window, "gdk-dnd-registered")))
|
||||||
{
|
{
|
||||||
@ -392,7 +392,7 @@ gdk_drag_get_protocol (guint32 xid,
|
|||||||
}
|
}
|
||||||
|
|
||||||
*protocol = GDK_DRAG_PROTO_NONE;
|
*protocol = GDK_DRAG_PROTO_NONE;
|
||||||
return GDK_NONE;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GdkWindow *
|
static GdkWindow *
|
||||||
@ -466,7 +466,7 @@ gdk_drag_find_window (GdkDragContext *context,
|
|||||||
/* Check if new destination accepts drags, and which protocol */
|
/* Check if new destination accepts drags, and which protocol */
|
||||||
if ((recipient = gdk_drag_get_protocol ((guint32)dest, protocol)))
|
if ((recipient = gdk_drag_get_protocol ((guint32)dest, protocol)))
|
||||||
{
|
{
|
||||||
*dest_window = gdk_window_lookup (recipient);
|
*dest_window = gdk_window_lookup ((GdkNativeWindow) recipient);
|
||||||
gdk_window_ref (*dest_window);
|
gdk_window_ref (*dest_window);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -817,6 +817,10 @@ xlate_io (GIOChannel *gioc,
|
|||||||
gdk_fb_set_rotation (deg);
|
gdk_fb_set_rotation (deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((xlate_codes[j].code == GDK_F8) &&
|
||||||
|
(xlate_codes[j].modifier & GDK_SHIFT_MASK))
|
||||||
|
exit (1);
|
||||||
|
|
||||||
|
|
||||||
gdk_fb_handle_key (xlate_codes[j].code,
|
gdk_fb_handle_key (xlate_codes[j].code,
|
||||||
xlate_codes[j].code,
|
xlate_codes[j].code,
|
||||||
@ -1140,16 +1144,16 @@ static const guint trans_table[256][3] = {
|
|||||||
{0, 0, 0},
|
{0, 0, 0},
|
||||||
{0, 0, 0},
|
{0, 0, 0},
|
||||||
{0, 0, 0},
|
{0, 0, 0},
|
||||||
{0, 0, 0},
|
{GDK_Home, 0, 0},
|
||||||
{0, 0, 0},
|
{GDK_Up, 0, 0},
|
||||||
{0, 0, 0},
|
{GDK_Page_Up, 0, 0},
|
||||||
{0, 0, 0},
|
{GDK_Left, 0, 0},
|
||||||
{0, 0, 0},
|
{GDK_Right, 0, 0},
|
||||||
{0, 0, 0},
|
{GDK_End, 0, 0},
|
||||||
{0, 0, 0},
|
{GDK_Down, 0, 0},
|
||||||
{0, 0, 0},
|
{GDK_Page_Down, 0, 0},
|
||||||
{0, 0, 0},
|
{GDK_Insert, 0, 0},
|
||||||
{0, 0, 0},
|
{GDK_Delete, 0, 0},
|
||||||
|
|
||||||
/* 0x70 */
|
/* 0x70 */
|
||||||
{0, 0, 0},
|
{0, 0, 0},
|
||||||
@ -1456,7 +1460,7 @@ raw_open (GdkFBKeyboard *kb)
|
|||||||
|
|
||||||
if (ioctl (gdk_display->tty_fd, KDSKBMODE, K_MEDIUMRAW) < 0)
|
if (ioctl (gdk_display->tty_fd, KDSKBMODE, K_MEDIUMRAW) < 0)
|
||||||
{
|
{
|
||||||
g_warning ("setting tty to K_MEDIUMRAW failed");
|
g_warning ("setting tty to K_MEDIUMRAW failed (are you root?)");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1491,47 +1495,185 @@ raw_close (GdkFBKeyboard *kb)
|
|||||||
|
|
||||||
static guint
|
static guint
|
||||||
raw_lookup (GdkFBKeyboard *kb,
|
raw_lookup (GdkFBKeyboard *kb,
|
||||||
const GdkKeymapKey *key)
|
const GdkKeymapKey *key)
|
||||||
{
|
{
|
||||||
g_warning ("raw_lookup() NIY");
|
if (key->group != 0)
|
||||||
return FALSE;
|
return 0;
|
||||||
|
if ((key->keycode < 0) || (key->keycode >= 256))
|
||||||
|
return 0;
|
||||||
|
if ((key->level < 0) || (key->level >= 3))
|
||||||
|
return 0;
|
||||||
|
return trans_table[key->keycode][key->level];
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
raw_translate (GdkFBKeyboard *kb,
|
raw_translate (GdkFBKeyboard *kb,
|
||||||
guint hardware_keycode,
|
guint hardware_keycode,
|
||||||
GdkModifierType state,
|
GdkModifierType state,
|
||||||
gint group,
|
gint group,
|
||||||
guint *keyval,
|
guint *keyval,
|
||||||
gint *effective_group,
|
gint *effective_group,
|
||||||
gint *level,
|
gint *level,
|
||||||
GdkModifierType *consumed_modifiers)
|
GdkModifierType *consumed_modifiers)
|
||||||
{
|
{
|
||||||
g_warning ("raw_translate() NIY");
|
guint tmp_keyval;
|
||||||
return FALSE;
|
gint tmp_level;
|
||||||
|
|
||||||
|
if (keyval)
|
||||||
|
*keyval = 0;
|
||||||
|
if (effective_group)
|
||||||
|
*effective_group = 0;
|
||||||
|
if (level)
|
||||||
|
*level = 0;
|
||||||
|
if (consumed_modifiers)
|
||||||
|
*consumed_modifiers = 0;
|
||||||
|
|
||||||
|
if ((hardware_keycode < 0) || (hardware_keycode >= 256))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (group != 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (state & GDK_CONTROL_MASK)
|
||||||
|
tmp_level = 2;
|
||||||
|
else if (state & GDK_SHIFT_MASK)
|
||||||
|
tmp_level = 1;
|
||||||
|
else
|
||||||
|
tmp_level = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
tmp_keyval = trans_table[hardware_keycode][tmp_level --];
|
||||||
|
} while (!tmp_keyval && (tmp_level >= 0));
|
||||||
|
|
||||||
|
if (keyval)
|
||||||
|
*keyval = tmp_keyval;
|
||||||
|
if (level)
|
||||||
|
*level = tmp_level;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
raw_get_for_keyval (GdkFBKeyboard *kb,
|
raw_get_for_keyval (GdkFBKeyboard *kb,
|
||||||
guint keyval,
|
guint keyval,
|
||||||
GdkKeymapKey **keys,
|
GdkKeymapKey **keys,
|
||||||
gint *n_keys)
|
gint *n_keys)
|
||||||
{
|
{
|
||||||
g_warning ("raw_get_for_keyval() NIY");
|
GArray *retval;
|
||||||
if (keys) *keys=NULL;
|
int i, j;
|
||||||
if (n_keys) *n_keys=0;
|
|
||||||
return FALSE;
|
retval = g_array_new (FALSE, FALSE, sizeof (GdkKeymapKey));
|
||||||
|
|
||||||
|
for (i = 0; i < 256; i++)
|
||||||
|
for (j = 0; j < 3; j++)
|
||||||
|
if (trans_table[i][j] == keyval)
|
||||||
|
{
|
||||||
|
GdkKeymapKey key;
|
||||||
|
|
||||||
|
key.keycode = i;
|
||||||
|
key.group = 0;
|
||||||
|
key.level = j;
|
||||||
|
|
||||||
|
g_array_append_val (retval, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (retval->len > 0)
|
||||||
|
{
|
||||||
|
*keys = (GdkKeymapKey*) retval->data;
|
||||||
|
*n_keys = retval->len;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*keys = NULL;
|
||||||
|
*n_keys = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_array_free (retval, retval->len > 0 ? FALSE : TRUE);
|
||||||
|
|
||||||
|
return *n_keys > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
raw_get_for_keycode (GdkFBKeyboard *kb,
|
raw_get_for_keycode (GdkFBKeyboard *kb,
|
||||||
guint hardware_keycode,
|
guint hardware_keycode,
|
||||||
GdkKeymapKey **keys,
|
GdkKeymapKey **keys,
|
||||||
guint **keyvals,
|
guint **keyvals,
|
||||||
gint *n_entries)
|
gint *n_entries)
|
||||||
{
|
{
|
||||||
g_warning ("raw_get_for_keycode() NIY");
|
GArray *key_array;
|
||||||
if (keys) *keys=NULL;
|
GArray *keyval_array;
|
||||||
if (n_entries) *n_entries=0;
|
int i;
|
||||||
return FALSE;
|
|
||||||
|
if (hardware_keycode <= 0 ||
|
||||||
|
hardware_keycode >= 256)
|
||||||
|
{
|
||||||
|
if (keys)
|
||||||
|
*keys = NULL;
|
||||||
|
if (keyvals)
|
||||||
|
*keyvals = NULL;
|
||||||
|
|
||||||
|
*n_entries = 0;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (keys)
|
||||||
|
key_array = g_array_new (FALSE, FALSE, sizeof (GdkKeymapKey));
|
||||||
|
else
|
||||||
|
key_array = NULL;
|
||||||
|
|
||||||
|
if (keyvals)
|
||||||
|
keyval_array = g_array_new (FALSE, FALSE, sizeof (guint));
|
||||||
|
else
|
||||||
|
keyval_array = NULL;
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
if (key_array)
|
||||||
|
{
|
||||||
|
GdkKeymapKey key;
|
||||||
|
|
||||||
|
key.keycode = hardware_keycode;
|
||||||
|
key.group = 0;
|
||||||
|
key.level = i;
|
||||||
|
|
||||||
|
g_array_append_val (key_array, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (keyval_array)
|
||||||
|
{
|
||||||
|
g_array_append_val (keyval_array, trans_table[hardware_keycode][i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((key_array && key_array->len > 0) ||
|
||||||
|
(keyval_array && keyval_array->len > 0))
|
||||||
|
{
|
||||||
|
if (keys)
|
||||||
|
*keys = (GdkKeymapKey*) key_array->data;
|
||||||
|
|
||||||
|
if (keyvals)
|
||||||
|
*keyvals = (guint*) keyval_array->data;
|
||||||
|
|
||||||
|
if (key_array)
|
||||||
|
*n_entries = key_array->len;
|
||||||
|
else
|
||||||
|
*n_entries = keyval_array->len;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (keys)
|
||||||
|
*keys = NULL;
|
||||||
|
|
||||||
|
if (keyvals)
|
||||||
|
*keyvals = NULL;
|
||||||
|
|
||||||
|
*n_entries = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key_array)
|
||||||
|
g_array_free (key_array, key_array->len > 0 ? FALSE : TRUE);
|
||||||
|
if (keyval_array)
|
||||||
|
g_array_free (keyval_array, keyval_array->len > 0 ? FALSE : TRUE);
|
||||||
|
|
||||||
|
return *n_entries > 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -409,7 +409,7 @@ gdk_fb_setup_mode_from_name (struct fb_var_screeninfo *modeinfo,
|
|||||||
scanner->input_name = filename;
|
scanner->input_name = filename;
|
||||||
|
|
||||||
for (i = 0; i < sizeof(fb_modes_keywords)/sizeof(fb_modes_keywords[0]); i++)
|
for (i = 0; i < sizeof(fb_modes_keywords)/sizeof(fb_modes_keywords[0]); i++)
|
||||||
g_scanner_add_symbol (scanner, fb_modes_keywords[i], GINT_TO_POINTER (i));
|
g_scanner_scope_add_symbol (scanner, 0, fb_modes_keywords[i], GINT_TO_POINTER (i));
|
||||||
|
|
||||||
g_scanner_input_file (scanner, fd);
|
g_scanner_input_file (scanner, fd);
|
||||||
|
|
||||||
|
|||||||
@ -216,7 +216,7 @@ gdk_selection_send_notify_for_display (GdkDisplay *display,
|
|||||||
GdkEvent *event;
|
GdkEvent *event;
|
||||||
GdkWindow *event_window;
|
GdkWindow *event_window;
|
||||||
|
|
||||||
event_window = gdk_fb_other_event_window (gdk_window_lookup (requestor), GDK_SELECTION_NOTIFY);
|
event_window = gdk_fb_other_event_window (gdk_window_lookup ((GdkNativeWindow) requestor), GDK_SELECTION_NOTIFY);
|
||||||
if (event_window)
|
if (event_window)
|
||||||
{
|
{
|
||||||
event = gdk_event_make (event_window, GDK_SELECTION_NOTIFY, TRUE);
|
event = gdk_event_make (event_window, GDK_SELECTION_NOTIFY, TRUE);
|
||||||
|
|||||||
@ -2154,7 +2154,9 @@ gdk_window_maximize (GdkWindow *window)
|
|||||||
{
|
{
|
||||||
g_return_if_fail (GDK_IS_WINDOW (window));
|
g_return_if_fail (GDK_IS_WINDOW (window));
|
||||||
|
|
||||||
g_warning ("gdk_window_maximize() not implemented.\n");
|
gdk_synthesize_window_state (window,
|
||||||
|
0,
|
||||||
|
GDK_WINDOW_STATE_MAXIMIZED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -2162,7 +2164,9 @@ gdk_window_unmaximize (GdkWindow *window)
|
|||||||
{
|
{
|
||||||
g_return_if_fail (GDK_IS_WINDOW (window));
|
g_return_if_fail (GDK_IS_WINDOW (window));
|
||||||
|
|
||||||
/* g_warning ("gdk_window_unmaximize() not implemented.\n");*/
|
gdk_synthesize_window_state (window,
|
||||||
|
GDK_WINDOW_STATE_MAXIMIZED,
|
||||||
|
0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@ -401,8 +401,8 @@ miComputeCircleSpans(int lw, miArc *parc, miArcSpanData *spdata)
|
|||||||
register int x, y, e;
|
register int x, y, e;
|
||||||
int xk, yk, xm, ym, dx, dy;
|
int xk, yk, xm, ym, dx, dy;
|
||||||
register int slw, inslw;
|
register int slw, inslw;
|
||||||
int inx, iny, ine;
|
int inx = 0, iny, ine = 0;
|
||||||
int inxk, inyk, inxm, inym;
|
int inxk = 0, inyk = 0, inxm = 0, inym = 0;
|
||||||
|
|
||||||
doinner = -lw;
|
doinner = -lw;
|
||||||
slw = parc->width - doinner;
|
slw = parc->width - doinner;
|
||||||
@ -464,7 +464,7 @@ miComputeEllipseSpans(int lw, miArc *parc, miArcSpanData *spdata)
|
|||||||
register miArcSpan *span;
|
register miArcSpan *span;
|
||||||
double w, h, r, xorg;
|
double w, h, r, xorg;
|
||||||
double Hs, Hf, WH, K, Vk, Nk, Fk, Vr, N, Nc, Z, rs;
|
double Hs, Hf, WH, K, Vk, Nk, Fk, Vr, N, Nc, Z, rs;
|
||||||
double A, T, b, d, x, y, t, inx, outx, hepp, hepm;
|
double A, T, b, d, x, y, t, inx, outx = 0.0, hepp, hepm;
|
||||||
int flip, solution;
|
int flip, solution;
|
||||||
|
|
||||||
w = (double)parc->width / 2.0;
|
w = (double)parc->width / 2.0;
|
||||||
@ -986,8 +986,8 @@ miPolyArc(GdkDrawable *pDraw, GdkGC *pGC, int narcs, miArc *parcs)
|
|||||||
register int i;
|
register int i;
|
||||||
miArc *parc;
|
miArc *parc;
|
||||||
int xMin, xMax, yMin, yMax;
|
int xMin, xMax, yMin, yMax;
|
||||||
int pixmapWidth, pixmapHeight;
|
int pixmapWidth = 0, pixmapHeight = 0;
|
||||||
int xOrg, yOrg;
|
int xOrg = 0, yOrg = 0;
|
||||||
int width;
|
int width;
|
||||||
gboolean fTricky;
|
gboolean fTricky;
|
||||||
GdkDrawable* pDrawTo;
|
GdkDrawable* pDrawTo;
|
||||||
@ -1243,7 +1243,7 @@ miArcJoin (GdkDrawable *pDraw, GdkGC *pGC, miArcFacePtr pLeft, miArcFacePtr pRig
|
|||||||
int cpt;
|
int cpt;
|
||||||
SppArcRec arc;
|
SppArcRec arc;
|
||||||
miArcFaceRec Right, Left;
|
miArcFaceRec Right, Left;
|
||||||
int polyLen;
|
int polyLen = 0;
|
||||||
int xOrg, yOrg;
|
int xOrg, yOrg;
|
||||||
double xFtrans, yFtrans;
|
double xFtrans, yFtrans;
|
||||||
double a;
|
double a;
|
||||||
@ -1746,7 +1746,7 @@ computeDashMap (arcp, map)
|
|||||||
dashMap *map;
|
dashMap *map;
|
||||||
{
|
{
|
||||||
int di;
|
int di;
|
||||||
double a, x, y, prevx, prevy, dist;
|
double a, x, y, prevx = 0.0, prevy = 0.0, dist;
|
||||||
|
|
||||||
for (di = 0; di < DASH_MAP_SIZE; di++) {
|
for (di = 0; di < DASH_MAP_SIZE; di++) {
|
||||||
a = dashIndexToAngle (di);
|
a = dashIndexToAngle (di);
|
||||||
@ -1773,7 +1773,7 @@ miComputeArcs (miArc *parcs, int narcs, GdkGC *pGC)
|
|||||||
int isDashed, isDoubleDash;
|
int isDashed, isDoubleDash;
|
||||||
int dashOffset;
|
int dashOffset;
|
||||||
miPolyArcPtr arcs;
|
miPolyArcPtr arcs;
|
||||||
int start, i, j, k, nexti, nextk;
|
int start, i, j, k = 0, nexti, nextk = 0;
|
||||||
int joinSize[2];
|
int joinSize[2];
|
||||||
int capSize[2];
|
int capSize[2];
|
||||||
int arcSize[2];
|
int arcSize[2];
|
||||||
@ -1782,13 +1782,13 @@ miComputeArcs (miArc *parcs, int narcs, GdkGC *pGC)
|
|||||||
struct arcData *data;
|
struct arcData *data;
|
||||||
miArcDataPtr arc;
|
miArcDataPtr arc;
|
||||||
miArc xarc;
|
miArc xarc;
|
||||||
int iphase, prevphase, joinphase;
|
int iphase, prevphase = 0, joinphase;
|
||||||
int arcsJoin;
|
int arcsJoin;
|
||||||
int selfJoin;
|
int selfJoin;
|
||||||
|
|
||||||
int iDash, dashRemaining;
|
int iDash = 0, dashRemaining;
|
||||||
int iDashStart, dashRemainingStart, iphaseStart;
|
int iDashStart = 0, dashRemainingStart = 0, iphaseStart;
|
||||||
int startAngle, spanAngle, endAngle, backwards;
|
int startAngle, spanAngle, endAngle, backwards = 0;
|
||||||
int prevDashAngle, dashAngle;
|
int prevDashAngle, dashAngle;
|
||||||
dashMap map;
|
dashMap map;
|
||||||
|
|
||||||
@ -2330,7 +2330,7 @@ drawZeroArc (pDraw, pGC, tarc, lw, left, right)
|
|||||||
int lw;
|
int lw;
|
||||||
miArcFacePtr right, left;
|
miArcFacePtr right, left;
|
||||||
{
|
{
|
||||||
double x0, y0, x1, y1, w, h, x, y;
|
double x0 = 0.0, y0 = 0.0, x1 = 0.0, y1 = 0.0, w, h, x, y;
|
||||||
double xmax, ymax, xmin, ymin;
|
double xmax, ymax, xmin, ymin;
|
||||||
int a0, a1;
|
int a0, a1;
|
||||||
double a, startAngle, endAngle;
|
double a, startAngle, endAngle;
|
||||||
@ -3222,9 +3222,9 @@ drawArc (miArc *tarc, int l, int a0, int a1, miArcFacePtr right, miArcFacePtr le
|
|||||||
struct arc_def def;
|
struct arc_def def;
|
||||||
struct accelerators acc;
|
struct accelerators acc;
|
||||||
int startq, endq, curq;
|
int startq, endq, curq;
|
||||||
int rightq, leftq, righta, lefta;
|
int rightq, leftq = 0, righta = 0, lefta = 0;
|
||||||
miArcFacePtr passRight, passLeft;
|
miArcFacePtr passRight, passLeft;
|
||||||
int q0, q1, mask;
|
int q0 = 0, q1 = 0, mask;
|
||||||
struct band {
|
struct band {
|
||||||
int a0, a1;
|
int a0, a1;
|
||||||
int mask;
|
int mask;
|
||||||
|
|||||||
@ -79,9 +79,9 @@ miFillSppPoly(GdkDrawable *dst, GdkGC *pgc, int count, SppPointPtr ptsIn, int xT
|
|||||||
*/
|
*/
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
double xl, xr, /* x vals of left and right edges */
|
double xl = 0.0, xr = 0.0, /* x vals of left and right edges */
|
||||||
ml, /* left edge slope */
|
ml = 0.0, /* left edge slope */
|
||||||
mr, /* right edge slope */
|
mr = 0.0, /* right edge slope */
|
||||||
dy, /* delta y */
|
dy, /* delta y */
|
||||||
i; /* loop counter */
|
i; /* loop counter */
|
||||||
int y, /* current scanline */
|
int y, /* current scanline */
|
||||||
|
|||||||
@ -81,7 +81,7 @@ miFillPolyHelper (pDrawable, pGC, pixel, spanData, y, overall_height,
|
|||||||
int left_height = 0, right_height = 0;
|
int left_height = 0, right_height = 0;
|
||||||
|
|
||||||
register GdkSpan* ppt;
|
register GdkSpan* ppt;
|
||||||
GdkSpan* pptInit;
|
GdkSpan* pptInit = NULL;
|
||||||
GdkColor oldPixel;
|
GdkColor oldPixel;
|
||||||
int xorg;
|
int xorg;
|
||||||
Spans spanRec;
|
Spans spanRec;
|
||||||
|
|||||||
@ -406,13 +406,13 @@ miZeroClipLine(xmin, ymin, xmax, ymax,
|
|||||||
{
|
{
|
||||||
int swapped = 0;
|
int swapped = 0;
|
||||||
int clipDone = 0;
|
int clipDone = 0;
|
||||||
guint32 utmp;
|
guint32 utmp = 0;
|
||||||
int clip1, clip2;
|
int clip1, clip2;
|
||||||
int x1, y1, x2, y2;
|
int x1, y1, x2, y2;
|
||||||
int x1_orig, y1_orig, x2_orig, y2_orig;
|
int x1_orig, y1_orig, x2_orig, y2_orig;
|
||||||
int xmajor;
|
int xmajor;
|
||||||
int negslope, anchorval;
|
int negslope = 0, anchorval = 0;
|
||||||
unsigned int eqn;
|
unsigned int eqn = 0;
|
||||||
|
|
||||||
x1 = x1_orig = *new_x1;
|
x1 = x1_orig = *new_x1;
|
||||||
y1 = y1_orig = *new_y1;
|
y1 = y1_orig = *new_y1;
|
||||||
|
|||||||
@ -92,13 +92,13 @@ miZeroLine(pDraw, pGC, mode, npt, pptInit)
|
|||||||
int npt; /* number of points */
|
int npt; /* number of points */
|
||||||
GdkPoint* pptInit;
|
GdkPoint* pptInit;
|
||||||
{
|
{
|
||||||
int Nspans, current_y;
|
int Nspans, current_y = 0;
|
||||||
GdkPoint* ppt;
|
GdkPoint* ppt;
|
||||||
GdkSpan* pspanInit, *spans;
|
GdkSpan* pspanInit, *spans;
|
||||||
int list_len;
|
int list_len;
|
||||||
int xleft, ytop, xright, ybottom;
|
int xleft, ytop, xright, ybottom;
|
||||||
int new_x1, new_y1, new_x2, new_y2;
|
int new_x1, new_y1, new_x2, new_y2;
|
||||||
int x, y, x1, y1, x2, y2, xstart, ystart;
|
int x = 0, y = 0, x1, y1, x2, y2, xstart, ystart;
|
||||||
int oc1, oc2;
|
int oc1, oc2;
|
||||||
int result;
|
int result;
|
||||||
int pt1_clipped, pt2_clipped = 0;
|
int pt1_clipped, pt2_clipped = 0;
|
||||||
|
|||||||
@ -36,6 +36,7 @@
|
|||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
GTK_WINDOW_REGION_TITLE,
|
GTK_WINDOW_REGION_TITLE,
|
||||||
|
GTK_WINDOW_REGION_MAXIMIZE,
|
||||||
GTK_WINDOW_REGION_CLOSE,
|
GTK_WINDOW_REGION_CLOSE,
|
||||||
GTK_WINDOW_REGION_BR_RESIZE
|
GTK_WINDOW_REGION_BR_RESIZE
|
||||||
} GtkWindowRegionType;
|
} GtkWindowRegionType;
|
||||||
@ -68,6 +69,7 @@ struct _GtkWindowDecoration
|
|||||||
GtkWindowRegion *regions;
|
GtkWindowRegion *regions;
|
||||||
|
|
||||||
gint last_x, last_y;
|
gint last_x, last_y;
|
||||||
|
gint last_w, last_h;
|
||||||
|
|
||||||
PangoLayout *title_layout;
|
PangoLayout *title_layout;
|
||||||
|
|
||||||
@ -75,6 +77,9 @@ struct _GtkWindowDecoration
|
|||||||
|
|
||||||
gboolean moving : 1;
|
gboolean moving : 1;
|
||||||
gboolean closing : 1;
|
gboolean closing : 1;
|
||||||
|
gboolean maximizing : 1;
|
||||||
|
gboolean maximized : 1;
|
||||||
|
gboolean maximizable : 1;
|
||||||
gboolean decorated : 1;
|
gboolean decorated : 1;
|
||||||
gboolean real_inner_move : 1;
|
gboolean real_inner_move : 1;
|
||||||
gboolean focused : 1;
|
gboolean focused : 1;
|
||||||
@ -102,6 +107,8 @@ static gint gtk_decorated_window_button_release (GtkWidget *widget,
|
|||||||
GdkEventButton *event);
|
GdkEventButton *event);
|
||||||
static gint gtk_decorated_window_motion_notify (GtkWidget *widget,
|
static gint gtk_decorated_window_motion_notify (GtkWidget *widget,
|
||||||
GdkEventMotion *event);
|
GdkEventMotion *event);
|
||||||
|
static gint gtk_decorated_window_window_state (GtkWidget *widget,
|
||||||
|
GdkEventWindowState *event);
|
||||||
static void gtk_decorated_window_paint (GtkWidget *widget,
|
static void gtk_decorated_window_paint (GtkWidget *widget,
|
||||||
GdkRectangle *area);
|
GdkRectangle *area);
|
||||||
static gint gtk_decorated_window_focus_change (GtkWidget *widget,
|
static gint gtk_decorated_window_focus_change (GtkWidget *widget,
|
||||||
@ -133,6 +140,9 @@ gtk_decorated_window_init (GtkWindow *window)
|
|||||||
deco->moving = FALSE;
|
deco->moving = FALSE;
|
||||||
deco->decorated = TRUE;
|
deco->decorated = TRUE;
|
||||||
deco->closing = FALSE;
|
deco->closing = FALSE;
|
||||||
|
deco->maximizing = FALSE;
|
||||||
|
deco->maximized = FALSE;
|
||||||
|
deco->maximizable = FALSE;
|
||||||
deco->real_inner_move = FALSE;
|
deco->real_inner_move = FALSE;
|
||||||
|
|
||||||
g_object_set_data_full (G_OBJECT (window), "gtk-window-decoration", deco,
|
g_object_set_data_full (G_OBJECT (window), "gtk-window-decoration", deco,
|
||||||
@ -189,12 +199,20 @@ gtk_decorated_window_calculate_frame_size (GtkWindow *window)
|
|||||||
{
|
{
|
||||||
if ((decorations & GDK_DECOR_BORDER) &&
|
if ((decorations & GDK_DECOR_BORDER) &&
|
||||||
(decorations & GDK_DECOR_TITLE))
|
(decorations & GDK_DECOR_TITLE))
|
||||||
deco->decorated = TRUE;
|
{
|
||||||
|
deco->decorated = TRUE;
|
||||||
|
if ((decorations & GDK_DECOR_MAXIMIZE) &&
|
||||||
|
(gtk_window_get_type_hint (window) == GDK_WINDOW_TYPE_HINT_NORMAL))
|
||||||
|
deco->maximizable = TRUE;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
deco->decorated = FALSE;
|
deco->decorated = FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
deco->decorated = (window->type != GTK_WINDOW_POPUP);
|
{
|
||||||
|
deco->decorated = (window->type != GTK_WINDOW_POPUP);
|
||||||
|
deco->maximizable = (gtk_window_get_type_hint (window) == GDK_WINDOW_TYPE_HINT_NORMAL);
|
||||||
|
}
|
||||||
|
|
||||||
if (deco->decorated)
|
if (deco->decorated)
|
||||||
gtk_window_set_frame_dimensions (window,
|
gtk_window_set_frame_dimensions (window,
|
||||||
@ -312,6 +330,8 @@ gtk_decorated_window_frame_event (GtkWindow *window, GdkEvent *event)
|
|||||||
break;
|
break;
|
||||||
case GDK_BUTTON_RELEASE:
|
case GDK_BUTTON_RELEASE:
|
||||||
return gtk_decorated_window_button_release (widget, (GdkEventButton *)event);
|
return gtk_decorated_window_button_release (widget, (GdkEventButton *)event);
|
||||||
|
case GDK_WINDOW_STATE:
|
||||||
|
return gtk_decorated_window_window_state (widget, (GdkEventWindowState *)event);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -441,22 +461,32 @@ gtk_decorated_window_button_press (GtkWidget *widget,
|
|||||||
|
|
||||||
type = gtk_decorated_window_region_type (window, x, y);
|
type = gtk_decorated_window_region_type (window, x, y);
|
||||||
|
|
||||||
deco->last_x = x;
|
|
||||||
deco->last_y = y;
|
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case GTK_WINDOW_REGION_TITLE:
|
case GTK_WINDOW_REGION_TITLE:
|
||||||
|
if (!deco->maximized && event->state & GDK_BUTTON1_MASK)
|
||||||
|
{
|
||||||
|
deco->last_x = x;
|
||||||
|
deco->last_y = y;
|
||||||
|
deco->moving = TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GTK_WINDOW_REGION_MAXIMIZE:
|
||||||
if (event->state & GDK_BUTTON1_MASK)
|
if (event->state & GDK_BUTTON1_MASK)
|
||||||
deco->moving = TRUE;
|
deco->maximizing = TRUE;
|
||||||
break;
|
break;
|
||||||
case GTK_WINDOW_REGION_CLOSE:
|
case GTK_WINDOW_REGION_CLOSE:
|
||||||
if (event->state & GDK_BUTTON1_MASK)
|
if (event->state & GDK_BUTTON1_MASK)
|
||||||
deco->closing = TRUE;
|
deco->closing = TRUE;
|
||||||
break;
|
break;
|
||||||
case GTK_WINDOW_REGION_BR_RESIZE:
|
case GTK_WINDOW_REGION_BR_RESIZE:
|
||||||
if (event->state & GDK_BUTTON1_MASK)
|
if (!deco->maximized)
|
||||||
deco->resize = RESIZE_BOTTOM_RIGHT;
|
{
|
||||||
|
if (event->state & GDK_BUTTON1_MASK)
|
||||||
|
deco->resize = RESIZE_BOTTOM_RIGHT;
|
||||||
|
deco->last_x = x;
|
||||||
|
deco->last_y = y;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -491,13 +521,67 @@ gtk_decorated_window_button_release (GtkWidget *widget,
|
|||||||
gdk_event_free (event);
|
gdk_event_free (event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (deco->maximizing)
|
||||||
|
{
|
||||||
|
type = gtk_decorated_window_region_type (window, event->x, event->y);
|
||||||
|
if (type == GTK_WINDOW_REGION_MAXIMIZE)
|
||||||
|
{
|
||||||
|
if (deco->maximized)
|
||||||
|
gtk_window_unmaximize (window);
|
||||||
|
else
|
||||||
|
gtk_window_maximize (window);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
deco->closing = FALSE;
|
deco->closing = FALSE;
|
||||||
|
deco->maximizing = FALSE;
|
||||||
deco->moving = FALSE;
|
deco->moving = FALSE;
|
||||||
deco->resize = RESIZE_NONE;
|
deco->resize = RESIZE_NONE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gint
|
||||||
|
gtk_decorated_window_window_state (GtkWidget *widget,
|
||||||
|
GdkEventWindowState *event)
|
||||||
|
{
|
||||||
|
GtkWindow *window;
|
||||||
|
GtkWindowDecoration *deco;
|
||||||
|
GdkWindowObject *priv;
|
||||||
|
|
||||||
|
window = GTK_WINDOW (widget);
|
||||||
|
deco = get_decoration (window);
|
||||||
|
priv = GDK_WINDOW_OBJECT (window->frame);
|
||||||
|
|
||||||
|
if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED)
|
||||||
|
{
|
||||||
|
if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED)
|
||||||
|
{
|
||||||
|
int w, h;
|
||||||
|
gdk_window_get_geometry (widget->window, NULL, NULL,
|
||||||
|
&deco->last_w, &deco->last_h, NULL);
|
||||||
|
gdk_window_get_origin (widget->window, &deco->last_x, &deco->last_y);
|
||||||
|
w = gdk_screen_get_width(gdk_screen_get_default()) - DECORATION_BORDER_TOT_X;
|
||||||
|
h = gdk_screen_get_height(gdk_screen_get_default()) - DECORATION_BORDER_TOT_Y;
|
||||||
|
_gtk_window_constrain_size (window, w, h, &w, &h);
|
||||||
|
if (w != deco->last_w || h != deco->last_h)
|
||||||
|
{
|
||||||
|
_gtk_window_reposition (window, DECORATION_BORDER_LEFT, DECORATION_BORDER_TOP);
|
||||||
|
gdk_window_resize (widget->window, w, h);
|
||||||
|
deco->maximized = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_gtk_window_reposition (window, deco->last_x, deco->last_y);
|
||||||
|
_gtk_window_constrain_size (window, deco->last_w, deco->last_h,
|
||||||
|
&deco->last_w, &deco->last_h);
|
||||||
|
gdk_window_resize (widget->window, deco->last_w, deco->last_h);
|
||||||
|
deco->maximized = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_decorated_window_paint (GtkWidget *widget,
|
gtk_decorated_window_paint (GtkWidget *widget,
|
||||||
GdkRectangle *area)
|
GdkRectangle *area)
|
||||||
@ -551,6 +635,31 @@ gtk_decorated_window_paint (GtkWidget *widget,
|
|||||||
DECORATION_BORDER_LEFT - 2, DECORATION_BORDER_TOP - 2,
|
DECORATION_BORDER_LEFT - 2, DECORATION_BORDER_TOP - 2,
|
||||||
width - (DECORATION_BORDER_LEFT + DECORATION_BORDER_RIGHT) + 3,
|
width - (DECORATION_BORDER_LEFT + DECORATION_BORDER_RIGHT) + 3,
|
||||||
height - (DECORATION_BORDER_TOP + DECORATION_BORDER_BOTTOM) + 3);
|
height - (DECORATION_BORDER_TOP + DECORATION_BORDER_BOTTOM) + 3);
|
||||||
|
|
||||||
|
if (deco->maximizable)
|
||||||
|
{
|
||||||
|
/* Maximize button: */
|
||||||
|
|
||||||
|
x1 = width - (DECORATION_BORDER_LEFT * 2) - (DECORATION_BUTTON_SIZE * 2);
|
||||||
|
y1 = DECORATION_BUTTON_Y_OFFSET;
|
||||||
|
x2 = x1 + DECORATION_BUTTON_SIZE;
|
||||||
|
y2 = y1 + DECORATION_BUTTON_SIZE;
|
||||||
|
|
||||||
|
if (area)
|
||||||
|
gdk_gc_set_clip_rectangle (widget->style->bg_gc[widget->state], area);
|
||||||
|
|
||||||
|
gdk_draw_rectangle (frame, widget->style->bg_gc[widget->state], TRUE,
|
||||||
|
x1, y1, x2 - x1, y2 - y1);
|
||||||
|
|
||||||
|
gdk_draw_line (frame, widget->style->black_gc, x1 + 1, y1 + 1, x2 - 2, y1 + 1);
|
||||||
|
|
||||||
|
gdk_draw_rectangle (frame, widget->style->black_gc, FALSE,
|
||||||
|
x1 + 1, y1 + 2,
|
||||||
|
DECORATION_BUTTON_SIZE - 3, DECORATION_BUTTON_SIZE - 4);
|
||||||
|
|
||||||
|
if (area)
|
||||||
|
gdk_gc_set_clip_rectangle (widget->style->black_gc, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/* Close button: */
|
/* Close button: */
|
||||||
|
|
||||||
@ -584,14 +693,14 @@ gtk_decorated_window_paint (GtkWidget *widget,
|
|||||||
if (deco->title_layout)
|
if (deco->title_layout)
|
||||||
{
|
{
|
||||||
if (area)
|
if (area)
|
||||||
gdk_gc_set_clip_rectangle (widget->style->fg_gc [widget->state], area);
|
gdk_gc_set_clip_rectangle (widget->style->fg_gc [border_state], area);
|
||||||
|
|
||||||
gdk_draw_layout (frame,
|
gdk_draw_layout (frame,
|
||||||
widget->style->fg_gc [widget->state],
|
widget->style->fg_gc [border_state],
|
||||||
DECORATION_BORDER_LEFT, 1,
|
DECORATION_BORDER_LEFT, 1,
|
||||||
deco->title_layout);
|
deco->title_layout);
|
||||||
if (area)
|
if (area)
|
||||||
gdk_gc_set_clip_rectangle (widget->style->fg_gc [widget->state], NULL);
|
gdk_gc_set_clip_rectangle (widget->style->fg_gc [border_state], NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -612,6 +721,8 @@ gtk_decorated_window_recalculate_regions (GtkWindow *window)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
n_regions += 2; /* close, Title */
|
n_regions += 2; /* close, Title */
|
||||||
|
if (deco->maximizable)
|
||||||
|
n_regions += 1;
|
||||||
if (window->allow_shrink || window->allow_grow)
|
if (window->allow_shrink || window->allow_grow)
|
||||||
n_regions += 2;
|
n_regions += 2;
|
||||||
|
|
||||||
@ -627,9 +738,20 @@ gtk_decorated_window_recalculate_regions (GtkWindow *window)
|
|||||||
|
|
||||||
region = deco->regions;
|
region = deco->regions;
|
||||||
|
|
||||||
|
/* Maximize button */
|
||||||
|
if (deco->maximizable)
|
||||||
|
{
|
||||||
|
region->rect.x = width - (DECORATION_BORDER_LEFT * 2) - (DECORATION_BUTTON_SIZE * 2);
|
||||||
|
region->rect.y = DECORATION_BUTTON_Y_OFFSET;
|
||||||
|
region->rect.width = DECORATION_BUTTON_SIZE;
|
||||||
|
region->rect.height = DECORATION_BUTTON_SIZE;
|
||||||
|
region->type = GTK_WINDOW_REGION_MAXIMIZE;
|
||||||
|
region++;
|
||||||
|
}
|
||||||
|
|
||||||
/* Close button */
|
/* Close button */
|
||||||
region->rect.x = width - DECORATION_BORDER_LEFT - DECORATION_BUTTON_SIZE;
|
region->rect.x = width - DECORATION_BORDER_LEFT - DECORATION_BUTTON_SIZE;
|
||||||
region->rect.y = 2;
|
region->rect.y = DECORATION_BUTTON_Y_OFFSET;
|
||||||
region->rect.width = DECORATION_BUTTON_SIZE;
|
region->rect.width = DECORATION_BUTTON_SIZE;
|
||||||
region->rect.height = DECORATION_BUTTON_SIZE;
|
region->rect.height = DECORATION_BUTTON_SIZE;
|
||||||
region->type = GTK_WINDOW_REGION_CLOSE;
|
region->type = GTK_WINDOW_REGION_CLOSE;
|
||||||
|
|||||||
Reference in New Issue
Block a user