Как установить ширину плагина панели xfce

Я создаю один простой плагин для панели xfce, который отображает кнопку с надписью "Hello World", однако может отображаться только половина строки.

http://en.zimagez.com/miniature/debian807092016010347.png

Код прост:

#include <gtk/gtk.h>
#include <libxfce4panel/xfce-panel-plugin.h>

static void sample_construct(XfcePanelPlugin *plugin);
XFCE_PANEL_PLUGIN_REGISTER(sample_construct);

static void hello(GtkWidget *widget, gpointer data)
{
    g_print("Hello World\n");
}

static void sample_construct(XfcePanelPlugin *plugin)
{
    GtkWidget *button;

    button = gtk_button_new_with_label ("Hello World");
    g_signal_connect (button, "clicked", G_CALLBACK (hello), NULL);
    gtk_container_add (GTK_CONTAINER (plugin), button);
    gtk_widget_show (button);
}

собрать и установить с помощью этого скрипта:

#!/bin/bash

gcc -Wall -shared -o libsample.so -fPIC sample.c $(pkg-config --cflags --libs libxfce4panel-1.0) $(pkg-config --cflags --libs gtk+-2.0) || \
    { echo "Compiling failed!"; exit 10; }

cp libsample.so /usr/lib/xfce4/panel-plugins
cp sample.desktop /usr/share/xfce4/panel-plugins

ДРУГАЯ ИНФОРМАЦИЯ: xfce4.10, Debian 8 jessie.

1 ответ

Решение

Вы пропустили сигнал "изменился размер". Если вы добавите следующий код, он будет работать как положено:

static gboolean
sample_size_changed (XfcePanelPlugin *plugin,
                     gint             size,
                     void            *data)
{
  GtkOrientation orientation;

  orientation = xfce_panel_plugin_get_orientation (plugin);

  if (orientation == GTK_ORIENTATION_HORIZONTAL)
    gtk_widget_set_size_request (GTK_WIDGET (plugin), -1, size);
  else
    gtk_widget_set_size_request (GTK_WIDGET (plugin), size, -1);

  return TRUE;
}

static void sample_construct(XfcePanelPlugin *plugin)
{
...
    g_signal_connect (G_OBJECT (plugin), "size-changed",
                    G_CALLBACK (sample_size_changed), NULL);

    gtk_widget_show_all (button);
}

Обратите внимание, что вы также пропускаете важные обратные вызовы, такие как "свободные данные" и "измененная ориентация". Обратите внимание, что, поскольку Xfce 4.12, плагины GTK+ 3.0 также поддерживаются, вам нужно только установить X-XFCE-API=2.0 в файле.desktop.

Источник: xfce4-sample-plugin

Другие вопросы по тегам