static void
nautilus_navigation_window_save_geometry (NautilusNavigationWindow *window)
{
	char *geometry_string;
	gboolean is_maximized;

	g_assert (NAUTILUS_IS_WINDOW (window));

	if (gtk_widget_get_window (GTK_WIDGET (window))) {
		geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window));
		is_maximized = gdk_window_get_state (gtk_widget_get_window (GTK_WIDGET (window)))
				& GDK_WINDOW_STATE_MAXIMIZED;
		
		if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY) &&
		    !is_maximized) {
			eel_preferences_set
				(NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_SAVED_GEOMETRY, 
				 geometry_string);
		}
		g_free (geometry_string);

		if (eel_preferences_key_is_writable (NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED)) {
			eel_preferences_set_boolean
				(NAUTILUS_PREFERENCES_NAVIGATION_WINDOW_MAXIMIZED, 
				 is_maximized);
		}
	}
}
예제 #2
0
static void
window_save_state (GiggleWindow *window)
{
	GiggleWindowPriv *priv;
	char              geometry[25];
	gboolean          maximized;

	priv = GET_PRIV (window);

	g_snprintf (geometry, sizeof (geometry), "%dx%d+%d+%d",
		    priv->width, priv->height, priv->x, priv->y);

	maximized = gdk_window_get_state (GTK_WIDGET (window)->window) & GDK_WINDOW_STATE_MAXIMIZED;

	giggle_git_config_set_field (priv->configuration,
				     GIGGLE_GIT_CONFIG_FIELD_MAIN_WINDOW_GEOMETRY,
				     geometry);

	giggle_git_config_set_boolean_field (priv->configuration,
					     GIGGLE_GIT_CONFIG_FIELD_MAIN_WINDOW_MAXIMIZED,
					     maximized);

	giggle_git_config_commit (priv->configuration,
				  window_configuration_committed_cb,
				  window);
}
예제 #3
0
static gboolean
gdk_monitor_has_fullscreen_window (GdkMonitor *monitor)
{
    GdkScreen *screen = gdk_display_get_default_screen (monitor->display);
    GList *toplevels, *l;
    GdkWindow *window;
    gboolean has_fullscreen;

    toplevels = gdk_screen_get_toplevel_windows (screen);

    has_fullscreen = FALSE;
    for (l = toplevels; l; l = l->next)
    {
        window = l->data;

        if ((gdk_window_get_state (window) & GDK_WINDOW_STATE_FULLSCREEN) == 0)
            continue;

        if (gdk_window_get_fullscreen_mode (window) == GDK_FULLSCREEN_ON_ALL_MONITORS ||
                gdk_display_get_monitor_at_window (monitor->display, window) == monitor)
        {
            has_fullscreen = TRUE;
            break;
        }
    }

    g_list_free (toplevels);

    return has_fullscreen;
}
예제 #4
0
bool wxTopLevelWindowGTK::IsMaximized() const
{
    GdkWindow* window = NULL;
    if (m_widget)
        window = gtk_widget_get_window(m_widget);
    return window && (gdk_window_get_state(window) & GDK_WINDOW_STATE_MAXIMIZED);
}
예제 #5
0
static void blist_create_cb(PurpleBuddyList *purple_blist, void *data) {
	purple_debug_info(WINPREFS_PLUGIN_ID, "buddy list created\n");

	blist = PIDGIN_BLIST(purple_blist)->window;

	if(purple_prefs_get_bool(PREF_DBLIST_DOCKABLE)) {
		blist_set_dockable(TRUE);
		if(purple_prefs_get_bool(PREF_DBLIST_DOCKED)) {
			blist_ab->undocked_height = purple_prefs_get_int(PREF_DBLIST_HEIGHT);
			if(!(gdk_window_get_state(gtk_widget_get_window(blist))
					& GDK_WINDOW_STATE_WITHDRAWN)) {
				gtk_appbar_dock(blist_ab,
					purple_prefs_get_int(PREF_DBLIST_SIDE));
				if(purple_prefs_get_int(PREF_BLIST_ON_TOP)
						== BLIST_TOP_DOCKED)
					blist_set_ontop(TRUE);
			} else {
				g_idle_add(listen_for_blist_visible_cb, NULL);
			}
		}
	}

	if(purple_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_ALWAYS)
		blist_set_ontop(TRUE);

}
/* On configure event. */
G_MODULE_EXPORT gboolean
on_configure       (GtkWidget      *widget,
                    GdkEventExpose *event,
                    gpointer        user_data)
{
  AnnotateData *data = (AnnotateData *) user_data;

  if (data->debug)
    {
      g_printerr("DEBUG: Annotation window get configure event (%d,%d)\n",
                 gtk_widget_get_allocated_width (widget),
                 gtk_widget_get_allocated_height (widget));
    }
	
  GdkWindowState state = gdk_window_get_state (gtk_widget_get_window (widget));
  gint is_fullscreen = state & GDK_WINDOW_STATE_FULLSCREEN;

  if (!is_fullscreen)
    {
      return FALSE;
    }

  initialize_annotation_cairo_context (data);
  
  if (!data->is_grabbed)
    {
      return FALSE;
    }

  /* Postcondition; data->annotation_cairo_context is not NULL. */
  return TRUE;
}
예제 #7
0
G_MODULE_EXPORT gboolean
preview_state_cb(
    GtkWidget *widget,
    GdkEvent  *event,
    signal_user_data_t *ud)
{
    GdkEventType type = ghb_event_get_event_type(event);
    if (type == GDK_WINDOW_STATE)
    {
        // Look for transition to iconified state.
        // Toggle "Show Preview" button when iconified.
        // I only do this because there seems to be no
        // way to reliably disable the iconfy button without
        // also disabling the maximize button.
#if GTK_CHECK_VERSION(3, 90, 0)
        GdkWindow      * window = gdk_event_get_window(event);
        GdkWindowState   state  = gdk_window_get_state(window);
        if (state & GDK_WINDOW_STATE_ICONIFIED)
#else
        GdkEventWindowState * wse = (GdkEventWindowState*)event;
        if (wse->changed_mask & wse->new_window_state &
            GDK_WINDOW_STATE_ICONIFIED)
#endif
        {
            live_preview_stop(ud);
            GtkWidget *widget = GHB_WIDGET(ud->builder, "show_preview");
            gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(widget), FALSE);
        }
    }
    return FALSE;
}
예제 #8
0
JNIEXPORT jint JNICALL
Java_org_gnome_gdk_GdkWindow_gdk_1window_1get_1state
(
	JNIEnv* env,
	jclass cls,
	jlong _self
)
{
	GdkWindowState result;
	jint _result;
	GdkWindow* self;

	// convert parameter self
	self = (GdkWindow*) _self;

	// call function
	result = gdk_window_get_state(self);

	// cleanup parameter self

	// translate return value to JNI type
	_result = (jint) result;

	// and finally
	return _result;
}
예제 #9
0
파일: gailwindow.c 프로젝트: Aridna/gtk2
static AtkStateSet*
gail_window_ref_state_set (AtkObject *accessible)
{
  AtkStateSet *state_set;
  GtkWidget *widget;
  GtkWindow *window;
  GdkWindowState state;

  state_set = ATK_OBJECT_CLASS (gail_window_parent_class)->ref_state_set (accessible);
  widget = GTK_ACCESSIBLE (accessible)->widget;
 
  if (widget == NULL)
    return state_set;

  window = GTK_WINDOW (widget);

  if (window->has_focus)
    atk_state_set_add_state (state_set, ATK_STATE_ACTIVE);

  if (widget->window)
    {
      state = gdk_window_get_state (widget->window);
      if (state & GDK_WINDOW_STATE_ICONIFIED)
        atk_state_set_add_state (state_set, ATK_STATE_ICONIFIED);
    } 
  if (gtk_window_get_modal (window))
    atk_state_set_add_state (state_set, ATK_STATE_MODAL);

  if (gtk_window_get_resizable (window))
    atk_state_set_add_state (state_set, ATK_STATE_RESIZABLE);
 
  return state_set;
}
예제 #10
0
static gboolean
geometry_store_cb (gpointer user_data)
{
  GdkWindowState window_state;
  GdkWindow *gdk_window;
  GSettings *ui_settings;
  gboolean maximized;
  gint x, y, w, h;

  if (!gtk_widget_get_visible (GTK_WIDGET (user_data))){
    return FALSE;
  }

  /* Get window metrics and status */
  gtk_window_get_position (GTK_WINDOW (user_data), &x, &y);
  gtk_window_get_size (GTK_WINDOW (user_data), &w, &h);

  gdk_window = gtk_widget_get_window (GTK_WIDGET (user_data));
  window_state = gdk_window_get_state (gdk_window);
  maximized = (window_state & GDK_WINDOW_STATE_MAXIMIZED) != 0;

  /* Save values */
  ui_settings = g_object_get_data (G_OBJECT (user_data), GEOMETRY_DATA_NAME);
  g_settings_set_int (ui_settings, TWITUX_UI_WINDOW_X_POS, x);
  g_settings_set_int (ui_settings, TWITUX_UI_WINDOW_Y_POS, y);
  g_settings_set_int (ui_settings, TWITUX_UI_WINDOW_WIDTH, w);
  g_settings_set_int (ui_settings, TWITUX_UI_WINDOW_HEIGHT, h);
  g_settings_set_boolean (ui_settings, TWITUX_UI_WINDOW_MAXIMISED, maximized);

  save_queue_id = 0;

  return FALSE;
}
예제 #11
0
파일: toplevel.cpp 프로젝트: EdgarTx/wx
bool wxTopLevelWindowGTK::IsMaximized() const
{
    if(!m_widget->window)
        return false;

    return gdk_window_get_state(m_widget->window) & GDK_WINDOW_STATE_MAXIMIZED;
}
예제 #12
0
static gboolean
photos_main_window_window_state_event (GtkWidget *widget, GdkEventWindowState *event)
{
  PhotosMainWindow *self = PHOTOS_MAIN_WINDOW (widget);
  GdkWindow *window;
  GdkWindowState state;
  gboolean maximized;
  gboolean ret_val;

  ret_val = GTK_WIDGET_CLASS (photos_main_window_parent_class)->window_state_event (widget, event);

  window = gtk_widget_get_window (widget);
  state = gdk_window_get_state (window);

  if (state & GDK_WINDOW_STATE_FULLSCREEN)
    {
      photos_mode_controller_set_fullscreen (self->mode_cntrlr, TRUE);
      return ret_val;
    }

  photos_mode_controller_set_fullscreen (self->mode_cntrlr, FALSE);

  maximized = (state & GDK_WINDOW_STATE_MAXIMIZED);
  g_settings_set_boolean (self->settings, "window-maximized", maximized);

  return ret_val;
}
예제 #13
0
void
liferea_shell_toggle_visibility (void)
{
	GtkWidget *mainwindow = GTK_WIDGET (shell->priv->window);
	
	if (gdk_window_get_state (gtk_widget_get_window (mainwindow)) & GDK_WINDOW_STATE_ICONIFIED) {
		/* The window is either iconified, or on another workspace */
		/* Raise it in one click */
		if (gtk_widget_get_visible (mainwindow)) {
			liferea_shell_save_position ();
			gtk_widget_hide (mainwindow);
		}
		liferea_shell_restore_position ();
		/* Note: Without deiconify() desktop moving doesn't work in 
		   GNOME+metacity. The window would be moved correctly by 
		   present() but not become visible. */
		gtk_window_deiconify (GTK_WINDOW (mainwindow));
		gtk_window_present (GTK_WINDOW (mainwindow));
	}
	else if (!gtk_widget_get_visible (mainwindow)) {
		/* The window is neither iconified nor on another workspace, but is not visible */
		liferea_shell_restore_position ();
		gtk_window_present (shell->priv->window);
	} else {
		liferea_shell_save_position ();
		gtk_widget_hide (mainwindow);
	}
}
예제 #14
0
static void
caja_navigation_window_save_geometry (CajaNavigationWindow *window)
{
    char *geometry_string;
    gboolean is_maximized;

    g_assert (CAJA_IS_WINDOW (window));

    if (gtk_widget_get_window (GTK_WIDGET (window)))
    {
        geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (window));
        is_maximized = gdk_window_get_state (gtk_widget_get_window (GTK_WIDGET (window)))
                       & GDK_WINDOW_STATE_MAXIMIZED;

        if (!is_maximized)
        {
            g_settings_set_string (caja_window_state,
                                   CAJA_WINDOW_STATE_GEOMETRY,
                                   geometry_string);
        }
        g_free (geometry_string);

        g_settings_set_boolean (caja_window_state,
                                CAJA_WINDOW_STATE_MAXIMIZED,
                                is_maximized);
    }
}
예제 #15
0
char video_canvas_can_resize(video_canvas_t *canvas)
{
    GtkWidget *t = get_active_toplevel();
    if (t) {
        return !(gdk_window_get_state(gtk_widget_get_window(t)) & GDK_WINDOW_STATE_MAXIMIZED);
    }
    return 0;
}
예제 #16
0
void cw_window_set_child_window(GtkWidget* widget, CWWindowPrivate* priv)
{
	GdkWindowState state = gdk_window_get_state(
			gtk_widget_get_window(GTK_WIDGET(widget)));
	gint window_mode = cw_thumbnails_window_get_mode(priv->thumbnails_window);
	gboolean isfullscreen = state & GDK_WINDOW_STATE_FULLSCREEN;

	cw_window_set_child_window_size(widget, priv, window_mode, isfullscreen);
}
예제 #17
0
파일: window.c 프로젝트: tomaszg7/geeqie
gboolean window_maximized(GtkWidget *window)
{
	GdkWindowState state;

	if (!window || !gtk_widget_get_window(window)) return FALSE;

	state = gdk_window_get_state(gtk_widget_get_window(window));
	return !!(state & GDK_WINDOW_STATE_MAXIMIZED);
}
예제 #18
0
int dt_control_write_config(dt_control_t *c)
{
  // TODO: move to gtk.c
  GtkWidget *widget = dt_ui_main_window(darktable.gui->ui);
  GtkAllocation allocation;
  gtk_widget_get_allocation(widget, &allocation);
  gint x, y;
  gtk_window_get_position(GTK_WINDOW(widget), &x, &y);
  dt_conf_set_int("ui_last/window_x", x);
  dt_conf_set_int("ui_last/window_y", y);
  dt_conf_set_int("ui_last/window_w", allocation.width);
  dt_conf_set_int("ui_last/window_h", allocation.height);
  dt_conf_set_bool("ui_last/maximized",
                   (gdk_window_get_state(gtk_widget_get_window(widget)) & GDK_WINDOW_STATE_MAXIMIZED));
  dt_conf_set_bool("ui_last/fullscreen",
                   (gdk_window_get_state(gtk_widget_get_window(widget)) & GDK_WINDOW_STATE_FULLSCREEN));

  return 0;
}
예제 #19
0
파일: menu.c 프로젝트: DeadNumbers/gosm
/****************************************************************************************************
* the events of the main window
* used to keep the "fullscreen"-checkbox up-to-date
****************************************************************************************************/
static gboolean window_event_cb(GtkWidget *window, GdkEventWindowState *event, gpointer menubar_p)
{
	Menu * menubar = GOSM_MENU(menubar_p);
	if ((event -> changed_mask & GDK_WINDOW_STATE_FULLSCREEN) != 0){
		gboolean fullscreened = 
			(gdk_window_get_state(GTK_WIDGET(menubar -> main_window) -> window)
				& GDK_WINDOW_STATE_FULLSCREEN) != 0;
		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menubar -> menu_view_fullscreen), fullscreened);
	}
}
예제 #20
0
static void
toggle_fullscreen(GtkWidget *widget){
  GdkWindowState state = gdk_window_get_state(GDK_WINDOW(widget->window));
  if (state == GDK_WINDOW_STATE_FULLSCREEN){
    gtk_window_unfullscreen(GTK_WINDOW(widget));
  }
  else{
    gtk_window_fullscreen(GTK_WINDOW(widget));
  }
}
예제 #21
0
void
liferea_shell_present (void)
{
	GtkWidget *mainwindow = GTK_WIDGET (shell->priv->window);
	
	if ((gdk_window_get_state (gtk_widget_get_window (mainwindow)) & GDK_WINDOW_STATE_ICONIFIED) || !gtk_widget_get_visible (mainwindow))
		liferea_shell_restore_position ();

	gtk_window_present (shell->priv->window);
}
예제 #22
0
파일: gui.c 프로젝트: zaenal1234/gtkhash
bool gui_is_maximised(void)
{
	GdkWindow *window = gtk_widget_get_window(GTK_WIDGET(gui.window));

	if (!window)
		return false;

	GdkWindowState state = gdk_window_get_state(window);

	return (state & GDK_WINDOW_STATE_MAXIMIZED);
}
예제 #23
0
void
dates_window_state_cb (GtkWidget *widget, GdkEventVisibility *event,
		       DatesData *d)
{
    GtkWidget *header = d->header_eventbox;
    if (gdk_window_get_state (widget->window) &
	GDK_WINDOW_STATE_FULLSCREEN) {
	gtk_widget_show (header);
    } else {
	gtk_widget_hide (header);
    }
}
예제 #24
0
파일: search.c 프로젝트: proudzhu/deadbeef
static DdbListview *
playlist_visible () {
    if (searchwin) {
        GdkWindow *window = gtk_widget_get_window(searchwin);
        if (window) {
            if (!(gdk_window_get_state(window) & GDK_WINDOW_STATE_ICONIFIED) && gtk_widget_get_visible(searchwin)) {
                return DDB_LISTVIEW(lookup_widget(searchwin, "searchlist"));
            }
        }
    }
    return NULL;
}
예제 #25
0
void MainFrame::SaveWindowInfo (void)
{
	// Delete all the current window states from the registry
	GlobalRegistry().deleteXPath(RKEY_WINDOW_STATE);

	// Tell the position tracker to save the information
	_windowPosition.saveToPath(RKEY_WINDOW_STATE);

	GdkWindow* window = GTK_WIDGET(m_window)->window;
	if (window != NULL)
		GlobalRegistry().setAttribute(RKEY_WINDOW_STATE, "state", string::toString(gdk_window_get_state(window)));
}
예제 #26
0
static void remmina_main_save_size(RemminaMain *remminamain)
{
	if ((gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(remminamain))) & GDK_WINDOW_STATE_MAXIMIZED) == 0)
	{
		gtk_window_get_size(GTK_WINDOW(remminamain), &remmina_pref.main_width, &remmina_pref.main_height);
		remmina_pref.main_maximize = FALSE;
	}
	else
	{
		remmina_pref.main_maximize = TRUE;
	}
}
예제 #27
0
/* Performs a scheduled dimensions-to-prefs sync for a window binding */
static gboolean
window_binding_perform_scheduled_sync (WindowBinding *binding)
{
	if (binding->bind_size) {
		gint width, height;
		gchar *key;
		GdkWindowState state;
		GdkWindow *window;

		window = gtk_widget_get_window (GTK_WIDGET (binding->window));
		state = gdk_window_get_state (window);

		if (state & GDK_WINDOW_STATE_MAXIMIZED) {
                        key = g_strconcat (binding->key_prefix, "_maximized", NULL);
			gconf_client_set_bool (bridge->client, key, TRUE, NULL);
			g_free (key);
		} else {
			gtk_window_get_size (binding->window, &width, &height);

                        key = g_strconcat (binding->key_prefix, "_width", NULL);
			gconf_client_set_int (bridge->client, key, width, NULL);
			g_free (key);

                        key = g_strconcat (binding->key_prefix, "_height", NULL);
			gconf_client_set_int (bridge->client, key, height, NULL);
			g_free (key);

                        key = g_strconcat (binding->key_prefix, "_maximized", NULL);
			gconf_client_set_bool (bridge->client, key, FALSE, NULL);
			g_free (key);
		}
	}

	if (binding->bind_pos) {
		gint x, y;
		gchar *key;

		gtk_window_get_position (binding->window, &x, &y);

                key = g_strconcat (binding->key_prefix, "_x", NULL);
		gconf_client_set_int (bridge->client, key, x, NULL);
		g_free (key);

                key = g_strconcat (binding->key_prefix, "_y", NULL);
		gconf_client_set_int (bridge->client, key, y, NULL);
		g_free (key);
	}

	binding->sync_timeout_id = 0;

	return FALSE;
}
예제 #28
0
static gboolean
window_get_is_on_current_workspace (GtkWindow *window)
{
	GdkWindow *gdk_window;

	gdk_window = GTK_WIDGET (window)->window;
	if (gdk_window) {
		return !(gdk_window_get_state (gdk_window) &
			 GDK_WINDOW_STATE_ICONIFIED);
	} else {
		return FALSE;
	}
}
예제 #29
0
static gboolean
window_configure_event (GtkWidget         *widget,
			GdkEventConfigure *event)
{
	GiggleWindowPriv *priv = GET_PRIV (widget);

	if (!(gdk_window_get_state (widget->window) & GDK_WINDOW_STATE_MAXIMIZED)) {
		gtk_window_get_size (GTK_WINDOW (widget), &priv->width, &priv->height);
		gtk_window_get_position (GTK_WINDOW (widget), &priv->x, &priv->y);
	}

	return GTK_WIDGET_CLASS (giggle_window_parent_class)->configure_event (widget, event);
}
예제 #30
0
/**
* win: The window that changed state
* event: The event that triggered it
* data: ignored
*
* Depending on the state it will grab the keyboard or ungrab it.
*
* Returns FALSE
**/
static gboolean
window_state_changed (GtkWidget *win, GdkEventWindowState *event, gpointer data)
{
	GdkWindowState state = gdk_window_get_state (gtk_widget_get_window (win));

	if (state & GDK_WINDOW_STATE_WITHDRAWN ||
	    state & GDK_WINDOW_STATE_ICONIFIED ||
	    state & GDK_WINDOW_STATE_FULLSCREEN ||
	    state & GDK_WINDOW_STATE_MAXIMIZED)
		ungrab_keyboard (win, (GdkEvent*)event, data);
	else
		grab_keyboard (win, (GdkEvent*)event, data);

	return FALSE;
}