re: re: How do I use the fullscreen in a Gtkmm app?



Thanks so much, Carlos.  This was exactly what I needed.

In Gtkmm:
Gtk::Window has the methods fullscreen and unfullscreen.  Perfect.

Rather than using a bool of my own to track the state, I did what the docs
on fullscreen() suggested and set a function to be signaled when the windows
state changed.

LXMainWindow::LXMainWindow()
{
<snip>
    m_bFullScreen = false;
    signal_window_state_event().connect(sigc::mem_fun(*this,
&LXMainWindow::OnWindowStateEvent));
}

void LXMainWindow::ToggleFullScreen()
{ // Toggle fullscreen mode off and on.
    if (m_bFullScreen))
        unfullscreen();
    else
        fullscreen();
}

bool LXMainWindow::OnWindowStateEvent(
    GdkEventWindowState* pEvent) // [in] from system -- has flags of current
state
{
    m_bFullScreen = (pEvent->new_window_state &
GDK_WINDOW_STATE_FULLSCREEN);

    return true; // we want to keep getting this signal
}

Thanks again.  Happy coding!

Garth's KidStuff wrote:
Hi All,

   I notice that quite a few apps (firefox, gimp, terminal, etc. -- but
not
   gedit, huh?) have the option to toggle fullscreen mode in their view
menu
   using the F11 key.  How would I implement this in my Gtkmm app?

Connect the key_press_event to your top window, ot to a drawing area,
and then prepare a callback along these lines (sorry, C code):

#include <gdk/gdkkeysyms.h>

void function_handle_key_press (GtkWidget *widget,
GdkEventKey *event, void *data)
{
GtkWidget *window = (GtkWindow *) data; /* this is just a simple example
*/
static int fullscreen = FALSE;

switch (event->keyval)
{
 case GDK_F11:
 if (fullscreen == FALSE)
   {
   gdk_window_raise (window->window);
   hide decorations;
   gtk_window_fullscreen (GTK_WINDOW (window));
   fullscreen = TRUE;
   }
 else
   {
   show decorations;
   gtk_window_unfullscreen (GTK_WINDOW (window));
   fullscreen = FALSE;
   }
 break;
 }

-- 
Garth Upshaw
Garth's KidStuff



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]