forked from AuroraMiddleware/gtk
fixed a bunch of notifications, added reference counts around emissions
Sun Apr 1 03:28:14 2001 Tim Janik <timj@gtk.org> * gtk/gtkwidget.c: fixed a bunch of notifications, added reference counts around emissions where the widget is used afterwards. added freeze/thaws around multiple properties being notified. (_gtk_widget_get_aux_info): cleanups. * gtk/gtksettings.c (gtk_settings_install_property): provide default parsing functions for gdkcolor, enums and flags. * gtk/gtkwindow.[hc]: partially reverted patch from havoc, applied by owen. kept a flag in GtkWindowGeometryInfo to handle user resetting default sizes. cleaned up ZVT comments. bunch of assorted bug fixes, notification fixes. (_gtk_window_reposition): make this a really internal function. * gtk/testgtk.c: fixups.
This commit is contained in:
parent
6ff97d2e0b
commit
1f7e5c0610
20
ChangeLog
20
ChangeLog
@ -1,3 +1,23 @@
|
||||
Sun Apr 1 03:28:14 2001 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkwidget.c: fixed a bunch of notifications, added
|
||||
reference counts around emissions where the widget is used afterwards.
|
||||
added freeze/thaws around multiple properties being notified.
|
||||
(_gtk_widget_get_aux_info): cleanups.
|
||||
|
||||
* gtk/gtksettings.c (gtk_settings_install_property): provide
|
||||
default parsing functions for gdkcolor, enums and flags.
|
||||
|
||||
* gtk/gtkwindow.[hc]: partially reverted patch from havoc,
|
||||
applied by owen.
|
||||
kept a flag in GtkWindowGeometryInfo to handle user
|
||||
resetting default sizes.
|
||||
cleaned up ZVT comments.
|
||||
bunch of assorted bug fixes, notification fixes.
|
||||
(_gtk_window_reposition): make this a really internal function.
|
||||
|
||||
* gtk/testgtk.c: fixups.
|
||||
|
||||
2001-03-31 Hans Breuer <hans@breuer.org>
|
||||
|
||||
* config.h.win32.in : disable USE_MMX for msvc build cause
|
||||
|
@ -1,3 +1,23 @@
|
||||
Sun Apr 1 03:28:14 2001 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkwidget.c: fixed a bunch of notifications, added
|
||||
reference counts around emissions where the widget is used afterwards.
|
||||
added freeze/thaws around multiple properties being notified.
|
||||
(_gtk_widget_get_aux_info): cleanups.
|
||||
|
||||
* gtk/gtksettings.c (gtk_settings_install_property): provide
|
||||
default parsing functions for gdkcolor, enums and flags.
|
||||
|
||||
* gtk/gtkwindow.[hc]: partially reverted patch from havoc,
|
||||
applied by owen.
|
||||
kept a flag in GtkWindowGeometryInfo to handle user
|
||||
resetting default sizes.
|
||||
cleaned up ZVT comments.
|
||||
bunch of assorted bug fixes, notification fixes.
|
||||
(_gtk_window_reposition): make this a really internal function.
|
||||
|
||||
* gtk/testgtk.c: fixups.
|
||||
|
||||
2001-03-31 Hans Breuer <hans@breuer.org>
|
||||
|
||||
* config.h.win32.in : disable USE_MMX for msvc build cause
|
||||
|
@ -1,3 +1,23 @@
|
||||
Sun Apr 1 03:28:14 2001 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkwidget.c: fixed a bunch of notifications, added
|
||||
reference counts around emissions where the widget is used afterwards.
|
||||
added freeze/thaws around multiple properties being notified.
|
||||
(_gtk_widget_get_aux_info): cleanups.
|
||||
|
||||
* gtk/gtksettings.c (gtk_settings_install_property): provide
|
||||
default parsing functions for gdkcolor, enums and flags.
|
||||
|
||||
* gtk/gtkwindow.[hc]: partially reverted patch from havoc,
|
||||
applied by owen.
|
||||
kept a flag in GtkWindowGeometryInfo to handle user
|
||||
resetting default sizes.
|
||||
cleaned up ZVT comments.
|
||||
bunch of assorted bug fixes, notification fixes.
|
||||
(_gtk_window_reposition): make this a really internal function.
|
||||
|
||||
* gtk/testgtk.c: fixups.
|
||||
|
||||
2001-03-31 Hans Breuer <hans@breuer.org>
|
||||
|
||||
* config.h.win32.in : disable USE_MMX for msvc build cause
|
||||
|
@ -1,3 +1,23 @@
|
||||
Sun Apr 1 03:28:14 2001 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkwidget.c: fixed a bunch of notifications, added
|
||||
reference counts around emissions where the widget is used afterwards.
|
||||
added freeze/thaws around multiple properties being notified.
|
||||
(_gtk_widget_get_aux_info): cleanups.
|
||||
|
||||
* gtk/gtksettings.c (gtk_settings_install_property): provide
|
||||
default parsing functions for gdkcolor, enums and flags.
|
||||
|
||||
* gtk/gtkwindow.[hc]: partially reverted patch from havoc,
|
||||
applied by owen.
|
||||
kept a flag in GtkWindowGeometryInfo to handle user
|
||||
resetting default sizes.
|
||||
cleaned up ZVT comments.
|
||||
bunch of assorted bug fixes, notification fixes.
|
||||
(_gtk_window_reposition): make this a really internal function.
|
||||
|
||||
* gtk/testgtk.c: fixups.
|
||||
|
||||
2001-03-31 Hans Breuer <hans@breuer.org>
|
||||
|
||||
* config.h.win32.in : disable USE_MMX for msvc build cause
|
||||
|
@ -1,3 +1,23 @@
|
||||
Sun Apr 1 03:28:14 2001 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkwidget.c: fixed a bunch of notifications, added
|
||||
reference counts around emissions where the widget is used afterwards.
|
||||
added freeze/thaws around multiple properties being notified.
|
||||
(_gtk_widget_get_aux_info): cleanups.
|
||||
|
||||
* gtk/gtksettings.c (gtk_settings_install_property): provide
|
||||
default parsing functions for gdkcolor, enums and flags.
|
||||
|
||||
* gtk/gtkwindow.[hc]: partially reverted patch from havoc,
|
||||
applied by owen.
|
||||
kept a flag in GtkWindowGeometryInfo to handle user
|
||||
resetting default sizes.
|
||||
cleaned up ZVT comments.
|
||||
bunch of assorted bug fixes, notification fixes.
|
||||
(_gtk_window_reposition): make this a really internal function.
|
||||
|
||||
* gtk/testgtk.c: fixups.
|
||||
|
||||
2001-03-31 Hans Breuer <hans@breuer.org>
|
||||
|
||||
* config.h.win32.in : disable USE_MMX for msvc build cause
|
||||
|
@ -1,3 +1,23 @@
|
||||
Sun Apr 1 03:28:14 2001 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkwidget.c: fixed a bunch of notifications, added
|
||||
reference counts around emissions where the widget is used afterwards.
|
||||
added freeze/thaws around multiple properties being notified.
|
||||
(_gtk_widget_get_aux_info): cleanups.
|
||||
|
||||
* gtk/gtksettings.c (gtk_settings_install_property): provide
|
||||
default parsing functions for gdkcolor, enums and flags.
|
||||
|
||||
* gtk/gtkwindow.[hc]: partially reverted patch from havoc,
|
||||
applied by owen.
|
||||
kept a flag in GtkWindowGeometryInfo to handle user
|
||||
resetting default sizes.
|
||||
cleaned up ZVT comments.
|
||||
bunch of assorted bug fixes, notification fixes.
|
||||
(_gtk_window_reposition): make this a really internal function.
|
||||
|
||||
* gtk/testgtk.c: fixups.
|
||||
|
||||
2001-03-31 Hans Breuer <hans@breuer.org>
|
||||
|
||||
* config.h.win32.in : disable USE_MMX for msvc build cause
|
||||
|
@ -1,3 +1,23 @@
|
||||
Sun Apr 1 03:28:14 2001 Tim Janik <timj@gtk.org>
|
||||
|
||||
* gtk/gtkwidget.c: fixed a bunch of notifications, added
|
||||
reference counts around emissions where the widget is used afterwards.
|
||||
added freeze/thaws around multiple properties being notified.
|
||||
(_gtk_widget_get_aux_info): cleanups.
|
||||
|
||||
* gtk/gtksettings.c (gtk_settings_install_property): provide
|
||||
default parsing functions for gdkcolor, enums and flags.
|
||||
|
||||
* gtk/gtkwindow.[hc]: partially reverted patch from havoc,
|
||||
applied by owen.
|
||||
kept a flag in GtkWindowGeometryInfo to handle user
|
||||
resetting default sizes.
|
||||
cleaned up ZVT comments.
|
||||
bunch of assorted bug fixes, notification fixes.
|
||||
(_gtk_window_reposition): make this a really internal function.
|
||||
|
||||
* gtk/testgtk.c: fixups.
|
||||
|
||||
2001-03-31 Hans Breuer <hans@breuer.org>
|
||||
|
||||
* config.h.win32.in : disable USE_MMX for msvc build cause
|
||||
|
@ -6,7 +6,6 @@ GObject
|
||||
GdkPixmap
|
||||
GdkColormap
|
||||
GtkSettings
|
||||
GtkRcStyle
|
||||
GtkObject
|
||||
GtkWidget
|
||||
GtkMisc
|
||||
|
@ -407,12 +407,12 @@ GtkContainer
|
||||
@container: the object which received the signal.
|
||||
@widget:
|
||||
|
||||
<!-- ##### ARG GtkContainer:border-width ##### -->
|
||||
<!-- ##### ARG GtkContainer:resize-mode ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkContainer:resize-mode ##### -->
|
||||
<!-- ##### ARG GtkContainer:border-width ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
@ -123,3 +123,23 @@ GtkLayout
|
||||
@arg1:
|
||||
@arg2:
|
||||
|
||||
<!-- ##### ARG GtkLayout:hadjustment ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkLayout:vadjustment ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkLayout:width ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkLayout:height ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
|
@ -496,6 +496,7 @@ This can later be composited together with other
|
||||
#GtkRcStyle structures to form a #GtkStyle.
|
||||
</para>
|
||||
|
||||
@parent_instance:
|
||||
@name:
|
||||
@bg_pixmap_name:
|
||||
@font_desc:
|
||||
|
@ -289,7 +289,7 @@ you don't want a return value.
|
||||
the callbacks.
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_lookup ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_lookup ##### -->
|
||||
<para>
|
||||
Given the name of the signal and the type of object it connects
|
||||
to, get the signal's identifying integer. Emitting the signal
|
||||
@ -299,13 +299,12 @@ by number is somewhat faster than using the name each time.
|
||||
It also tries the ancestors of the given type.
|
||||
</para>
|
||||
|
||||
@Returns: the signal's identifying number, or 0 if no signal was found.
|
||||
<!-- # Unused Parameters # -->
|
||||
@name: the signal's name, e.g. clicked.
|
||||
@object_type: the type that the signal operates on, e.g. #GTK_TYPE_BUTTON.
|
||||
@Returns: the signal's identifying number, or 0 if no signal was found.
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_name ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_name ##### -->
|
||||
<para>
|
||||
Given the signal's identifier, find its name.
|
||||
</para>
|
||||
@ -313,9 +312,8 @@ Given the signal's identifier, find its name.
|
||||
Two different signals may have the same name, if they have differing types.
|
||||
</para>
|
||||
|
||||
@Returns: the signal name, or NULL if the signal number was invalid.
|
||||
<!-- # Unused Parameters # -->
|
||||
@signal_id: the signal's identifying number.
|
||||
@Returns: the signal name, or NULL if the signal number was invalid.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_signal_emit ##### -->
|
||||
@ -383,7 +381,7 @@ an array of GtkArgs instead of using C's varargs mechanism.
|
||||
followed by one which is a pointer to the return type.
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_emit_stop ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_emit_stop ##### -->
|
||||
<para>
|
||||
This function aborts a signal's current emission.
|
||||
</para>
|
||||
@ -397,11 +395,11 @@ It will print a warning if used on a signal which
|
||||
isn't being emitted.
|
||||
</para>
|
||||
|
||||
@i:
|
||||
@s:
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object whose signal handlers you wish to stop.
|
||||
@signal_id: the signal identifier, as returned by gtk_signal_lookup().
|
||||
<!-- # Unused Parameters # -->
|
||||
@i:
|
||||
@s:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_signal_emit_stop_by_name ##### -->
|
||||
@ -417,7 +415,7 @@ except it will lookup the signal id for you.
|
||||
@name: the name of the signal you wish to stop.
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_connect ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_connect ##### -->
|
||||
<para>
|
||||
Attach a function pointer and user data to a signal for
|
||||
a particular object.
|
||||
@ -456,38 +454,38 @@ static void attach_print_signal(GtkButton* button, gint to_print)
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
|
||||
@o:
|
||||
@s:
|
||||
@f:
|
||||
@d:
|
||||
@Returns: the connection id.
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object associated with the signal, e.g. if a button
|
||||
is getting pressed, this is that button.
|
||||
@name: name of the signal.
|
||||
@func: function pointer to attach to the signal.
|
||||
@func_data: value to pass as to your function (through the marshaller).
|
||||
@Returns: the connection id.
|
||||
<!-- # Unused Parameters # -->
|
||||
@o:
|
||||
@s:
|
||||
@f:
|
||||
@d:
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_connect_after ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_connect_after ##### -->
|
||||
<para>
|
||||
Attach a function pointer and user data to a signal
|
||||
so that this handler will be called after the other handlers.
|
||||
</para>
|
||||
|
||||
@o:
|
||||
@s:
|
||||
@f:
|
||||
@d:
|
||||
@Returns: the unique identifier for this attachment: the connection id.
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object associated with the signal.
|
||||
@name: name of the signal.
|
||||
@func: function pointer to attach to the signal.
|
||||
@func_data: value to pass as to your function (through the marshaller).
|
||||
@Returns: the unique identifier for this attachment: the connection id.
|
||||
<!-- # Unused Parameters # -->
|
||||
@o:
|
||||
@s:
|
||||
@f:
|
||||
@d:
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_connect_object ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_connect_object ##### -->
|
||||
<para>
|
||||
This function is for registering a callback that will
|
||||
call another object's callback. That is,
|
||||
@ -508,21 +506,21 @@ gtk_signal_connect_object(button, "clicked", gtk_widget_show, window);
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
|
||||
@o:
|
||||
@s:
|
||||
@f:
|
||||
@d:
|
||||
@Returns: the connection id.
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object which emits the signal.
|
||||
@name: the name of the signal.
|
||||
@func: the function to callback.
|
||||
@slot_object: the object to pass as the first parameter to func.
|
||||
(Though it pretends to take an object, you can
|
||||
really pass any gpointer as the #slot_object .)
|
||||
@Returns: the connection id.
|
||||
<!-- # Unused Parameters # -->
|
||||
@o:
|
||||
@s:
|
||||
@f:
|
||||
@d:
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_connect_object_after ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_connect_object_after ##### -->
|
||||
<para>
|
||||
Attach a signal hook to a signal, passing in an alternate
|
||||
object as the first parameter, and guaranteeing
|
||||
@ -530,16 +528,16 @@ that the default handler and all normal
|
||||
handlers are called first.
|
||||
</para>
|
||||
|
||||
@o:
|
||||
@s:
|
||||
@f:
|
||||
@d:
|
||||
@Returns: the connection id.
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object associated with the signal.
|
||||
@name: name of the signal.
|
||||
@func: function pointer to attach to the signal.
|
||||
@slot_object: the object to pass as the first parameter to #func.
|
||||
@Returns: the connection id.
|
||||
<!-- # Unused Parameters # -->
|
||||
@o:
|
||||
@s:
|
||||
@f:
|
||||
@d:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_signal_connect_full ##### -->
|
||||
@ -628,98 +626,95 @@ should signal the removal of this signal.
|
||||
@name: name of the signal.
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_disconnect ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_disconnect ##### -->
|
||||
<para>
|
||||
Destroy a user-defined handler connection.
|
||||
</para>
|
||||
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object which the handler pertains to.
|
||||
@handler_id: the connection id.
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_disconnect_by_func ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_disconnect_by_func ##### -->
|
||||
<para>
|
||||
Destroy all connections for a particular object, with
|
||||
the given function-pointer and user-data.
|
||||
</para>
|
||||
|
||||
@o:
|
||||
@f:
|
||||
@d:
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object which emits the signal.
|
||||
@func: the function pointer to search for.
|
||||
@data: the user data to search for.
|
||||
<!-- # Unused Parameters # -->
|
||||
@o:
|
||||
@f:
|
||||
@d:
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_disconnect_by_data ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_disconnect_by_data ##### -->
|
||||
<para>
|
||||
Destroy all connections for a particular object, with
|
||||
the given user-data.
|
||||
</para>
|
||||
|
||||
@o:
|
||||
@d:
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object which emits the signal.
|
||||
@data: the user data to search for.
|
||||
<!-- # Unused Parameters # -->
|
||||
@o:
|
||||
@d:
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_handler_block ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_handler_block ##### -->
|
||||
<para>
|
||||
Prevent an user-defined handler from being invoked. All other
|
||||
signal processing will go on as normal, but this particular
|
||||
handler will ignore it.
|
||||
</para>
|
||||
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object which emits the signal to block.
|
||||
@handler_id: the connection id.
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_handler_block_by_func ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_handler_block_by_func ##### -->
|
||||
<para>
|
||||
Prevent a user-defined handler from being invoked, by reference to
|
||||
the user-defined handler's function pointer and user data. (It may result in
|
||||
multiple hooks being blocked, if you've called connect multiple times.)
|
||||
</para>
|
||||
|
||||
@o:
|
||||
@f:
|
||||
@d:
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object which emits the signal to block.
|
||||
@func: the function pointer of the handler to block.
|
||||
@data: the user data of the handler to block.
|
||||
<!-- # Unused Parameters # -->
|
||||
@o:
|
||||
@f:
|
||||
@d:
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_handler_block_by_data ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_handler_block_by_data ##### -->
|
||||
<para>
|
||||
Prevent all user-defined handlers with a certain user data from being invoked.
|
||||
</para>
|
||||
|
||||
@o:
|
||||
@d:
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object which emits the signal we want to block.
|
||||
@data: the user data of the handlers to block.
|
||||
<!-- # Unused Parameters # -->
|
||||
@o:
|
||||
@d:
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_handler_unblock ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_handler_unblock ##### -->
|
||||
<para>
|
||||
Undo a block, by connection id. Note that undoing a block doesn't
|
||||
necessarily make the hook callable, because if you block a
|
||||
hook twice, you must unblock it twice.
|
||||
</para>
|
||||
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object which emits the signal we want to unblock.
|
||||
@handler_id: the emission handler identifier, as returned by
|
||||
gtk_signal_connect(), etc.
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_handler_unblock_by_func ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_handler_unblock_by_func ##### -->
|
||||
<para>
|
||||
Undo a block, by function pointer and data.
|
||||
Note that undoing a block doesn't
|
||||
@ -727,29 +722,29 @@ necessarily make the hook callable, because if you block a
|
||||
hook twice, you must unblock it twice.
|
||||
</para>
|
||||
|
||||
@o:
|
||||
@f:
|
||||
@d:
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object which emits the signal we want to unblock.
|
||||
@func: the function pointer to search for.
|
||||
@data: the user data to search for.
|
||||
<!-- # Unused Parameters # -->
|
||||
@o:
|
||||
@f:
|
||||
@d:
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_handler_unblock_by_data ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_handler_unblock_by_data ##### -->
|
||||
<para>
|
||||
Undo block(s), to all signals for a particular object
|
||||
with a particular user-data pointer
|
||||
</para>
|
||||
|
||||
@o:
|
||||
@d:
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object which emits the signal we want to unblock.
|
||||
@data: the user data to search for.
|
||||
<!-- # Unused Parameters # -->
|
||||
@o:
|
||||
@d:
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_handler_pending ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_handler_pending ##### -->
|
||||
<para>
|
||||
Returns a connection id corresponding to a given signal id and object.
|
||||
</para>
|
||||
@ -760,36 +755,36 @@ may opt to not emit the signal if no one is attached anyway,
|
||||
thus saving the cost of building the arguments.
|
||||
</para>
|
||||
|
||||
@i:
|
||||
@s:
|
||||
@b:
|
||||
@Returns: the connection id, if a connection was found. 0 otherwise.
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object to search for the desired user-defined handler.
|
||||
@signal_id: the number of the signal to search for.
|
||||
@may_be_blocked: whether it is acceptable to return a blocked
|
||||
handler.
|
||||
@Returns: the connection id, if a connection was found. 0 otherwise.
|
||||
<!-- # Unused Parameters # -->
|
||||
@i:
|
||||
@s:
|
||||
@b:
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_handler_pending_by_func ##### -->
|
||||
<!-- ##### FUNCTION gtk_signal_handler_pending_by_func ##### -->
|
||||
<para>
|
||||
Returns a connection id corresponding to a given signal id, object, function
|
||||
pointer and user data.
|
||||
</para>
|
||||
|
||||
@o:
|
||||
@s:
|
||||
@b:
|
||||
@f:
|
||||
@d:
|
||||
@Returns: the connection id, if a handler was found. 0 otherwise.
|
||||
<!-- # Unused Parameters # -->
|
||||
@object: the object to search for the desired handler.
|
||||
@signal_id: the number of the signal to search for.
|
||||
@may_be_blocked: whether it is acceptable to return a blocked
|
||||
handler.
|
||||
@func: the function pointer to search for.
|
||||
@data: the user data to search for.
|
||||
@Returns: the connection id, if a handler was found. 0 otherwise.
|
||||
<!-- # Unused Parameters # -->
|
||||
@o:
|
||||
@s:
|
||||
@b:
|
||||
@f:
|
||||
@d:
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_signal_default_marshaller ##### -->
|
||||
|
@ -172,6 +172,114 @@ Creates a new #GtkSpinButton.
|
||||
@Returns: a #GtkWidget.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_spin_button_set_adjustment ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spin_button:
|
||||
@adjustment:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_spin_button_get_adjustment ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spin_button:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_spin_button_set_digits ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spin_button:
|
||||
@digits:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_spin_button_get_value_as_float ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spin_button:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_spin_button_get_value_as_int ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spin_button:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_spin_button_set_value ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spin_button:
|
||||
@value:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_spin_button_set_update_policy ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spin_button:
|
||||
@policy:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_spin_button_set_numeric ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spin_button:
|
||||
@numeric:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_spin_button_spin ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spin_button:
|
||||
@direction:
|
||||
@increment:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_spin_button_set_wrap ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spin_button:
|
||||
@wrap:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_spin_button_set_snap_to_ticks ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spin_button:
|
||||
@snap_to_ticks:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_spin_button_update ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spin_button:
|
||||
|
||||
|
||||
<!-- ##### MACRO GTK_INPUT_ERROR ##### -->
|
||||
<para>
|
||||
|
||||
@ -196,6 +304,13 @@ Creates a new #GtkSpinButton.
|
||||
@spinbutton: the object which received the signal.
|
||||
@Returns:
|
||||
|
||||
<!-- ##### SIGNAL GtkSpinButton::value-changed ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@spinbutton: the object which received the signal.
|
||||
|
||||
<!-- ##### ARG GtkSpinButton:adjustment ##### -->
|
||||
<para>
|
||||
the #GtkAdjustment that defines a spin button's main properties.
|
||||
|
@ -560,33 +560,30 @@ Create a new, unique type.
|
||||
@type_info: must not be null, and @type_info->type_name must also not be null.
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_type_name ##### -->
|
||||
<!-- ##### FUNCTION gtk_type_name ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@Returns: a pointer to the name of a type, or NULL if it has none.
|
||||
<!-- # Unused Parameters # -->
|
||||
@type: a GtkType
|
||||
@Returns: a pointer to the name of a type, or NULL if it has none.
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_type_from_name ##### -->
|
||||
<!-- ##### FUNCTION gtk_type_from_name ##### -->
|
||||
<para>
|
||||
Get the internal representation of a type given its name.
|
||||
</para>
|
||||
|
||||
@Returns: a GtkType
|
||||
<!-- # Unused Parameters # -->
|
||||
@name: the name of a gtk type
|
||||
@Returns: a GtkType
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_type_parent ##### -->
|
||||
<!-- ##### FUNCTION gtk_type_parent ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@Returns: the GtkType of the parent
|
||||
<!-- # Unused Parameters # -->
|
||||
@type: a GtkType
|
||||
@Returns: the GtkType of the parent
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_type_class ##### -->
|
||||
@ -611,16 +608,15 @@ has all the proper initializers called.
|
||||
@Returns: gpointer to a GtkTypeObject
|
||||
|
||||
|
||||
<!-- ##### MACRO gtk_type_is_a ##### -->
|
||||
<!-- ##### FUNCTION gtk_type_is_a ##### -->
|
||||
<para>
|
||||
Look in the type hierarchy to see if @type has @is_a_type among its
|
||||
ancestors. Do so with a simple lookup, not a loop.
|
||||
</para>
|
||||
|
||||
@Returns:
|
||||
<!-- # Unused Parameters # -->
|
||||
@type: GtkType
|
||||
@is_a_type: GtkType
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_type_enum_get_values ##### -->
|
||||
|
@ -381,10 +381,23 @@ void
|
||||
gtk_settings_install_property (GtkSettings *settings,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GtkRcPropertyParser parser = NULL;
|
||||
|
||||
g_return_if_fail (GTK_IS_SETTINGS (settings));
|
||||
g_return_if_fail (G_IS_PARAM_SPEC (pspec));
|
||||
|
||||
/* convenient automatic parser selection
|
||||
*/
|
||||
if (G_PARAM_SPEC_VALUE_TYPE (pspec) == GTK_TYPE_GDK_COLOR)
|
||||
parser = gtk_rc_property_parse_color;
|
||||
else if (G_TYPE_FUNDAMENTAL (G_PARAM_SPEC_VALUE_TYPE (pspec)) == G_TYPE_ENUM &&
|
||||
G_TYPE_IS_DERIVED (G_PARAM_SPEC_VALUE_TYPE (pspec)))
|
||||
parser = gtk_rc_property_parse_enum;
|
||||
else if (G_TYPE_FUNDAMENTAL (G_PARAM_SPEC_VALUE_TYPE (pspec)) == G_TYPE_FLAGS &&
|
||||
G_TYPE_IS_DERIVED (G_PARAM_SPEC_VALUE_TYPE (pspec)))
|
||||
parser = gtk_rc_property_parse_flags;
|
||||
|
||||
settings_install_property_parser (GTK_SETTINGS_GET_CLASS (settings), pspec, NULL);
|
||||
settings_install_property_parser (GTK_SETTINGS_GET_CLASS (settings), pspec, parser);
|
||||
}
|
||||
|
||||
void
|
||||
|
104
gtk/gtkwidget.c
104
gtk/gtkwidget.c
@ -198,7 +198,6 @@ static void gtk_widget_propagate_hierarchy_changed (GtkWidget *widget,
|
||||
static gboolean gtk_widget_real_activate_mnemonic (GtkWidget *widget,
|
||||
gboolean group_cycling);
|
||||
|
||||
static GtkWidgetAuxInfo* gtk_widget_aux_info_new (void);
|
||||
static void gtk_widget_aux_info_destroy (GtkWidgetAuxInfo *aux_info);
|
||||
|
||||
static void gtk_widget_do_uposition (GtkWidget *widget);
|
||||
@ -1331,6 +1330,8 @@ gtk_widget_unparent (GtkWidget *widget)
|
||||
/* keep this function in sync with gtk_menu_detach()
|
||||
*/
|
||||
|
||||
g_object_freeze_notify (G_OBJECT (widget));
|
||||
|
||||
/* unset focused and default children properly, this code
|
||||
* should eventually move into some gtk_window_unparent_branch() or
|
||||
* similar function.
|
||||
@ -1443,8 +1444,8 @@ gtk_widget_unparent (GtkWidget *widget)
|
||||
gtk_widget_set_parent_window (widget, NULL);
|
||||
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[PARENT_SET], old_parent);
|
||||
gtk_widget_propagate_hierarchy_changed (widget, NULL);
|
||||
|
||||
g_object_notify (G_OBJECT (widget), "parent");
|
||||
g_object_thaw_notify (G_OBJECT (widget));
|
||||
gtk_widget_unref (widget);
|
||||
}
|
||||
|
||||
@ -1528,10 +1529,12 @@ gtk_widget_show (GtkWidget *widget)
|
||||
|
||||
if (!GTK_WIDGET_VISIBLE (widget))
|
||||
{
|
||||
g_object_ref (G_OBJECT (widget));
|
||||
if (!GTK_WIDGET_TOPLEVEL (widget))
|
||||
gtk_widget_queue_resize (widget);
|
||||
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[SHOW]);
|
||||
g_object_notify (G_OBJECT (widget), "visible");
|
||||
g_object_unref (G_OBJECT (widget));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2930,9 +2933,10 @@ gtk_widget_grab_focus (GtkWidget *widget)
|
||||
g_return_if_fail (widget != NULL);
|
||||
g_return_if_fail (GTK_IS_WIDGET (widget));
|
||||
|
||||
g_object_ref (G_OBJECT (widget));
|
||||
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[GRAB_FOCUS]);
|
||||
|
||||
g_object_notify (G_OBJECT (widget), "has_focus");
|
||||
g_object_unref (G_OBJECT (widget));
|
||||
}
|
||||
|
||||
static void
|
||||
@ -3075,10 +3079,10 @@ gtk_widget_grab_default (GtkWidget *widget)
|
||||
if (window && gtk_type_is_a (GTK_WIDGET_TYPE (window), window_type))
|
||||
{
|
||||
gtk_window_set_default (GTK_WINDOW (window), widget);
|
||||
g_object_notify (G_OBJECT (window), "has_default");
|
||||
g_object_notify (G_OBJECT (widget), "has_default");
|
||||
}
|
||||
else
|
||||
g_warning("gtk_widget_grab_default() called on a widget not within a GtkWindow");
|
||||
g_warning (G_STRLOC ": widget not within a GtkWindow");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3189,9 +3193,9 @@ gtk_widget_set_app_paintable (GtkWidget *widget,
|
||||
|
||||
if (GTK_WIDGET_DRAWABLE (widget))
|
||||
gtk_widget_queue_clear (widget);
|
||||
}
|
||||
|
||||
g_object_notify (G_OBJECT (widget), "app_paintable");
|
||||
g_object_notify (G_OBJECT (widget), "app_paintable");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3367,8 +3371,6 @@ gtk_widget_set_style (GtkWidget *widget,
|
||||
}
|
||||
|
||||
gtk_widget_set_style_internal (widget, style, initial_emission);
|
||||
|
||||
g_object_notify (G_OBJECT (widget), "style");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3734,6 +3736,9 @@ gtk_widget_set_style_internal (GtkWidget *widget,
|
||||
g_return_if_fail (GTK_IS_WIDGET (widget));
|
||||
g_return_if_fail (style != NULL);
|
||||
|
||||
g_object_ref (G_OBJECT (widget));
|
||||
g_object_freeze_notify (G_OBJECT (widget));
|
||||
|
||||
if (widget->style != style || initial_emission)
|
||||
{
|
||||
PangoContext *context = gtk_widget_peek_pango_context (widget);
|
||||
@ -3778,11 +3783,12 @@ gtk_widget_set_style_internal (GtkWidget *widget,
|
||||
}
|
||||
}
|
||||
else if (initial_emission)
|
||||
{
|
||||
gtk_signal_emit (GTK_OBJECT (widget),
|
||||
widget_signals[STYLE_SET],
|
||||
NULL);
|
||||
}
|
||||
gtk_signal_emit (GTK_OBJECT (widget),
|
||||
widget_signals[STYLE_SET],
|
||||
NULL);
|
||||
g_object_notify (G_OBJECT (widget), "style");
|
||||
g_object_thaw_notify (G_OBJECT (widget));
|
||||
g_object_unref (G_OBJECT (widget));
|
||||
}
|
||||
|
||||
static void
|
||||
@ -4117,15 +4123,17 @@ gtk_widget_do_uposition (GtkWidget *widget)
|
||||
GtkWidgetAuxInfo *aux_info =_gtk_widget_get_aux_info (widget, FALSE);
|
||||
|
||||
if (GTK_IS_WINDOW (widget) && aux_info->x_set && aux_info->y_set)
|
||||
gtk_window_reposition (GTK_WINDOW (widget), aux_info->x, aux_info->y);
|
||||
_gtk_window_reposition (GTK_WINDOW (widget), aux_info->x, aux_info->y);
|
||||
|
||||
if (GTK_WIDGET_VISIBLE (widget) && widget->parent)
|
||||
gtk_widget_size_allocate (widget, &widget->allocation);
|
||||
|
||||
g_object_freeze_notify (G_OBJECT (widget));
|
||||
if (aux_info->x_set)
|
||||
g_object_notify (G_OBJECT (widget), "x");
|
||||
if (aux_info->y_set)
|
||||
g_object_notify (G_OBJECT (widget), "y");
|
||||
g_object_thaw_notify (G_OBJECT (widget));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -4162,8 +4170,6 @@ gtk_widget_set_uposition (GtkWidget *widget,
|
||||
g_return_if_fail (GTK_IS_WIDGET (widget));
|
||||
|
||||
aux_info =_gtk_widget_get_aux_info (widget, TRUE);
|
||||
|
||||
/* keep this in sync with gtk_window_set_location() */
|
||||
|
||||
if (x > -2)
|
||||
{
|
||||
@ -4225,20 +4231,25 @@ gtk_widget_set_usize (GtkWidget *widget,
|
||||
g_return_if_fail (widget != NULL);
|
||||
g_return_if_fail (GTK_IS_WIDGET (widget));
|
||||
|
||||
g_object_freeze_notify (G_OBJECT (widget));
|
||||
|
||||
aux_info =_gtk_widget_get_aux_info (widget, TRUE);
|
||||
|
||||
if (width > -2)
|
||||
aux_info->width = width;
|
||||
{
|
||||
g_object_notify (G_OBJECT (widget), "width");
|
||||
aux_info->width = width;
|
||||
}
|
||||
if (height > -2)
|
||||
aux_info->height = height;
|
||||
{
|
||||
g_object_notify (G_OBJECT (widget), "height");
|
||||
aux_info->height = height;
|
||||
}
|
||||
|
||||
if (GTK_WIDGET_VISIBLE (widget))
|
||||
gtk_widget_queue_resize (widget);
|
||||
|
||||
if (width > -2)
|
||||
g_object_notify (G_OBJECT (widget), "width");
|
||||
if (height > -2)
|
||||
g_object_notify (G_OBJECT (widget), "height");
|
||||
g_object_thaw_notify (G_OBJECT (widget));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -5204,7 +5215,7 @@ gtk_widget_propagate_state (GtkWidget *widget,
|
||||
* Return value: the #GtkAuxInfo structure for the widget, or
|
||||
* %NULL if @create is %FALSE and one doesn't already exist.
|
||||
**/
|
||||
GtkWidgetAuxInfo *
|
||||
GtkWidgetAuxInfo*
|
||||
_gtk_widget_get_aux_info (GtkWidget *widget,
|
||||
gboolean create)
|
||||
{
|
||||
@ -5213,45 +5224,24 @@ _gtk_widget_get_aux_info (GtkWidget *widget,
|
||||
aux_info = gtk_object_get_data_by_id (GTK_OBJECT (widget), quark_aux_info);
|
||||
if (!aux_info && create)
|
||||
{
|
||||
aux_info = gtk_widget_aux_info_new ();
|
||||
if (!aux_info_mem_chunk)
|
||||
aux_info_mem_chunk = g_mem_chunk_new ("widget aux info mem chunk",
|
||||
sizeof (GtkWidgetAuxInfo),
|
||||
1024, G_ALLOC_AND_FREE);
|
||||
aux_info = g_chunk_new (GtkWidgetAuxInfo, aux_info_mem_chunk);
|
||||
|
||||
aux_info->width = -1;
|
||||
aux_info->height = -1;
|
||||
aux_info->x = 0;
|
||||
aux_info->y = 0;
|
||||
aux_info->x_set = FALSE;
|
||||
aux_info->y_set = FALSE;
|
||||
gtk_object_set_data_by_id (GTK_OBJECT (widget), quark_aux_info, aux_info);
|
||||
|
||||
aux_info->width = aux_info->height = -1;
|
||||
aux_info->x = aux_info->y = 0;
|
||||
aux_info->x_set = aux_info->y_set = FALSE;
|
||||
}
|
||||
|
||||
return aux_info;
|
||||
}
|
||||
|
||||
/*****************************************
|
||||
* gtk_widget_aux_info_new:
|
||||
*
|
||||
* arguments:
|
||||
*
|
||||
* results:
|
||||
*****************************************/
|
||||
|
||||
static GtkWidgetAuxInfo*
|
||||
gtk_widget_aux_info_new (void)
|
||||
{
|
||||
GtkWidgetAuxInfo *aux_info;
|
||||
|
||||
if (!aux_info_mem_chunk)
|
||||
aux_info_mem_chunk = g_mem_chunk_new ("widget aux info mem chunk",
|
||||
sizeof (GtkWidgetAuxInfo),
|
||||
1024, G_ALLOC_AND_FREE);
|
||||
|
||||
aux_info = g_chunk_new (GtkWidgetAuxInfo, aux_info_mem_chunk);
|
||||
|
||||
aux_info->x = -1;
|
||||
aux_info->y = -1;
|
||||
aux_info->width = 0;
|
||||
aux_info->height = 0;
|
||||
|
||||
return aux_info;
|
||||
}
|
||||
|
||||
/*****************************************
|
||||
* gtk_widget_aux_info_destroy:
|
||||
*
|
||||
|
485
gtk/gtkwindow.c
485
gtk/gtkwindow.c
@ -49,11 +49,6 @@
|
||||
#include "gtkiconfactory.h"
|
||||
#include "gtkintl.h"
|
||||
|
||||
/* TODO: remove this define and assorted code in 1.3 and fix up the
|
||||
* real culprits.
|
||||
*/
|
||||
#define FIXME_ZVT_ME_HARDER
|
||||
|
||||
enum {
|
||||
SET_FOCUS,
|
||||
FRAME_EVENT,
|
||||
@ -76,7 +71,7 @@ enum {
|
||||
PROP_DEFAULT_WIDTH,
|
||||
PROP_DEFAULT_HEIGHT,
|
||||
PROP_DESTROY_WITH_PARENT,
|
||||
|
||||
|
||||
LAST_ARG
|
||||
};
|
||||
|
||||
@ -87,17 +82,19 @@ typedef struct {
|
||||
gint height;
|
||||
} GtkWindowLastGeometryInfo;
|
||||
|
||||
typedef struct {
|
||||
struct _GtkWindowGeometryInfo
|
||||
{
|
||||
/* Properties that the app has set on the window
|
||||
*/
|
||||
GdkGeometry geometry; /* Geometry hints */
|
||||
GdkWindowHints mask;
|
||||
GtkWidget *widget; /* subwidget to which hints apply */
|
||||
gint width; /* gtk_window_set_default_size () */
|
||||
gint width; /* Default size */
|
||||
gint height;
|
||||
guint may_shrink : 1; /* one-shot auto_shrink behaviour after set_default_size */
|
||||
|
||||
GtkWindowLastGeometryInfo last;
|
||||
} GtkWindowGeometryInfo;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
GtkWindow *window;
|
||||
@ -166,11 +163,11 @@ static void gtk_window_constrain_size (GtkWindow *window,
|
||||
static void gtk_window_compute_hints (GtkWindow *window,
|
||||
GdkGeometry *new_geometry,
|
||||
guint *new_flags);
|
||||
static gboolean gtk_window_compute_reposition (GtkWindow *window,
|
||||
gint new_width,
|
||||
gint new_height,
|
||||
gint *x,
|
||||
gint *y);
|
||||
static gint gtk_window_compute_reposition (GtkWindow *window,
|
||||
gint new_width,
|
||||
gint new_height,
|
||||
gint *x,
|
||||
gint *y);
|
||||
|
||||
static void gtk_window_read_rcfiles (GtkWidget *widget,
|
||||
GdkEventClient *event);
|
||||
@ -186,7 +183,6 @@ static void gtk_window_transient_parent_unrealized (GtkWidget *parent,
|
||||
|
||||
static GtkWindowGeometryInfo* gtk_window_get_geometry_info (GtkWindow *window,
|
||||
gboolean create);
|
||||
static void gtk_window_geometry_destroy (GtkWindowGeometryInfo *info);
|
||||
|
||||
|
||||
static GSList *toplevel_list = NULL;
|
||||
@ -432,6 +428,8 @@ gtk_window_init (GtkWindow *window)
|
||||
window->title = NULL;
|
||||
window->wmclass_name = g_strdup (g_get_prgname ());
|
||||
window->wmclass_class = g_strdup (gdk_progclass);
|
||||
window->wm_role = NULL;
|
||||
window->geometry_info = NULL;
|
||||
window->type = GTK_WINDOW_TOPLEVEL;
|
||||
window->focus_widget = NULL;
|
||||
window->default_widget = NULL;
|
||||
@ -1091,9 +1089,9 @@ gtk_window_remove_embedded_xid (GtkWindow *window, guint xid)
|
||||
}
|
||||
|
||||
void
|
||||
gtk_window_reposition (GtkWindow *window,
|
||||
gint x,
|
||||
gint y)
|
||||
_gtk_window_reposition (GtkWindow *window,
|
||||
gint x,
|
||||
gint y)
|
||||
{
|
||||
GtkWindowGeometryInfo *info;
|
||||
|
||||
@ -1318,24 +1316,13 @@ gtk_window_set_destroy_with_parent (GtkWindow *window,
|
||||
g_object_notify (G_OBJECT (window), "destroy_with_parent");
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_window_geometry_destroy (GtkWindowGeometryInfo *info)
|
||||
{
|
||||
if (info->widget)
|
||||
gtk_signal_disconnect_by_func (GTK_OBJECT (info->widget),
|
||||
GTK_SIGNAL_FUNC (gtk_widget_destroyed),
|
||||
&info->widget);
|
||||
g_free (info);
|
||||
}
|
||||
|
||||
static GtkWindowGeometryInfo*
|
||||
gtk_window_get_geometry_info (GtkWindow *window,
|
||||
gboolean create)
|
||||
{
|
||||
GtkWindowGeometryInfo *info;
|
||||
|
||||
info = gtk_object_get_data (GTK_OBJECT (window), "gtk-window-geometry");
|
||||
|
||||
info = window->geometry_info;
|
||||
if (!info && create)
|
||||
{
|
||||
info = g_new0 (GtkWindowGeometryInfo, 1);
|
||||
@ -1346,11 +1333,8 @@ gtk_window_get_geometry_info (GtkWindow *window,
|
||||
info->last.height = -1;
|
||||
info->widget = NULL;
|
||||
info->mask = 0;
|
||||
|
||||
gtk_object_set_data_full (GTK_OBJECT (window),
|
||||
"gtk-window-geometry",
|
||||
info,
|
||||
(GtkDestroyNotify) gtk_window_geometry_destroy);
|
||||
info->may_shrink = FALSE;
|
||||
window->geometry_info = info;
|
||||
}
|
||||
|
||||
return info;
|
||||
@ -1470,33 +1454,22 @@ gtk_window_set_default_size (GtkWindow *window,
|
||||
|
||||
info = gtk_window_get_geometry_info (window, TRUE);
|
||||
|
||||
g_object_freeze_notify (G_OBJECT (window));
|
||||
if (width >= 0)
|
||||
info->width = width;
|
||||
if (height >= 0)
|
||||
info->height = height;
|
||||
|
||||
if (width >= 0)
|
||||
g_object_notify (G_OBJECT (window), "width");
|
||||
if (height >= 0)
|
||||
g_object_notify (G_OBJECT (window), "height");
|
||||
|
||||
if (GTK_WIDGET_REALIZED (window) && window->allow_grow)
|
||||
{
|
||||
/* Resize as if the user had resized */
|
||||
GdkGeometry new_geometry;
|
||||
GdkWindowHints new_flags;
|
||||
|
||||
gtk_window_compute_hints (window, &new_geometry, &new_flags);
|
||||
gtk_window_constrain_size (window,
|
||||
&new_geometry, new_flags,
|
||||
width, height,
|
||||
&width, &height);
|
||||
|
||||
gdk_window_resize (GTK_WIDGET (window)->window,
|
||||
width, height);
|
||||
info->width = width;
|
||||
g_object_notify (G_OBJECT (window), "default_width");
|
||||
info->may_shrink = TRUE;
|
||||
}
|
||||
else
|
||||
gtk_widget_queue_resize (GTK_WIDGET (window));
|
||||
if (height >= 0)
|
||||
{
|
||||
info->height = height;
|
||||
g_object_notify (G_OBJECT (window), "default_height");
|
||||
info->may_shrink = TRUE;
|
||||
}
|
||||
g_object_thaw_notify (G_OBJECT (window));
|
||||
|
||||
gtk_widget_queue_resize (GTK_WIDGET (window));
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1560,10 +1533,19 @@ gtk_window_finalize (GObject *object)
|
||||
g_free (window->title);
|
||||
g_free (window->wmclass_name);
|
||||
g_free (window->wmclass_class);
|
||||
g_free (window->wm_role);
|
||||
|
||||
g_hash_table_foreach_remove (mnemonic_hash_table,
|
||||
gtk_window_mnemonic_hash_remove,
|
||||
window);
|
||||
if (window->geometry_info)
|
||||
{
|
||||
if (window->geometry_info->widget)
|
||||
gtk_signal_disconnect_by_func (GTK_OBJECT (window->geometry_info->widget),
|
||||
GTK_SIGNAL_FUNC (gtk_widget_destroyed),
|
||||
&window->geometry_info->widget);
|
||||
g_free (window->geometry_info);
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
}
|
||||
@ -1574,7 +1556,6 @@ gtk_window_show (GtkWidget *widget)
|
||||
GtkWindow *window = GTK_WINDOW (widget);
|
||||
GtkContainer *container = GTK_CONTAINER (window);
|
||||
gboolean need_resize;
|
||||
gboolean was_realized;
|
||||
|
||||
GTK_WIDGET_SET_FLAGS (widget, GTK_VISIBLE);
|
||||
|
||||
@ -1587,6 +1568,7 @@ gtk_window_show (GtkWidget *widget)
|
||||
GtkAllocation allocation = { 0, 0 };
|
||||
GdkGeometry new_geometry;
|
||||
guint width, height, new_flags;
|
||||
gboolean was_realized;
|
||||
|
||||
/* determine default size to initially show the window with */
|
||||
gtk_widget_size_request (widget, NULL);
|
||||
@ -1616,7 +1598,8 @@ gtk_window_show (GtkWidget *widget)
|
||||
}
|
||||
|
||||
/* Must be done after the windows are realized,
|
||||
so that the decorations can be read */
|
||||
* so that the decorations can be read
|
||||
*/
|
||||
gtk_decorated_window_calculate_frame_size (window);
|
||||
|
||||
if (!was_realized)
|
||||
@ -2474,14 +2457,14 @@ gtk_window_move_resize (GtkWindow *window)
|
||||
GtkWindowLastGeometryInfo saved_last_info;
|
||||
GdkGeometry new_geometry;
|
||||
guint new_flags;
|
||||
gboolean need_reposition;
|
||||
gint x, y;
|
||||
gint width, height;
|
||||
gint new_width, new_height;
|
||||
gboolean need_reposition;
|
||||
gboolean default_size_changed = FALSE;
|
||||
gboolean hints_changed = FALSE;
|
||||
gboolean may_shrink = window->auto_shrink;
|
||||
|
||||
g_return_if_fail (GTK_IS_WINDOW (window));
|
||||
g_return_if_fail (GTK_WIDGET_REALIZED (window));
|
||||
|
||||
widget = GTK_WIDGET (window);
|
||||
@ -2497,6 +2480,7 @@ gtk_window_move_resize (GtkWindow *window)
|
||||
info->last.height != new_height)
|
||||
{
|
||||
default_size_changed = TRUE;
|
||||
may_shrink |= info->may_shrink;
|
||||
info->last.width = new_width;
|
||||
info->last.height = new_height;
|
||||
|
||||
@ -2505,6 +2489,7 @@ gtk_window_move_resize (GtkWindow *window)
|
||||
if (window->position == GTK_WIN_POS_CENTER_ALWAYS)
|
||||
window->use_uposition = TRUE;
|
||||
}
|
||||
info->may_shrink = FALSE;
|
||||
|
||||
/* Compute new set of hints for the window
|
||||
*/
|
||||
@ -2520,10 +2505,10 @@ gtk_window_move_resize (GtkWindow *window)
|
||||
/* From the default size and the allocation, figure out the size
|
||||
* the window should be.
|
||||
*/
|
||||
if (!window->auto_shrink &&
|
||||
(!default_size_changed ||
|
||||
(new_width <= widget->allocation.width &&
|
||||
new_height <= widget->allocation.height)))
|
||||
if (!default_size_changed ||
|
||||
(!may_shrink &&
|
||||
new_width <= widget->allocation.width &&
|
||||
new_height <= widget->allocation.height))
|
||||
{
|
||||
new_width = widget->allocation.width;
|
||||
new_height = widget->allocation.height;
|
||||
@ -2572,7 +2557,6 @@ gtk_window_move_resize (GtkWindow *window)
|
||||
gtk_widget_size_allocate (widget, &allocation);
|
||||
gtk_widget_queue_draw (widget);
|
||||
|
||||
#ifdef FIXME_ZVT_ME_HARDER
|
||||
if ((default_size_changed || hints_changed) && (width != new_width || height != new_height))
|
||||
{
|
||||
/* We could be here for two reasons
|
||||
@ -2580,8 +2564,7 @@ gtk_window_move_resize (GtkWindow *window)
|
||||
* another resize.
|
||||
* 2) Our computation of default_size_changed was completely
|
||||
* screwed up, probably because one of our children
|
||||
* is broken (i.e. changes requisition during
|
||||
* size allocation). It's probably a zvt widget.
|
||||
* is changed requisition during size allocation).
|
||||
*
|
||||
* For 1), we could just go ahead and ask for the
|
||||
* new size right now, but doing that for 2)
|
||||
@ -2612,14 +2595,12 @@ gtk_window_move_resize (GtkWindow *window)
|
||||
/* we have to preserve the values and flags that are used
|
||||
* for computation of default_size_changed and hints_changed
|
||||
*/
|
||||
|
||||
info->last = saved_last_info;
|
||||
|
||||
gtk_widget_queue_resize (widget);
|
||||
|
||||
return;
|
||||
}
|
||||
#endif /* FIXME_ZVT_ME_HARDER */
|
||||
}
|
||||
|
||||
/* Now set hints if necessary
|
||||
@ -2743,9 +2724,9 @@ gtk_window_compare_hints (GdkGeometry *geometry_a,
|
||||
return FALSE;
|
||||
|
||||
if ((flags_a & GDK_HINT_WIN_GRAVITY) &&
|
||||
(geometry_a->win_gravity != geometry_b->win_gravity))
|
||||
geometry_a->win_gravity != geometry_b->win_gravity)
|
||||
return FALSE;
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -2790,8 +2771,11 @@ _gtk_window_constrain_size (GtkWindow *window,
|
||||
gint *new_width,
|
||||
gint *new_height)
|
||||
{
|
||||
GtkWindowGeometryInfo *info = (GtkWindowGeometryInfo *)gtk_object_get_data (GTK_OBJECT (window), "gtk-window-geometry");
|
||||
|
||||
GtkWindowGeometryInfo *info;
|
||||
|
||||
g_return_if_fail (GTK_IS_WINDOW (window));
|
||||
|
||||
info = window->geometry_info;
|
||||
if (info)
|
||||
{
|
||||
GdkWindowHints flags = info->last.flags;
|
||||
@ -2928,21 +2912,20 @@ gtk_window_compute_hints (GtkWindow *window,
|
||||
|
||||
/* Compute a new position for the window based on a new
|
||||
* size. *x and *y will be set to the new coordinates. Returns
|
||||
* TRUE if the window needs to be moved;
|
||||
* TRUE if the window needs to be moved (and thus x and y got
|
||||
* assigned)
|
||||
*/
|
||||
static gboolean
|
||||
gtk_window_compute_reposition (GtkWindow *window,
|
||||
gint new_width,
|
||||
gint new_height,
|
||||
gint *x,
|
||||
gint *y)
|
||||
static gint
|
||||
gtk_window_compute_reposition (GtkWindow *window,
|
||||
gint new_width,
|
||||
gint new_height,
|
||||
gint *x,
|
||||
gint *y)
|
||||
{
|
||||
GtkWidget *widget;
|
||||
GtkWidget *widget = GTK_WIDGET (window);
|
||||
GtkWindowPosition pos;
|
||||
GtkWidget *parent_widget;
|
||||
gboolean result = FALSE;
|
||||
|
||||
widget = GTK_WIDGET (window);
|
||||
gboolean needs_move = FALSE;
|
||||
|
||||
parent_widget = (GtkWidget*) window->transient_parent;
|
||||
|
||||
@ -2963,8 +2946,7 @@ gtk_window_compute_reposition (GtkWindow *window,
|
||||
|
||||
*x = (screen_width - new_width) / 2;
|
||||
*y = (screen_height - new_height) / 2;
|
||||
|
||||
result = TRUE;
|
||||
needs_move = TRUE;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -2977,9 +2959,8 @@ gtk_window_compute_reposition (GtkWindow *window,
|
||||
|
||||
*x = ox + (parent_widget->allocation.width - new_width) / 2;
|
||||
*y = oy + (parent_widget->allocation.height - new_height) / 2;
|
||||
|
||||
result = TRUE;
|
||||
}
|
||||
needs_move = TRUE;
|
||||
}
|
||||
break;
|
||||
|
||||
case GTK_WIN_POS_MOUSE:
|
||||
@ -2993,37 +2974,40 @@ gtk_window_compute_reposition (GtkWindow *window,
|
||||
*y -= new_height / 2;
|
||||
*x = CLAMP (*x, 0, screen_width - new_width);
|
||||
*y = CLAMP (*y, 0, screen_height - new_height);
|
||||
|
||||
result = TRUE;
|
||||
needs_move = TRUE;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (window->use_uposition)
|
||||
{
|
||||
GtkWidgetAuxInfo *aux_info = _gtk_widget_get_aux_info (widget, FALSE);
|
||||
|
||||
if (aux_info && aux_info->x_set && aux_info->y_set)
|
||||
{
|
||||
*x = aux_info->x;
|
||||
*y = aux_info->y;
|
||||
needs_move = TRUE;
|
||||
}
|
||||
|
||||
result = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (result)
|
||||
if (needs_move)
|
||||
{
|
||||
GtkWidgetAuxInfo *aux_info = _gtk_widget_get_aux_info (widget, TRUE);
|
||||
|
||||
aux_info->x_set = aux_info->y_set = TRUE;
|
||||
|
||||
/* we handle necessary window positioning by hand here,
|
||||
* so we can coalesce the window movement with possible
|
||||
* resizes to get only one configure event.
|
||||
*/
|
||||
aux_info->x_set = TRUE;
|
||||
aux_info->y_set = TRUE;
|
||||
aux_info->x = *x;
|
||||
aux_info->y = *y;
|
||||
|
||||
window->use_uposition = FALSE;
|
||||
}
|
||||
|
||||
return result;
|
||||
return needs_move;
|
||||
}
|
||||
|
||||
/***********************
|
||||
@ -3398,30 +3382,26 @@ gtk_window_unmaximize (GtkWindow *window)
|
||||
/**
|
||||
* gtk_window_set_resizeable:
|
||||
* @window: a #GtkWindow
|
||||
* @setting: %TRUE if the user can resize this window
|
||||
* @resizeable: %TRUE if the user can resize this window
|
||||
*
|
||||
* Sets whether the user can resize a window. Windows are user resizeable
|
||||
* by default.
|
||||
*
|
||||
**/
|
||||
void
|
||||
gtk_window_set_resizeable (GtkWindow *window,
|
||||
gboolean setting)
|
||||
gboolean resizeable)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_WINDOW (window));
|
||||
|
||||
if (setting)
|
||||
gtk_window_set_policy (window, FALSE, TRUE, FALSE);
|
||||
else
|
||||
gtk_window_set_policy (window, FALSE, FALSE, TRUE);
|
||||
gtk_window_set_policy (window, FALSE, resizeable, FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_window_get_resizeable:
|
||||
* @window: a #GtkWindow
|
||||
*
|
||||
*
|
||||
* Gets the value set by gtk_window_set_resizeable().
|
||||
*
|
||||
*
|
||||
* Return value: %TRUE if the user can resize the window
|
||||
**/
|
||||
gboolean
|
||||
@ -3436,276 +3416,6 @@ gtk_window_get_resizeable (GtkWindow *window)
|
||||
return window->allow_grow;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* gtk_window_set_size:
|
||||
* @window: a #GtkWindow
|
||||
* @width: width, or -1 to use the default width
|
||||
* @height: height, or -1 to use the default height
|
||||
*
|
||||
* Sets the size of @window, but only works for resizeable windows
|
||||
* (see gtk_window_set_resizeable()). Setting the size emulates a user
|
||||
* resize operation. Therefore, setting the size less than the minimum
|
||||
* size for the window will simply make the window its minimum size,
|
||||
* and the user will be able to change the size that's set.
|
||||
*
|
||||
* This call also sets the default size of the window, so replaces
|
||||
* gtk_window_set_default_size().
|
||||
*
|
||||
* To set a minimum size, or to set the size of a non-resizeable window,
|
||||
* use gtk_widget_set_usize() on the window. Though normally it makes
|
||||
* more sense to instead call gtk_widget_set_usize() on a child widget inside
|
||||
* the window, rather than the window itself.
|
||||
*
|
||||
* Under the X Window System, window managers are allowed to ignore GTK+'s
|
||||
* request to change a window's size. So your program should not rely on
|
||||
* getting a specific size. (And, as noted in gtk_window_get_size(),
|
||||
* a program that crucially relies on a specific size will generally have
|
||||
* race conditions and be buggy anyway - rather than assuming a
|
||||
* call to gtk_window_set_size() has taken effect, you should react
|
||||
* to configure_event signals on your #GtkWindow.)
|
||||
*
|
||||
* If you set a geometry widget for the window with
|
||||
* gtk_window_set_geometry_hints(), the size applies to the geometry
|
||||
* widget, not the window itself.
|
||||
*
|
||||
* If you've called the deprecated gtk_window_set_policy() function,
|
||||
* gtk_window_set_size() may not behave as expected, due to interaction
|
||||
* with window policies.
|
||||
**/
|
||||
void
|
||||
gtk_window_set_size (GtkWindow *window,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_WINDOW (window));
|
||||
g_return_if_fail (width != 0);
|
||||
g_return_if_fail (height != 0);
|
||||
|
||||
/* set_default_size() uses "0" to mean "unset", but we allow "-1"
|
||||
* for that in this newer function
|
||||
*/
|
||||
if (width < 0)
|
||||
width = 0;
|
||||
if (height < 0)
|
||||
height = 0;
|
||||
|
||||
gtk_window_set_default_size (window, width, height);
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_window_get_size:
|
||||
* @window: a #GtkWindow
|
||||
* @width: return location for current width, or %NULL
|
||||
* @height: return location for current height, or %NULL
|
||||
*
|
||||
* Obtains the current size of @window. If the window is not onscreen
|
||||
* (i.e. has not been received its first configure_event after being
|
||||
* shown with gtk_widget_show()), the size will be the size GTK+ will
|
||||
* request for this window when it's shown. The window manager may
|
||||
* not choose to give the window exactly this requested size.
|
||||
*
|
||||
* In general, code which depends on window size should connect to the
|
||||
* configure_event on the window so that it can respond to changes in
|
||||
* size caused by the user or by the window manager, in addition to
|
||||
* changes in size created by your program.
|
||||
*
|
||||
* If you set a geometry widget for the window with
|
||||
* gtk_window_set_geometry_hints(), the size retrieved is the size of
|
||||
* the geometry widget, not the window itself.
|
||||
*
|
||||
**/
|
||||
void
|
||||
gtk_window_get_size (GtkWindow *window,
|
||||
gint *width,
|
||||
gint *height)
|
||||
{
|
||||
GtkWindowGeometryInfo *info;
|
||||
GtkWidget *widget = GTK_WIDGET (window);
|
||||
|
||||
g_return_if_fail (GTK_IS_WINDOW (window));
|
||||
|
||||
if (GTK_WIDGET_REALIZED (window))
|
||||
{
|
||||
gdk_window_get_size (GTK_WIDGET (window)->window,
|
||||
width, height);
|
||||
}
|
||||
else
|
||||
{
|
||||
GdkGeometry new_geometry;
|
||||
GdkWindowHints new_flags;
|
||||
gint w, h;
|
||||
|
||||
gtk_widget_size_request (widget, NULL);
|
||||
gtk_window_compute_default_size (window, &w, &h);
|
||||
|
||||
gtk_window_compute_hints (window, &new_geometry, &new_flags);
|
||||
gtk_window_constrain_size (window,
|
||||
&new_geometry, new_flags,
|
||||
w, h,
|
||||
&w, &h);
|
||||
|
||||
if (width)
|
||||
*width = w;
|
||||
if (height)
|
||||
*height = h;
|
||||
}
|
||||
|
||||
info = gtk_window_get_geometry_info (window, TRUE);
|
||||
if (info->widget)
|
||||
{
|
||||
gint extra_width = widget->requisition.width - info->widget->requisition.width;
|
||||
gint extra_height = widget->requisition.height - info->widget->requisition.height;
|
||||
|
||||
if (width)
|
||||
*width -= extra_width;
|
||||
if (height)
|
||||
*height -= extra_height;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_window_set_location:
|
||||
* @window: a #GtkWindow
|
||||
* @root_x: X position of gravity-determined reference point in root window coordinates
|
||||
* @root_y: Y position of gravity-determined reference point in root window coordinates
|
||||
*
|
||||
* Requests a new position for a #GtkWindow. The position is given in
|
||||
* root window coordinates, and is the position of the window's
|
||||
* "reference point" as determined by the window gravity (see
|
||||
* gtk_window_set_gravity()). By default, the reference point is the
|
||||
* northwest (top left) corner of the window's titlebar. So if you
|
||||
* set the window position to (0,0), the window's titlebar will end up
|
||||
* in the top left corner of the root window. Note that the root
|
||||
* window does not always correspond to the user's desktop area, so
|
||||
* you may want to call gdk_workspace_get_extents() or
|
||||
* gdk_desktop_get_extents() to decide where to place a window. The
|
||||
* extents of the root window can be obtained using gdk_screen_width()
|
||||
* and gdk_screen_height().
|
||||
*
|
||||
**/
|
||||
void
|
||||
gtk_window_set_location (GtkWindow *window,
|
||||
gint root_x,
|
||||
gint root_y)
|
||||
{
|
||||
GtkWidgetAuxInfo *aux_info;
|
||||
|
||||
g_return_if_fail (GTK_IS_WINDOW (window));
|
||||
|
||||
aux_info = _gtk_widget_get_aux_info (GTK_WIDGET (window), TRUE);
|
||||
|
||||
aux_info->x_set = aux_info->y_set = TRUE;
|
||||
aux_info->x = root_x;
|
||||
aux_info->y = root_y;
|
||||
|
||||
gtk_window_reposition (window, root_x, root_y);
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_window_get_location:
|
||||
* @window: a #GtkWindow
|
||||
* @root_x: return location for X coordinate of gravity-determined reference point
|
||||
* @root_y: return location for Y coordinate of gravity-determined reference point
|
||||
*
|
||||
* Attempts to obtain the current position of the reference point, as
|
||||
* set by gtk_window_set_position(). This computation is accurate when
|
||||
* the reference point is a corner of the window itself (as with
|
||||
* #GDK_GRAVITY_STATIC), but may not be accurate when the reference
|
||||
* point is a position on the titlebar or window border, because the X
|
||||
* Window System does not provide a reliable way of obtaining this
|
||||
* information. GTK+ will do a "best guess" which may not be fully
|
||||
* accurate with some window managers, but will probably be
|
||||
* reasonable.
|
||||
*
|
||||
**/
|
||||
void
|
||||
gtk_window_get_location (GtkWindow *window,
|
||||
gint *root_x,
|
||||
gint *root_y)
|
||||
{
|
||||
GdkRectangle frame_extents;
|
||||
GtkWidget *widget;
|
||||
GtkWidgetAuxInfo *aux_info;
|
||||
|
||||
g_return_if_fail (GTK_IS_WINDOW (window));
|
||||
|
||||
widget = GTK_WIDGET (window);
|
||||
|
||||
if (GTK_WIDGET_REALIZED (window))
|
||||
{
|
||||
if (window->gravity == GDK_GRAVITY_STATIC)
|
||||
{
|
||||
gdk_window_get_origin (widget->window, root_x, root_y);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
gint x, y;
|
||||
|
||||
gdk_window_get_frame_extents (widget->window, &frame_extents);
|
||||
|
||||
x = frame_extents.x;
|
||||
y = frame_extents.y;
|
||||
|
||||
switch (window->gravity)
|
||||
{
|
||||
case GDK_GRAVITY_NORTH:
|
||||
case GDK_GRAVITY_CENTER:
|
||||
case GDK_GRAVITY_SOUTH:
|
||||
x += frame_extents.width / 2;
|
||||
break;
|
||||
case GDK_GRAVITY_SOUTH_EAST:
|
||||
case GDK_GRAVITY_EAST:
|
||||
case GDK_GRAVITY_NORTH_EAST:
|
||||
x += frame_extents.width;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (window->gravity)
|
||||
{
|
||||
case GDK_GRAVITY_WEST:
|
||||
case GDK_GRAVITY_CENTER:
|
||||
case GDK_GRAVITY_EAST:
|
||||
y += frame_extents.height / 2;
|
||||
break;
|
||||
case GDK_GRAVITY_SOUTH_WEST:
|
||||
case GDK_GRAVITY_SOUTH:
|
||||
case GDK_GRAVITY_SOUTH_EAST:
|
||||
y += frame_extents.height;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (root_x)
|
||||
*root_x = x;
|
||||
if (root_y)
|
||||
*root_y = y;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We really don't have a location yet, so we make up some stuff,
|
||||
* using the uposition if it's been set.
|
||||
*/
|
||||
if (root_x)
|
||||
*root_x = 0;
|
||||
|
||||
if (root_y)
|
||||
*root_y = 0;
|
||||
|
||||
aux_info = _gtk_widget_get_aux_info (widget, FALSE);
|
||||
if (aux_info && aux_info->x_set && aux_info->y_set)
|
||||
{
|
||||
*root_x = aux_info->x;
|
||||
*root_y = aux_info->y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_window_set_gravity:
|
||||
* @window: a #GtkWindow
|
||||
@ -3713,7 +3423,7 @@ gtk_window_get_location (GtkWindow *window,
|
||||
*
|
||||
* Window gravity defines the "reference point" to be used when
|
||||
* positioning or resizing a window. Calls to
|
||||
* gtk_window_set_position() will position a different point on the
|
||||
* gtk_widget_set_uposition() will position a different point on the
|
||||
* window depending on the window gravity. When the window changes size
|
||||
* the reference point determined by the window's gravity will stay in
|
||||
* a fixed location.
|
||||
@ -3728,11 +3438,11 @@ gtk_window_get_location (GtkWindow *window,
|
||||
* itself.
|
||||
*
|
||||
* The default window gravity is #GDK_GRAVITY_NORTH_WEST.
|
||||
*
|
||||
*
|
||||
**/
|
||||
void
|
||||
gtk_window_set_gravity (GtkWindow *window,
|
||||
GdkGravity gravity)
|
||||
GdkGravity gravity)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_WINDOW (window));
|
||||
|
||||
@ -3740,9 +3450,7 @@ gtk_window_set_gravity (GtkWindow *window,
|
||||
{
|
||||
window->gravity = gravity;
|
||||
|
||||
/* This is sort of odd, but it keeps the hints recomputation
|
||||
* in one place. Otherwise we're likely to mess up the
|
||||
* recording of the last hints, etc.
|
||||
/* gtk_window_move_resize() will adapt gravity
|
||||
*/
|
||||
gtk_widget_queue_resize (GTK_WIDGET (window));
|
||||
}
|
||||
@ -3751,9 +3459,9 @@ gtk_window_set_gravity (GtkWindow *window,
|
||||
/**
|
||||
* gtk_window_get_gravity:
|
||||
* @window: a #GtkWindow
|
||||
*
|
||||
*
|
||||
* Gets the value set by gtk_window_set_gravity().
|
||||
*
|
||||
*
|
||||
* Return value: window gravity
|
||||
**/
|
||||
GdkGravity
|
||||
@ -3807,6 +3515,7 @@ gtk_window_begin_resize_drag (GtkWindow *window,
|
||||
timestamp);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* gtk_window_begin_move_drag:
|
||||
* @button: mouse button that initiated the drag
|
||||
|
@ -47,8 +47,9 @@ extern "C" {
|
||||
#define GTK_WINDOW_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_WINDOW, GtkWindowClass))
|
||||
|
||||
|
||||
typedef struct _GtkWindow GtkWindow;
|
||||
typedef struct _GtkWindowClass GtkWindowClass;
|
||||
typedef struct _GtkWindow GtkWindow;
|
||||
typedef struct _GtkWindowClass GtkWindowClass;
|
||||
typedef struct _GtkWindowGeometryInfo GtkWindowGeometryInfo;
|
||||
|
||||
struct _GtkWindow
|
||||
{
|
||||
@ -58,15 +59,16 @@ struct _GtkWindow
|
||||
gchar *wmclass_name;
|
||||
gchar *wmclass_class;
|
||||
gchar *wm_role;
|
||||
GtkWindowType type;
|
||||
|
||||
GdkWindow *frame;
|
||||
|
||||
GtkWidget *focus_widget;
|
||||
GtkWidget *default_widget;
|
||||
GtkWindow *transient_parent;
|
||||
GtkWindowGeometryInfo *geometry_info;
|
||||
GdkWindow *frame;
|
||||
|
||||
gushort resize_count;
|
||||
guint16 resize_count;
|
||||
|
||||
GtkWindowType type : 4;
|
||||
guint has_user_ref_count : 1;
|
||||
guint allow_shrink : 1;
|
||||
guint allow_grow : 1;
|
||||
@ -90,11 +92,9 @@ struct _GtkWindow
|
||||
guint iconify_initially : 1;
|
||||
guint stick_initially : 1;
|
||||
guint maximize_initially : 1;
|
||||
|
||||
guint decorated : 1;
|
||||
|
||||
GdkWindowTypeHint type_hint : 3;
|
||||
|
||||
GdkGravity gravity : 5;
|
||||
|
||||
guint frame_left;
|
||||
@ -145,26 +145,10 @@ void gtk_window_set_decorations_hint (GtkWindow *window,
|
||||
void gtk_window_set_functions_hint (GtkWindow *window,
|
||||
GdkWMFunction functions);
|
||||
|
||||
|
||||
void gtk_window_set_resizeable (GtkWindow *window,
|
||||
gboolean setting);
|
||||
gboolean resizeable);
|
||||
gboolean gtk_window_get_resizeable (GtkWindow *window);
|
||||
|
||||
|
||||
void gtk_window_set_size (GtkWindow *window,
|
||||
gint width,
|
||||
gint height);
|
||||
void gtk_window_get_size (GtkWindow *window,
|
||||
gint *width,
|
||||
gint *height);
|
||||
|
||||
void gtk_window_set_location (GtkWindow *window,
|
||||
gint root_x,
|
||||
gint root_y);
|
||||
void gtk_window_get_location (GtkWindow *window,
|
||||
gint *root_x,
|
||||
gint *root_y);
|
||||
|
||||
void gtk_window_set_gravity (GtkWindow *window,
|
||||
GdkGravity gravity);
|
||||
GdkGravity gtk_window_get_gravity (GtkWindow *window);
|
||||
|
@ -8252,7 +8252,8 @@ configure_event_callback (GtkWidget *widget,
|
||||
gchar *msg;
|
||||
gint x, y;
|
||||
|
||||
gtk_window_get_location (GTK_WINDOW (widget), &x, &y);
|
||||
x = widget->allocation.x;
|
||||
y = widget->allocation.y;
|
||||
|
||||
msg = g_strdup_printf ("event: %d,%d %d x %d\n"
|
||||
"location: %d, %d",
|
||||
@ -8289,8 +8290,7 @@ set_size_callback (GtkWidget *widget,
|
||||
|
||||
get_ints (data, &w, &h);
|
||||
|
||||
gtk_window_set_size (g_object_get_data (data, "target"),
|
||||
w, h);
|
||||
gtk_window_set_default_size (GTK_WINDOW (g_object_get_data (data, "target")), w, h);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -8325,8 +8325,7 @@ set_location_callback (GtkWidget *widget,
|
||||
|
||||
get_ints (data, &x, &y);
|
||||
|
||||
gtk_window_set_location (g_object_get_data (data, "target"),
|
||||
x, y);
|
||||
gtk_widget_set_uposition (g_object_get_data (data, "target"), x, y);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -8363,7 +8362,7 @@ static void
|
||||
gravity_selected (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
gtk_window_set_gravity (G_OBJECT (g_object_get_data (data, "target")),
|
||||
gtk_window_set_gravity (GTK_WINDOW (g_object_get_data (data, "target")),
|
||||
gtk_option_menu_get_history (GTK_OPTION_MENU (widget)) + GDK_GRAVITY_NORTH_WEST);
|
||||
}
|
||||
|
||||
@ -8486,7 +8485,7 @@ window_controls (GtkWidget *window)
|
||||
while (i < 10)
|
||||
{
|
||||
GtkWidget *mi;
|
||||
static gchar *names[10] = {
|
||||
static gchar *names[] = {
|
||||
"GDK_GRAVITY_NORTH_WEST",
|
||||
"GDK_GRAVITY_NORTH",
|
||||
"GDK_GRAVITY_NORTH_EAST",
|
||||
|
@ -8252,7 +8252,8 @@ configure_event_callback (GtkWidget *widget,
|
||||
gchar *msg;
|
||||
gint x, y;
|
||||
|
||||
gtk_window_get_location (GTK_WINDOW (widget), &x, &y);
|
||||
x = widget->allocation.x;
|
||||
y = widget->allocation.y;
|
||||
|
||||
msg = g_strdup_printf ("event: %d,%d %d x %d\n"
|
||||
"location: %d, %d",
|
||||
@ -8289,8 +8290,7 @@ set_size_callback (GtkWidget *widget,
|
||||
|
||||
get_ints (data, &w, &h);
|
||||
|
||||
gtk_window_set_size (g_object_get_data (data, "target"),
|
||||
w, h);
|
||||
gtk_window_set_default_size (GTK_WINDOW (g_object_get_data (data, "target")), w, h);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -8325,8 +8325,7 @@ set_location_callback (GtkWidget *widget,
|
||||
|
||||
get_ints (data, &x, &y);
|
||||
|
||||
gtk_window_set_location (g_object_get_data (data, "target"),
|
||||
x, y);
|
||||
gtk_widget_set_uposition (g_object_get_data (data, "target"), x, y);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -8363,7 +8362,7 @@ static void
|
||||
gravity_selected (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
gtk_window_set_gravity (G_OBJECT (g_object_get_data (data, "target")),
|
||||
gtk_window_set_gravity (GTK_WINDOW (g_object_get_data (data, "target")),
|
||||
gtk_option_menu_get_history (GTK_OPTION_MENU (widget)) + GDK_GRAVITY_NORTH_WEST);
|
||||
}
|
||||
|
||||
@ -8486,7 +8485,7 @@ window_controls (GtkWidget *window)
|
||||
while (i < 10)
|
||||
{
|
||||
GtkWidget *mi;
|
||||
static gchar *names[10] = {
|
||||
static gchar *names[] = {
|
||||
"GDK_GRAVITY_NORTH_WEST",
|
||||
"GDK_GRAVITY_NORTH",
|
||||
"GDK_GRAVITY_NORTH_EAST",
|
||||
|
Loading…
Reference in New Issue
Block a user