Radiant:
misc... * fix of 2.24 related: minimize floating window = whole app minimizes + can't restore * fix of 2.24 related: glwidgets inside floating windows were not shown after hide/show of parent widgets * tex bro: menubar = toolbar
This commit is contained in:
@@ -28,8 +28,20 @@
|
||||
#include "warnings.h"
|
||||
#include "debugging/debugging.h"
|
||||
|
||||
inline void widget_set_visible( GtkWidget* widget, bool shown ){
|
||||
if ( shown ) {
|
||||
inline bool widget_is_visible( GtkWidget* widget ){
|
||||
return GTK_WIDGET_VISIBLE( widget ) != FALSE;
|
||||
}
|
||||
|
||||
inline void widget_set_visible( GtkWidget* widget, bool show ){
|
||||
if ( show ) {
|
||||
/* workaround for gtk 2.24 issue: not displayed glwidget after toggle */
|
||||
GtkWidget* glwidget = GTK_WIDGET( g_object_get_data( G_OBJECT( widget ), "glwidget" ) );
|
||||
if ( glwidget ){
|
||||
//if ( widget_is_visible( glwidget ) )
|
||||
//globalOutputStream() << "glwidget have been already visible :0\n"; /* is not hidden aswell, according to this */
|
||||
gtk_widget_hide( glwidget );
|
||||
gtk_widget_show( glwidget );
|
||||
}
|
||||
gtk_widget_show( widget );
|
||||
}
|
||||
else
|
||||
@@ -38,9 +50,6 @@ inline void widget_set_visible( GtkWidget* widget, bool shown ){
|
||||
}
|
||||
}
|
||||
|
||||
inline bool widget_is_visible( GtkWidget* widget ){
|
||||
return GTK_WIDGET_VISIBLE( widget ) != FALSE;
|
||||
}
|
||||
|
||||
inline void widget_toggle_visible( GtkWidget* widget ){
|
||||
widget_set_visible( widget, !widget_is_visible( widget ) );
|
||||
|
||||
@@ -29,12 +29,18 @@
|
||||
inline void CHECK_RESTORE( GtkWidget* w ){
|
||||
if ( gpointer_to_int( g_object_get_data( G_OBJECT( w ), "was_mapped" ) ) != 0 ) {
|
||||
gtk_widget_show( w );
|
||||
/* workaround for gtk 2.24 issue: not displayed glwidget after min/restore */
|
||||
GtkWidget* glwidget = GTK_WIDGET( g_object_get_data( G_OBJECT( w ), "glwidget" ) );
|
||||
if ( glwidget ){
|
||||
gtk_widget_hide( glwidget );
|
||||
gtk_widget_show( glwidget );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline void CHECK_MINIMIZE( GtkWidget* w ){
|
||||
g_object_set_data( G_OBJECT( w ), "was_mapped", gint_to_pointer( GTK_WIDGET_VISIBLE( w ) ) );
|
||||
gtk_widget_hide( w );
|
||||
//gtk_widget_hide( w ); //fix for gtk 2.24 + the whole scheme isn't needed with gtk 2.16, 2.24; they do it all alone
|
||||
}
|
||||
|
||||
static gboolean main_window_iconified( GtkWidget* widget, GdkEventWindowState* event, gpointer data ){
|
||||
@@ -90,6 +96,23 @@ GtkWindow* create_floating_window( const char* title, GtkWindow* parent ){
|
||||
connect_floating_window_destroy_present( window, parent );
|
||||
g_object_set_data( G_OBJECT( window ), "floating_handler", gint_to_pointer( connect_floating( parent, window ) ) );
|
||||
g_signal_connect( G_OBJECT( window ), "destroy", G_CALLBACK( destroy_disconnect_floating ), parent );
|
||||
/*
|
||||
//gtk_window_set_type_hint (window,GDK_WINDOW_TYPE_HINT_UTILITY);
|
||||
//gtk_window_set_type_hint (window,GDK_WINDOW_TYPE_HINT_DIALOG);
|
||||
gtk_window_set_keep_above ( window, TRUE );
|
||||
GtkWidget* widget = GTK_WIDGET( window );
|
||||
gtk_widget_realize ( widget );
|
||||
GdkWindow* gdk_window = gtk_widget_get_window( widget );
|
||||
//gdk_window_set_decorations ( gdk_window, (GdkWMDecoration)(GDK_DECOR_BORDER|GDK_DECOR_RESIZEH|GDK_DECOR_TITLE|GDK_DECOR_MENU|GDK_DECOR_MINIMIZE|GDK_DECOR_MAXIMIZE) );
|
||||
//gdk_window_set_functions ( gdk_window, (GdkWMFunction)( GDK_FUNC_RESIZE|GDK_FUNC_MOVE|GDK_FUNC_MINIMIZE|GDK_FUNC_MAXIMIZE|GDK_FUNC_CLOSE ) );
|
||||
//gdk_window_set_decorations ( gdk_window, (GdkWMDecoration)( GDK_DECOR_ALL ) );
|
||||
//gdk_window_set_functions ( gdk_window, (GdkWMFunction)( GDK_FUNC_ALL ) );
|
||||
//gdk_window_set_type_hint ( gdk_window, GDK_WINDOW_TYPE_HINT_DIALOG );
|
||||
//gdk_window_set_type_hint ( gdk_window, GDK_WINDOW_TYPE_HINT_UTILITY );
|
||||
//gdk_window_set_type_hint ( gdk_window, GDK_WINDOW_TYPE_HINT_NORMAL );
|
||||
gdk_window_set_skip_taskbar_hint ( gdk_window, TRUE );
|
||||
gdk_window_set_skip_pager_hint ( gdk_window, TRUE );
|
||||
*/
|
||||
}
|
||||
|
||||
return window;
|
||||
|
||||
Reference in New Issue
Block a user